【Node】CommonJS二三事

CommonJS 特性

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

require 规则

  • / 表示绝对路径, ./ 表示相对于当前文件

  • 支持js、json、node扩展名,不写时会依次尝试

  • 不写路径则认为是build-in 模块或者各级 node_modules 内的第三模块

require 特性

  • module 被加载的时候执行,加载后缓存
  • 一旦出现某个模块被循环加载(互相引用),就只输出已经执行的部分,还未执行的部分不会输出

exports 是 module.exports 的简写形式,node文件编译模拟

const exports = module.exports
(
  function (exports,require,module,__filename,__dirname){
    //code...
  }
)

所以我们可以直接在exports上挂载属性或方法,但是不能改变exports的指向

exports.test = 100   // 可以这样用

exports = {  //改变指向,错误用法
  a: 1,
  b: 2,
  test: 100
}

当我们想要直接导出一个对象时可以用module.exports

module.exports = {
  a: 1,
  b: 2,
  test: 100
}

exports默认为mudule.exports的快捷方式,可以添加属性但是不能修改指向,修改指向后就会成为一个普通对象。因为在CommonJS中模块对外的输出永远都是module.exports。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值