下面我将详细讲解“详解NodeJS模块化”的完整攻略。
一、NodeJS模块化的基础知识
在 NodeJS 中,每个文件都被视作一个模块,每个模块都具有独立的作用域和命名空间,模块之间的变量和函数是相互独立的。在 NodeJS 中,一个模块可以通过 require
函数引入另一个模块的功能,从而实现模块化开发。NodeJS 支持 CommonJS 规范,因此在 NodeJS 中可以使用 module.exports
和 exports
导出和暴露模块中的内容。
二、模块的使用
1.导出模块
在 NodeJS 中,我们可以使用 module.exports
或 exports
导出模块:
// exports.js
function add(a, b) {
return a + b;
}
exports.add = add; // 导出 add 函数
或者:
// module.exports.js
function multiply(a, b) {
return a * b;
}
module.exports = multiply; // 导出 multiply 函数
2.引入模块
在 NodeJS 中,我们可以使用 require
函数引入模块:
const add = require('./exports.js').add; // 引入 add 函数
const multiply = require('./module.exports.js'); // 引入 multiply 函数
console.log(add(1, 2)); // 输出 3
console.log(multiply(2, 3)); // 输出 6
三、模块的查找机制
在 NodeJS 中,模块的查找是通过“模块路径”来完成的。模块路径可以是绝对路径或者相对路径。当你使用相对路径时,NodeJS 会从当前文件所在的目录开始查找。
在 NodeJS 中,模块的查找顺序如下:
- 如果模块路径是一个相对路径(以
.
或..
开头),则 NodeJS 会从当前文件所在的目录开始查找。 - 如果模块路径是一个以
/
开头的绝对路径,则 NodeJS 会从文件系统的根目录开始查找。 - 如果模块路径不是相对路径也不是绝对路径,而且不包含
/
,则 NodeJS 会先在内置模块中查找,如果找不到,则从node_modules
目录下查找。
四、示例说明
1.导出对象
// person.js
module.exports = {
name: 'Tom',
age: 18
}
// test.js
const person = require('./person')
console.log(`name: ${person.name}, age: ${person.age}`) // 输出 "name: Tom, age: 18"
2.导出类
// animal.js
class Animal {
constructor(name) {
this.name = name
}
showName() {
console.log(`animal's name is ${this.name}`)
}
}
module.exports = Animal
// test.js
const Animal = require('./animal')
const cat = new Animal('cat')
cat.showName() // 输出 "animal's name is cat"
以上就是 NodeJS 模块化的基础知识及其示例。希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解NodeJS模块化 - Python技术站