require与exports
什么是模块
一个 node.js 文件就是一个模块:Javascript代码、JSON 或 c/c++ 扩展。
-
模块分两大类:原生(核心)模块,文件模块。
- 文件模块
-
- .js 通过fs模块同步读取js文件并编译执行。
-
- .node 通过C/C++进行编写的Addon。通过dlopen方法进行加载。
-
- .json 读取文件,调用JSON.parse解析加载。
Node.提供了exports和require两个对象。其中exports是模块公开的接口。require用于从外部获取一个模块接口,即所获取模块的exports对象.
require 查找策略
require方法接受以下几种参数的传递:
- http、fs、path等,原生模块。
- ./mod或../mod,相对路径的文件模块。
- /pathtomodule/mod,绝对路径的文件模块。
- mod,非原生模块的文件模块。
如果你想你的模块是一个特定的类型就用module.exports。如果你想的模块是一个典型的“实例化对象”就用exports。