module.export
再nodejs环境中,创建一个文件就是创建一个模块,js或者json都有不同的方式去解析,创建一个模块的时候,会自动创建module对象 这个对象的exports是这个模块对外暴露的接口 所以一般会使用module.exports 来导出模块 同时也会创建 exports是module.exports的引用 我猜是因为 module.exports字母太多 所以用exports 来简写吧 所以 一开始module.exports = exports = {}
module.export 与require
我觉得这个图之前都是对的 但是最后那里的exports 应该是 module.exports
最后我觉得这一段总结的比较好: 来源http://www.cnblogs.com/dolphinX/p/3485260.html
node.js有几种搜索加载模块方式
1.核心模块优先级最高,直接使用名字加载,在有命名冲突的时候首先加载核心模块
2.文件模块只能按照路径加载(可以省略默认的.js拓展名,不是的话需要显示声明书写)
绝对路径
相对路径
3.查找node_modules目录,我们知道在调用npm install 命令的时候会在当前目录下创建node_module目录(如果不存在) 安装模块,当 require 遇到一个既不是核心模块,又不是以路径形式表示的模块名称时,会试图 在当前目录下的 node_modules 目录中来查找是不是有这样一个模块。如果没有找到,则会 在当前目录的上一层中的 node_modules 目录中继续查找,反复执行这一过程,直到遇到根 目录为止。
来自 https://www.jianshu.com/p/e364fa48f17f