一、CommonJs 规范
1.1 环境搭建
控制台输入:npm init -y
,生成 package.json
为其新建属性"type": "commonjs"
1.2 导入方式
1.2.1 引入自己编写的模块
假设index.js要引用sub.js中业务逻辑
1.2.2 引入第三方模块
1.2.3 引入nodejs内置模块
1.2.4 引入 c++ 拓展
1.2.5 引入 json 文件
1.3 导出方式
1.3.1 导出内容为对象
支持解构
1.3.2 直接导出值
二、esm 规范
2.1 环境搭建
将package.json
中的type
修改为module
2.2 导入方式
2.2.1 引入json文件
注意:esm默认不支持导入json文件,但是可以强行引用
2.3 导出方式
3.3.1 导出对象
3.3.2 直接导出值
3.3.3 导出所有值
三、区别
esm | commonjs |
---|---|
编译时异步加载 | 运行时同步加载 |
值不可修改 | 可以修改值 |
支持tree shaking | 不支持tree shaking |
顶层this指向undefined | 顶层this指向这个模块本身 |
注:如果import非要掺杂在逻辑里面使用import函数
if(true){
import("./sub.js").then(res=>{
console.log(res)
})
}