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