04_04.commonjs规范.js

//  模块的定义:
//      commonjs规范定义模块:创建的每一个js文件都是一个单独的块

//  模块接口的暴露
//      使用module.exports关键字来暴露
//      也可以使用另一个关键字来暴露:exports
//      区别:exports仅仅只是modul.exports的一个引用
//          相当于在每个模块中都有这么一段代码: exports = module.exports
//      为什么有了module.exports之后还有来一个exports呢?
//          为了操作方便

//  模块的引用入、:
//      使用require关键字来引用其它模块
//      自定义模块:
//          require("./a.js");
//          自定义模块的引用一定会带着路径:/,./,../
//      第三方模块:
//          require("moment");
//          require("art-template");
//          加载顺序:
// - 先在当前文件的模块所属目录去找 node_modules目录
// - 如果找到,则去该目录中找 moment 目录
// - 如果找到 moment 目录, 则找该目录中的 package.json文件
// - 如果找到 package.json 文件,则找该文件中的 main属性
// - 如果找到main 属性,则拿到该属性对应的文件
// - 如果找到 moment 目录之后,
//   - 没有package.json
//   - 或者有 package.json 没有 main 属性
//   - 或者有 main 属性,但是指向的路径不存在 
//   - 则 node 会默认去看一下 moment 目录中有没有 index.js ,index.node, index.json 文件
// - 如果找不到index 或者 找不到 moment 或者找不到 node_modules 
// - 则进入上一级目录找 node_moudles 查找(规则同上)
// - 如果上一级还找不到,继续向上,一直到当前文件所属磁盘的根目录
// - 如果到磁盘概目录还没有找到,直接报错

//      核心模块:
//          require("fs");
//          require("http");
//          require("url");
//          核心模块的引用直接引用模块名称就可以,是直接去nodejs.exe中去找到对应的模块文件

// 模块的兼容处理:
//  art-template:
//      可以在浏览器环境下面使用:window
//      也可以在node环境下面使用:

你可能感兴趣的:(04_04.commonjs规范.js)