使用requireJS和data-main的参数

9
我想知道是否有一种方法可以通过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?

1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接