在NodeJs中,一般将代码合理拆分到不同的JS文件中,每一个文件就是一个模块,而文件路径就是模块名.
1.0 概念
- require
require函数用于在当前模块中加载和使用别的模块,另外模块中的.js扩展名可以省略.
还可以使用以下方式加载和使用一个JSON文件
var data = require('./data.json')
- exports
exports对象是当前模块的导出对象.用于导出模块公有方法和属性.别的模块通过require函数调用. - module
通过module对象可以访问到当前模块的一些相关信息. 但最多的用途是替换当前模块的导出对象.
模块导出对象默认是一个普通对象,如果想改成一个函数的话,使用如下方式
module.exports = function () { console.log('hello world') };
2.0 模块初始化
一个模块的JS代码仅在模块第一次被使用时执行一次,并且在执行过程中初始化模块导出对象之后,缓存起来的导出对象被重复利用
3.0 模块路径解析规则
require函数支持(/)斜杠或盘符(C:)开头的绝对路径,也支持(./)开头的相对路径
另外还有一种路径规则
- 内置模块
如果传递给require函数的事nodejs的内置模块名称,不做路径解析,直接返回内部模块的对象. eg: require('fs') - node_modules目录
eg: 某个模块的绝对路径是/home/user/hello.js, 在该模块中使用require('foo/bar')方式加载模块时,则nodehs依次尝试使用以下路径.
/home/user/node_modules/foo/bar
/home/node_modules/foo/bar
/node_modules/foo/bar