喵-见缝插针 2011-08-21 09:16 采纳率: 0%
浏览 623
已采纳

在 Node.js 中,导出和导出是模块化的

I've found the following contract in a Node.js module:

module.exports = exports = nano = function database_module(cfg) {...}

I wonder whats the different between module.exports and exports and why both are used here.

转载于:https://stackoverflow.com/questions/7137397/module-exports-vs-exports-in-node-js

  • 写回答

20条回答 默认 最新

  • ℙℕℤℝ 2011-08-22 03:38
    关注

    Setting module.exports allows the database_module function to be called like a function when required. Simply setting exports wouldn't allow the function to be exported because node exports the object module.exports references. The following code wouldn't allow the user to call the function.

    module.js

    The following won't work.

    exports = nano = function database_module(cfg) {return;}
    

    The following will work if module.exports is set.

    module.exports = exports = nano = function database_module(cfg) {return;}
    

    console

    var func = require('./module.js');
    // the following line will **work** with module.exports
    func();
    

    Basically node.js doesn't export the object that exports currently references, but exports the properties of what exports originally references. Although Node.js does export the object module.exports references, allowing you to call it like a function.


    2nd least important reason

    They set both module.exports and exports to ensure exports isn't referencing the prior exported object. By setting both you use exports as a shorthand and avoid potential bugs later on down the road.

    Using exports.prop = true instead of module.exports.prop = true saves characters and avoids confusion.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(19条)

报告相同问题?

悬赏问题

  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果