Node系列-05-CommonJS规范以及模块系统

340 阅读1分钟

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--导出的内容,会被对象包裹:
    • []:会被当成导出对象的key
    • data:为导出对象的value
  • module.exports = data 导出的不会被包裹,单纯的就是data

node运行07comman.js后结果如下:

2.模块加载策略

原生模块文件模块以及他们缓存的加载顺序优先级:

  • 原⽣模块⽂件模块的优先级不同,但是都不会优先于从⽂件模块的缓存中加载已经存在的模块。

  • 原⽣模块的优先级仅次于⽂件模块缓存的优先级。

  • ⽂件模块缓存中不存在,⽽且不是原⽣模块的时候,Node.js会解析require⽅法传⼊的参数,并从⽂件系统中加载实际的⽂件

require⽅法接受以下⼏种参数的传递:

  • http、fs、path等,原⽣模块。
  • ./mod../mod,相对路径的⽂件模块。
  • /pathtomodule/mod,绝对路径的⽂件模块。
  • mod,⾮原⽣模块的⽂件模块。