我是Backbone的新手,我正在帮助维护一个拥有大量Backbone和RequireJS代码的应用程序,它们可以做到这样:
define(
['backbone', 'underscore'],
function(Backbone, _) {
// some code here
}
);
我想在每个页面中配置Underscore ......从最简单的意义上说,我可以这样做:
define(
['backbone', 'underscore'],
function(Backbone, _) {
// do some stuff to configure underscore
configureUnderscore(_);
}
);
但我想单独留下每个页面的define
函数,只需注入一个在调用define
回调之前调用的回调。
如何使用Backbone或RequireJS完成此操作?
答案 0 :(得分:1)
最简单的可能是定义一个名为(例如)rawUnderscore
的requireJS模块,该模块在没有任何配置的情况下返回Undercore。
然后,创建一个名为underscore
的新模块,该模块需要rawUnderscore
并在返回其值之前对其进行配置。
答案 1 :(得分:1)
以下是another answer on this page中建议的如何完成此工作,并从this StackOverflow answer复制到类似的问题:
requirejs.config({
paths: {
'underscore': 'underscoreConfig',
'originalUnderscore': 'underscore'
},
shim: {
'originalUnderscore': {
exports: '_'
}
}
});
define(['originalUnderscore'], function(_) {
_.templateSettings =
{
evaluate : /<%([\s\S]+?)%>/g,
interpolate : /<%cleanHtml([\s\S]+?)%>/g,
escape : /<%[=-]([\s\S]+?)%>/g
};
return _;
});
答案 2 :(得分:0)
另一种方法(完全未经测试)可能是在包含require.js之前定义“require”变量,detailed here in the Require.JS docs和here as well
<script>
var require = {
deps: ["some/module1", "my/module2", "a.js", "b.js"],
callback: function(module1, module2) {
//This function will be called when all the dependencies
//listed above in deps are loaded. Note that this
//function could be called before the page is loaded.
//This callback is optional.
}
};
</script>
<script src="scripts/require.js"></script>