NodeJS中的CommonJS规范

CommonJS

  • 每个文件是一个模块,有自己的作用域
  • 在模块内部module变量代表模块本身
  • module.exports属性代表模块对外接口

首先,我们想定义一个模块,就需要创建一个文件。其次,我们在模块内部我们使用module.exports把我们想输出的东西放到这个属性中。

require规则

  • /表示绝对路径,./表示相对于当前文件的路径
  • 支持js、json、node拓展名,如果不写拓展名,node会按顺序依次尝试解析拓展名,如果不是这三种拓展名,则会报错。
  • 不写路径则认为是build-in模块或者各级node_modules内的第三方模块
require特性:
  • module被加载的时候执行,加载后缓存(只加载一次,之后会保存在内存中,就可以直接用了)
  • 一旦某个模块被循环加载,就只输出已经执行的部分,还未执行的部分不会输出(比较难以理解,应尽量避免循环引用模块)
引用系统内置模块:
const fs = require('fs');

// 异步操作,因为是异步函数,所以才需要回调函数
const result = fs.readFile('./mode_fs.js', (err, data) => {
    if (err) {
        console.log(err);

    } else {
        console.log(data.toString());
    }

})
// 异步操作,需要在回调函数中返回,不能直接输出结果
console.log(result);//undefined
CommonJS中module.exports与exports的关系

exports就相当于module.exports的快捷方式,它是这样定义的:

const exports = module.exports;
exports.test = 100;
//可以给exports添加属性,但不能对exports赋值为对象字面量,因为这样改变了exports对module.exports的引用关系,切断了module.exports与exports间的联系。
// 这是错误的
exports = {
    a:100,
    b:200
}
// 这是可以的
module.exports = {
    a:100,
    b:200
}

1.在CommonJS中模块对外输出的只有module.exports,而exports不过是它的简写形式。
2.exports是module.exports的快捷方式,是为了简写module.exports,我们可以给exports添加属性。
但要特别注意不能对exports赋值为对象字面量,因为这样会改变exports的引用,切断module.exports与exports的联系。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值