关于NodeJS中模块的引用及导出
模块
- 模块:独立的功能体
- 模块分类:核心模块(内置模块)、自定义模块、第三方模块
自定义模块
- 在在NodeJS,每一个文件都是一个模块, NodeJS
自动
为每个文件添加了构造函数
,所有的代码被构造函数所包含:
(function(exports,require,module,__filename,__dirname){
//程序员自己的代码
})
require(path)
用于引入一个模块,path代表(相对/绝对)路径,默认返回一个对象,同一级目录必须写路径./
module
: 指代当前的模块对象
module.exports: 当前模块的导出对象,公开的属性和方法exports
: 指代module.exports
正常情况下,模块中的变量值和函数为局部变量,不能被导出后使用,只会执行程序内部运行的结果,借助
modele.exports
可以将内部变量和方法抛出给其他文件使用
__filename
: 当前模块的绝对目录
和名称
(前面下划线为两条)__dirname:
当前模块的绝对目录
(前面下划线为两条)
抛出模块时注意事项
- 以
对象
的形式抛出(最常见)
//1.部分抛出
module.exports = {'key1' : 'value1', 'key2' : 'value2',...}
//2.抛出(推荐)
obj ={...} // 将需要抛出的对象整合到一个大的对象中整体抛出
module.exports = obj
- 单独抛出函数:
// 将oldFun赋值给新的newFun,新的方法名代替旧的方法名(可同名)
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中记录的包名称以及版本号