2025-04-21 日报 Day163

2025-04-21 日报 Day163

Yuyang 前端小白🥬

今日的鸡汤

只争朝夕、不负韶华,是对未来最好的宣示。

今日学习内容

1、JS 红皮书 P783-790 第二十六章:模块

今日笔记

1、使用ES6模块: ES6 最大的一个改进就是引入了模块规范。这个规范全方位简化了之前出现的模块加载器,原生浏览器支持意味着加载器及其他预处理都不再必要。从很多方面看,ES6 模块系统是集 AMD 和 CommonJS之大成者。

  • 模块标签及定义: ECMAScript 6 模块是作为一整块 JavaScript 代码而存在的。带有 type=”module”属性的 即使与常规 JavaScript 文件处理方式不同,JavaScript 模块文件也没有专门的内容类型。
    与传统脚本不同,所有模块都会像 另外,可以改为加载外部 JS 模块定义: 嵌入的模块定义代码不能使用 import 加载到其他模块。只有通过外部文件加载的模块才可以使用import 加载。因此,嵌入模块只适合作为入口模块。
  • 模块加载: 完全支持 ECMAScript 6 模块的浏览器可以从顶级模块加载整个依赖图,且是异步完成的。浏览器会解析入口模块,确定依赖,并发送对依赖模块的请求。这些文件通过网络返回后,浏览器就会解析它们的内容,确定它们的依赖,如果这些二级依赖还没有加载,则会发送更多请求。这个异步递归加载过程会持续到整个应用程序的依赖图都解析完成。解析完依赖图,应用程序就可以正式加载模块了。
  • 模块行为: ECMAScript 6 模块借用了 CommonJS 和 AMD 的很多优秀特性。下面简单列举一些。
     模块代码只在加载后执行。
     模块只能加载一次。
     模块是单例。
     模块可以定义公共接口,其他模块可以基于这个公共接口观察和交互。
     模块可以请求加载其他模块。
     支持循环依赖。
    ES6 模块系统也增加了一些新行为。
     ES6 模块默认在严格模式下执行。
     ES6 模块不共享全局命名空间。
     模块顶级 this 的值是 undefined(常规脚本中是 window)。
     模块中的 var 声明不会添加到 window 对象。
     ES6 模块是异步加载和执行的。
    浏览器运行时在知道应该把某个文件当成模块时,会有条件地按照上述 ECMAScript 6 模块行为来施加限制。与
    访问人数 总访问量
    Hexo 驱动 主题 Redefine v2.6.4