Day 9
Day 9
https://www\.yuque\.com/guluguluwater\-qkq0t/fo3vhf/mbyqmeg3qizqlf4u
项目前置知识课研读
-
模块——声明自己的能力;明确自己依赖谁;对外暴露接口,隐藏实现细节 文件只关心依赖什么,但是依赖如何加载、什么时候执行不管
-
CommonJS:Node.js默认模块方案,适合后端服务环境 ES Module:前端工程核心,是浏览器官方标准,现代前端工程的基础
-
webpack:核心思想为一切皆模+提前打包 开发前把整个项目一次性打包成浏览器可以直接运行的文件 特点:稳定,通用,可控
启动 dev server ——>从入口文件开始——>递归分析所有依赖——>打包成 bundle——>浏览器加载 bundle
-
Vite:利用浏览器原生ES Module,把打包操作进行拆解 没有一次性扫描整个项目,没有完整打包,使用多少模块处理多少模块
-
dev和build本质在干什么: dev(开发态):马上看到效果,不追求最终体积、兼容。优先开发体验 build(生产态):让代码在用户机器上稳定、快、可部署
-
脚手架的作用: 选好了工程默认答案;搭建好了正确的目录结构;把容易出错的初始化工作封装避免出错
-
浏览器发送请求详解: JS 调用 Web API——>浏览器发起 HTTP 请求——>网络层传输(TCP / HTTPS)——>服务器处理并返回响应——>浏览器解析响应——>JS 拿到结果(Promise)
-
fetch的定位=>浏览器原生提供的最底层请求能力 (浏览器自带,返回Promise,不做额外处理)
-
axios的定位=>站在项目角度,对请求过程的二次抽象 默认提供自动JSON转换,同意请求/相应结构,更有好的错误处理,请求配置的集中管理
-
拦截器:在请求发出之前/响应到达之后,统一插一层逻辑 (把横切逻辑从业务代码中抽离) 请求拦截器:解决请求之前的统一问题,(eg:统一加鉴权信息,设置公共请求投,请求参数统一格式化,统一处理loading) 响应拦截器:解决请求之后的统一问题(eg:接口成功/失败的统一判断,后端状态吗统一处理,统一错误提示,登录失效统一跳转)
-
封装请求的原因:统一行为,统一规范,降低业务代码复杂度
-
处理冲突的思路:先弄清楚双方各自改了什么;判断最终项目应该保留什么;手动修改成正确版本再进行提交
-
从主干拉代码——>创建自己的功能分支——>本地开发、反复 commit——>push 到远程分支——>发起 PR / MR——>评审 & 修改——>合并进主干
-
ESLint:约束代码是否符合约定和最佳实践 Prettier:只负责格式,不关注逻辑正确性
-
husky:在某些关键节点,自动执行检查
-
TS = JS + 类型系统 + 编译检查
-
interface:推荐给对象=>对象结构 type:推荐给组合=>联合/映射