我想知道是否有办法使用data-main参数将参数传递给requireJS。
<script data-main="Main" src="lib/require/require.js"></script>
我可以介绍全局:
<script>
var mainId = "Main";
var mainTarget = "body";
</script>
<script data-main="Main" src="lib/require/require.js"></script>
但我想知道是否有更清洁的方法来做到这一点。谢谢!
编辑:
Simon,对于mainTarget值,这是一个很棒的计划。
require([
'plugins/load!./'+mainId+'.htm',
'plugins/load!./'+mainId+'.css'
],function(html,css){
var Main = function(){
this.__proto__ = mainTarget;
}
new Main();
}
如何将此应用于mainId?
答案 0 :(得分:15)
实现此目的的一种方法是创建一个全局或通用模块,并将其用作依赖项:
<强> global.js 强>
define({
foo: 'test',
bar: 'red'
});
使用全局:
require(['global'], function(global) {
console.log(global.foo) // 'test'
});
这依赖于JS文件中保存的全局对象属性。 它也是将数据从服务器端输出到HTML页面中的JS对象的常见模式。为此,您只需为模块命名即可。
<head>
<script>
define('global', {
mainId: 'Main',
mainTarget: 'body'
})
</script>
</head>
<强> main.js 强>
require(['global'], function(global) {
console.log(global.mainId) // 'Main'
});
如果您定义了一个需要全局属性的模块,只需将global
模块设置为依赖项。
您还可以使用priority
配置选项确保您的全局模块先于其他任何内容加载 - http://requirejs.org/docs/api.html#config