规范:一个约定好的游戏规则而已
-
应用:Node应用由模块组成,而它的模块规则就是使用的CommonJs 规范
-
特点:
- 模块拥有独立的作用域,文件之间相互独立,互补影响。
- 模块被使用时,允许多次加载,但是模块会在第一次加载时缓存下来。
- 模块加载顺序,是按照代码出现的顺序进行加载的。
-
node 模块化的本质是:内置一个Module构造函数,其他模块是Module 的实例(工厂模式)。
实例化后的 Module 抛出相应的方法和变量
- module.id 模块识别符(身份码),通常是带有绝对路径的模块文件名称。
- module.filename 模块文件名称,带有绝对路径。
- module.loaded 返回一个bool 表示模块是否完成加载。
- module.parent 返回一个对象,表示调用该模块的模块(caller 谁调了)
- module.children 返回一个数组,表示该模块要用的其他模块(callee 调了谁)
- module.exports 表示模块对外输出的值。
关于node 中的exports变量的说明
为了方便使用,Node 为每个模块提供了一个exports 变量,指向module.exports, 需要注意的是:对exports 重新赋值,将会改变原来的指向。
关键词:本地、同步执行、构造函数
本意是为了串联构造函数、原型、原型链
参考链接:CommonJS规范