四、nodejs模块
1.常见的模块规范:
CommonJS: 最初被应用在nodejs,被称为nodejs的模块规范,通过exports或module.exports输出模块,使用require引入模块
es6模块规范:在语言标准的层面上实现了模块功能,而且实现得相当简单;通过export输出,import引入
nodejs模块
(1)export,module.export输出模块
(2)require("path")引入模块
export和module.export的区别
exports输出的对象挂在exports对象上,其实抛出的是exports对象;
module.export抛出的是模块本身;是一个真正的抛出
两者区别:
1.CommonJS 模块输出的是一个值的拷贝,ES6 模块输出的是值的引用。
3.CommonJS 模块是运行时加载,ES6 模块是编译时输出接口。
4.CommonJs 是动态语法可以写在判断里,ES6 Module 静态语法只能写在顶层
5.CommonJs 的 this 是当前模块,ES6 Module的 this 是 undefined
require查询
(1)开始require-->文件模块缓存-->是否是原生模块(否)-->查找文件模块-->根据扩展名载入文件模块-->缓存文件模块-->返回exports
(2)开始require-->文件缓存模块-->是否是原生模块(是)-->查找原生模块缓存区-->加载原生模块-->缓存原始模块-->返回exports