ES Module

2020-10-10
ES Module
特点:
  • 通过给script标签添加 type = module 的方式
  • ESM会自动采用严格模式,严格模式下 全局this=undefined 非严格全局this = window
  • 每个 ESM 都是运行在单独的私有作用域当中
  • ESM 都是通过 CORS 的方式请求外部 JS 模块的,所以必须要服务端支持 CORS
  • ESM 的 script 标签会延迟执行脚本 会等待网页渲染完成过后再执行脚本
ES Module 导入导出注意事项:
  • export {} 并不是导出一个对象字面量 而是固定语法
  • 导出的是数据的指针地址 并不是拷贝一份
  • 导出的数据都是常量,在其他模块中不可以修改
import使用规范:
  • import后面写的是路径 不能省略.js的后缀
  • import相对路径不能省略./ 因为如果是字母开头 ESM 会任务是加载第三方模块去node_modules里找
  • 可以用 ./ 开头的相对路径,也可以用 / 开头的绝对路径
  • 也可以使用完整的url加载模块 所以可以直接引用CDN上的一些模块
  • import必须出现在最顶层 不能出现在if之类的大括号当中
  • 可以用 import() 函数动态加载模块 返回的是一个promise
nodejs环境中 ESM与CommenJs:
  • ESM中可以导入CJS模块
  • CJS中不能导入ESM模块
  • CJS始终只会导出一个默认成员,不能导出多个命名成员
posted @ 2020-10-10 19:08  蓝小胖纸  阅读(252)  评论(0编辑  收藏  举报