关于NodeJS中模块的引用及导出
模块
- 模块:独立的功能体
- 模块分类:核心模块(内置模块)、自定义模块、第三方模块
自定义模块
- 在在NodeJS,每一个文件都是一个模块, NodeJS
自动 为每个文件添加了构造函数 ,所有的代码被构造函数所包含:
(function(exports,require,module,__filename,__dirname){
})
require(path) 用于引入一个模块,path代表(相对/绝对)路径,默认返回一个对象,同一级目录必须写路径./ module : 指代当前的模块对象 module.exports: 当前模块的导出对象,公开的属性和方法exports : 指代module.exports
正常情况下,模块中的变量值和函数为局部变量,不能被导出后使用,只会执行程序内部运行的结果,借助modele.exports 可以将内部变量和方法抛出给其他文件使用
__filename : 当前模块的绝对目录 和名称 (前面下划线为两条)__dirname: 当前模块的绝对目录 (前面下划线为两条)
抛出模块时注意事项
- 以
对象 的形式抛出(最常见)
module.exports = {'key1' : 'value1', 'key2' : 'value2',...}
obj ={...}
module.exports = obj
- 单独抛出函数:
module.exports.newFun = oldFun
- 单纯抛出变量值:
module.exports.newVal = oldVal
引入模块注意事项
| 以路径开始 | 不以路径开始 |
---|
文件模块 | require('./circle.js') 常用于引入自定义的模块,后缀名.js可省略 | require('url') 常用于引入官方提供的核心模块 | 目录模块 | require('./mulu') 会先到mulu目录下寻找package.json(包)文件中main属性对应的文件名称,如果找不到再去找index.js件,如果连index.js都没有找到那么就会报错 | require('04_2') 会到当前目录下的node_modules中寻找04_2 目录,如果找不到,往上一级查找,直到找到指定顶级目录(盘符),如果最终找不到目录,那么报错,找到目录的话04_2 就会去找目录中的package.json,后续用以路径开始的目录模块的查找 |
附加内容:
npm init -y 初始化一个package.json文件,用于记录安装的包相关信息npm install 包名称 下载到目录名为node_modules的文件夹中npm install package.json 自动安装package.json中记录的包名称以及版本号
|