module.exports === exports //true
那为什么
module.exports = {}可以,而exorts = {}在require()是就不行呢?
- node 中 默认
var exports = module.exports- 默认在末行有
return module.exports
exports仅仅是module.exports的一个引用,如果给exports单独赋其他的值,那么他们之间的
关系就会断掉,末行return module.exports跟exports没有了关系,所以不能单独给exports
赋值。
现有a.js,
b.js ,
c.js
在a.js中引用b.js和c.js,在b.js中引用c.js,那么
'xxx'文件名的话可能是核心模块或者是第三方模块,如果是'./xxx'形式,则是自己写的模块.
- 看是不是核心目录,是的话加载
- 不是核心目录,到 node_modules中查找,如果找到再去
package.json中查找main属性的值, 根据这个值去加载文件。- 如果
package.json或者main属性不存在或错误,就默认加载index.js4.如果index.js不存在,就到上一级的node_models查找,这样一直查找到 根目录下的node_models,如果还没找到,就报错。- './xxxx'形式就按相对路径查找。注:自己写的必须袋路径。