簡體   English   中英

node.js模塊/導出系統:是否可以將模塊作為功能導出

[英]node.js module/export system: is it possible to export a module as a function

我想在Dispatch.js中做類似的事情

function handle(msg) {
    ....
}
exports = handle;

這在調用index.js中

var dispatch = require("./Dispatch);
dispatch("data");

有任何想法嗎?

exports = handle

這將創建一個名為局部變量exports 這與覆蓋module.exports不同。

module.exports = handle

這將覆蓋位於模塊范圍內的export變量,然后將由require讀取。

在瀏覽器中, window["foo"]foo相同,但是在節點module["foo"]foo行為略有不同。

局部變量作用域上下文和module不是同一件事。

做:

function handle(msg) {
    ....
}
module.exports = handle;

它以您想要的方式工作。

這背后的問題的問題( exports VS module.exports VS exports.something )在這篇文章中是最好的描述:

http://www.alistapart.com/articles/getoutbindingsituations

第一個版本( exports = handle )正是問題所在:缺少的綁定在javascript中是必需的:

window.exports = handle exports = handle表示window.exports = handle (或任何node.js作為全局對象的)

解決問題的另一種方法是考慮節點如何加載模塊:

function loadModule(module, exports) {

里面有你的模塊代碼

}

如果您的代碼覆蓋了exports參數( exports = handle ),則此更改從此函數的外部是不可見的。 為此,可以使用module對象。

如果exports是在函數體所在范圍內可見的變量,則不會發生此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM