我想要做這樣的事情在Dispatch.jsNode.js的模塊/輸出系統:是否有可能一個模塊導出爲一個功能
function handle(msg) {
....
}
exports = handle;
,這在調用index.js
var dispatch = require("./Dispatch);
dispatch("data");
有什麼想法?
我想要做這樣的事情在Dispatch.jsNode.js的模塊/輸出系統:是否有可能一個模塊導出爲一個功能
function handle(msg) {
....
}
exports = handle;
,這在調用index.js
var dispatch = require("./Dispatch);
dispatch("data");
有什麼想法?
exports = handle
這將創建一個名爲exports
一個局部變量。這與覆蓋module.exports
不同。
module.exports = handle
這將覆蓋出口變量,居住在模塊範圍內,這就要通過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:
exports = handle
意味着window.exports = handle
(或任何的node.js具有與全局對象)
看到問題的另一個辦法就是想着節點可以如何加載模塊:
function loadModule(module, exports) {
裏面來了你的模塊代碼
}
如果你的代碼覆蓋exports
參數( exports = handle
),這個改變從這個函數的外部是不可見的。而對於這種覆蓋,可以使用module
對象。
如果導出將是函數體所在作用域中可見的變量,則不會發生此問題。
或module.exports = function(msg){} – Tom 2011-05-09 16:18:10