我想知道是否有一种方法可以使用 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>
但我想知道是否有更清洁的方法来做到这一点。谢谢!
编辑:
西蒙,对于 mainTarget 值,我认为这是一个很棒的计划。
require([
'plugins/load!./'+mainId+'.htm',
'plugins/load!./'+mainId+'.css'
],function(html,css){
var Main = function(){
this.__proto__ = mainTarget;
}
new Main();
}
如何将此应用于 mainId?
最佳答案
实现此目的的一种方法是创建一个全局或通用模块并将其用作依赖项:
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
关于requirejs - 使用 requireJS 和 data-main 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10463895/