ES Module解析过程

ES Module解析过程

  1. 构建
    根据地址查找js文件,并且下载,将其静态分析成模块记录(Module Record)

    备注: 重复引用的文件不会重新下载,会有一个映射关系记录文件下载的状态,如果已经下载完成则不会再下载,进行一个缓存

  2. 实例化
    对模块记录进行实例化,并且分配内存空间,只解析模块的导入和导出语句,把模块指向对应的内存地址( 此时导出和导入的值都是undefined,因为代码没有执行 )

  3. 运行
    运行代码,计算值,并且将值填充到内存地址中

注意: 导出的模块可以修改值,导入的模块不能修改

CommonJS和ES Module的相互调用

  1. 定义: 需要分环境判断
    (1) 浏览器环境

     结果: 不能
     原因: 浏览器不支持CommonJS
    

    (2) node环境

     结果: 部分支持
     原因: 部分node版本不支持ES Module
    

    (3) 基于Webpack的开发环境

     结果: 支持
     原因: 会对CommonJS和ES Module做转换,进行相互支持
    

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!