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?

4

1 回答 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

于 2012-05-05T20:03:26.203 回答