[英]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.