NodeJS 中的模块化(CommonJS)
定义一个 add 模块并暴露出去:
function add(a,b){
return a+b
}
exports.add = add;
测试文件中引入这个模块,并调用这个模块中的方法:
const util = require('./util/add')
console.log(util); //{ add: [Function: add] }
console.log('1+2=', util.add(1, 2)) //1+2= 3
expots 暴露出去的模块是一个对象,当一个模块文件中有多个方法时,可以通过 exports 暴露,调用相应的方法和属性更加方便
function add(a, b) {
return a + b
}
function sub(a, b) {
return a - b;
}
exports.add = add;
exports.sub = sub;
也可以这样写:
exports.add=(a, b) => {
return a + b
}
exports.sub = (a, b) => {
return a - b;
}
使用 module.exports 暴露 sub 模块
function sub(a,b){
return a-b;
}
module.exports = sub;
测试引入并调用:
const util = require('./util/sub')
console.log(util) // [Function: sub]
console.log('3-2=', util(3, 2)) //3-2= 1
module.exports 暴露出去的模块,直接暴露这个方法,所以当整个模块中只有对象时,可以通过 module.exports 暴露
const util={
add:(a,b)=>{
return a+b
},
sub:(a,b)=>{
return a-b;
}
}
module.exports=util;
定义在 node_modules 中的模块,引入时,可以不引入完整目录,但文件命名必须是 index.js,否则会报错 模块找不到:

引入 add 模块,可以执行
const util = require('add')
console.log(util); //{ add: [Function: add] }
console.log('1+2=', util.add(1, 2)) //1+2= 3
引入 sub 模块,会如下报错:

解决方法是 在 模块中使用 npm 生成一个配置文件 package.json
cd 到 sub 目录,npm init --yes 强制生成 package.json

入口文件会定义成 sub.js
再次直接引入,就不会报错了
const util = require('sub')
console.log(util) // [Function: sub]
console.log('3-2=', util.sub(3, 2)) //3-2= 1

浙公网安备 33010602011771号