顯然沒有辦法在modulr來解決這個問題,所以我不得不創建一個名爲信封一個解決辦法模塊看起來像這樣:
// Env.js
var my = {
modules: undefined,
require: require
};
exports.override = function(modules) {
my.modules = modules;
};
exports.require = function(path) {
if (my.modules && my.modules[path]) {
return my.modules[path];
} else {
// my.require(...) is needed instead of simply require(...)
// because simply require(...) will cause a modulr parsing failure
return my.require(path);
}
};
,並在客戶端,有一個特定的初始化,做:
// ClientInitializer.js
Env = require('shared/Env');
Env.override({ underscore: _ });
因此,「共享」模塊,可以這樣做:
// SharedModule.js
var _ = require('shared/Env').require('underscore');
如果「共享」模塊在服務器上運行,正常需要函數被調用。 如果它正在瀏覽器中運行,則模塊將使用全局變量__應答。
來源
2011-08-09 10:29:48
ivo