Nodejs 模块化

71 阅读1分钟

一、CommonJs 规范

1.1 环境搭建

控制台输入:npm init -y ,生成 package.json

image.png

为其新建属性"type": "commonjs"

image.png

1.2 导入方式

1.2.1 引入自己编写的模块

假设index.js要引用sub.js中业务逻辑

image.png

1.2.2 引入第三方模块

image.png

1.2.3 引入nodejs内置模块

image.png

1.2.4 引入 c++ 拓展

1.2.5 引入 json 文件

image.png

1.3 导出方式

1.3.1 导出内容为对象

支持解构

image.png

1.3.2 直接导出值

image.png

二、esm 规范

2.1 环境搭建

package.json中的type修改为module

image.png

2.2 导入方式

2.2.1 引入json文件

注意:esm默认不支持导入json文件,但是可以强行引用

image.png

2.3 导出方式

3.3.1 导出对象

image.png

3.3.2 直接导出值

image.png

3.3.3 导出所有值

image.png

三、区别

esmcommonjs
编译时异步加载运行时同步加载
值不可修改可以修改值
支持tree shaking不支持tree shaking
顶层this指向undefined顶层this指向这个模块本身

注:如果import非要掺杂在逻辑里面使用import函数

if(true){
    import("./sub.js").then(res=>{
        console.log(res)
    })
}
image.png