1.exports.[]和mudule.export导出:
这里直接上个例子做下简单的对比,可能不那么全面哈:
//🌵小姐姐.js
exports.name = {
age:18,
high:168
}
//🌵小萝莉.js
module.exports = {
name:"萝莉嘛",
age:18,
high:155
}
//07comman.js
const name = require("./小姐姐.js");
console.log("我是通过exports.name导出的小姐姐模块",name);
const hi = require("./小萝莉");
console.log("我是通过module.exports导出的小萝莉模块",hi);
export.[]可以在一个js文件中导出多个内容export.[]=data--导出的内容,会被对象包裹:[]:会被当成导出对象的keydata:为导出对象的value
module.exports = data导出的不会被包裹,单纯的就是data
node运行07comman.js后结果如下:
2.模块加载策略
原生模块文件模块以及他们缓存的加载顺序优先级:
-
原⽣模块与⽂件模块的优先级不同,但是都不会优先于从⽂件模块的缓存中加载已经存在的模块。 -
原⽣模块的优先级仅次于⽂件模块缓存的优先级。 -
当
⽂件模块缓存中不存在,⽽且不是原⽣模块的时候,Node.js会解析require⽅法传⼊的参数,并从⽂件系统中加载实际的⽂件
require⽅法接受以下⼏种参数的传递:
http、fs、path等,原⽣模块。./mod或../mod,相对路径的⽂件模块。/pathtomodule/mod,绝对路径的⽂件模块。mod,⾮原⽣模块的⽂件模块。