的新手,我正在帮助维护一个应用程序,该应用程序具有许多Backbone和RequireJS代码,其功能如下:
define(
['backbone', 'underscore'],
function(Backbone, _) {
// some code here
}
);
我想在每个页面中配置下划线...在最简单的意义上,我可以做这样的事情:
define(
['backbone', 'underscore'],
function(Backbone, _) {
// do some stuff to configure underscore
configureUnderscore(_);
}
);
但我想保留每个页面的 define
函数,只需注入一个在调用define
回调之前调用的回调。
如何使用 Backbone 或 RequireJS 完成此操作?
最简单的方法可能是定义一个名为(例如)rawUnderscore
的requireJS模块,该模块无需任何配置即可返回Undercore。
然后,创建一个名为 underscore
的新模块,该模块需要rawUnderscore
并在返回其值之前对其进行配置。
按照本页另一个答案中的建议进行这项工作,并从此 StackOverflow 答案复制到类似问题:
主.js
requirejs.config({
paths: {
'underscore': 'underscoreConfig',
'originalUnderscore': 'underscore'
},
shim: {
'originalUnderscore': {
exports: '_'
}
}
});
下划线配置.js
define(['originalUnderscore'], function(_) {
_.templateSettings =
{
evaluate : /<%([sS]+?)%>/g,
interpolate : /<%cleanHtml([sS]+?)%>/g,
escape : /<%[=-]([sS]+?)%>/g
};
return _;
});
另一种方法(完全未经测试)可能是在包含require.js之前定义一个"require"变量,如Require.JS文档和此处所述
<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>