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

  

 

posted @ 2021-02-02 00:22  shanlu  阅读(145)  评论(0编辑  收藏  举报