Node.js exports 快捷方式

🌙
手机阅读
本文目录结构

Node.js exports 快捷方式

新增于: v0.1.16

exports 变量是在模块的文件级作用域内可用的,且在模块执行之前赋值给 module.exports

它允许使用快捷方式,因此 module.exports.f = ... 可以更简洁地写成 exports.f = ...

但是,就像任何变量一样,如果为 exports 赋予了新值,则它将不再绑定到 module.exports:

你可以使用exports.f = ...,当时不能exports = {xx:aa}

module.exports.hello = true; // 从模块的引用中导出。
exports = { hello: false };  // 不导出,仅在模块中可用。因为已经被重写了

当 module.exports 属性被新对象完全替换时,通常也会重新赋值 exports:

下面是规范

module.exports = exports = function Constructor() {
  // ... 
};

为了说明这种行为,想象对 require() 的假设实现,它与 require() 的实际实现非常类似:

function require(/* ... */) {
  const module = { exports: {} };
  ((module, exports) => {
    // 模块代码在这。在这个例子中,定义了一个函数。
    function someFunc() {}
    exports = someFunc;
    // 此时,exports 不再是一个 module.exports 的快捷方式,
    // 且这个模块依然导出一个空的默认对象。
    module.exports = someFunc;
    // 此时,该模块导出 someFunc,而不是默认对象。
  })(module, module.exports);
  return module.exports;
}

更多module 对象的API介绍,请点击Node.js module 对象查看


更多内容请参考:Node.js module 模块,或者通过 点击对应菜单 进行查看;



AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

目前重心已经放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>