Published onOctober 22, 2025区分 type 和 interfaceTypeScripttypescript 就是在 JavaScript 的基础上,增加了类型系统,让代码在编写的时候,就可以发现错误。通过丰富的配置项,使得类型检查的严格程度可以自定义。 type 是类型别名,通过&实现交叉类型,不支持声明合并,不可被类实现 interface 是接口,使用 extends 继承,支持声明合并,可被类实现 解决什么问题? 将弱类型的 JavaScript,转向"强类型"。更强的约束提...
Published onOctober 22, 2025模块化开发CommonJSAMDCMDUMDESM模块化开发指的是,在前端开发过程中,每个模块都是独立的单元,我们通过封装变量(如ESM的独立作用域),避免全局暴露,从而实现变量隔离避免全局污染。这样在代码修改时,可以更好的控制影响范围,且提高了复用性。 当前已有的实现包括 CommonJS,AMD,CMD,UMD,ESM 1. CommonJS 是同步加载的(适合服务器启动时做预处理),在 Node 环境下使用 2. AMD 异步加载(避免浏览...
Published onOctober 22, 2025设计模式design单例模式 确保一个类只有一个实例,并提供全局访问点。保证了一个类只有一个实例。 解决了什么问题? 保证全局唯一,避免数据状态混乱,节省资源。比如 modal 弹窗(只需要一个,最多替换里面的内容),比如文档编辑器示例(一个页面中只需要一个,允许操作这个示例),比如 Redux(只需要一个管理全局数据) 最佳实践: 1. ES6 导出的对象也是唯一的,无需手动实现单例 2. 实现的时候需要注意隐藏构...
Published onOctober 21, 2025HTTPHTTPNetworkHTTP是超文本传输协议,HTTP1.1,HTTP2,HTTP3分别代表三个版本,可用于前后端数据通信。 升级后,优化了哪些功能?解决了哪些问题? 1. HTTP1.1 时期,默认复用TCP连接(持久连接),请求必须按照顺序响应,会造成队头阻塞。浏览器最多支持 6 个 TCP 连接。重复传输了头部字段,无优先级控制。 2. 从 HTTP1.1,升级到 HTTP 2 后,通过二进制分帧和多路复用的能...
Published onOctober 21, 2025HTTP缓存HTTPNetworkCacheHTTP缓存,当浏览器访问一个网站时,会把页面上的图片,css 数据下载到本地,当用户下次再访问这个页面时,浏览器就可以直接读取本地副本,避免重复加载。主要分为强缓存和协商缓存,可以用来减少网络请求,提高用户体验。 怎么做到的? 1. 浏览器发出 GET 请求后,先看下是否存在强缓存? 2. 如果强缓存有效,则直接读取浏览器本地缓存 200 from cache 3. 如果强缓存失效,则考虑协商缓...