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.js
4.如果index.js
不存在,就到上一级的node_models
查找,这样一直查找到 根目录下的node_models
,如果还没找到,就报错。- './xxxx'形式就按相对路径查找。注:自己写的必须袋路径。