requirejs - 使用 requireJS 和 data-main 的参数

标签 requirejs

我想知道是否有一种方法可以使用 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/

相关文章:

knockout.js - 带有 Knockout 和 RequireJS 的自定义绑定(bind)处理程序

angularjs - beforeEach 在 angularjs/requirejs 场景中没有通过 Karma/Jasmine 调用

requirejs - system.js 可以代替 require.js

post - Backbone.js - 如何通过表单保存模型并发布到服务器

javascript - Requirejs组合应用程序window.onerror错误处理

javascript - 如何在 requirejs 的测试中注入(inject)模块来对应用程序进行单元测试?

javascript - 如何使用 RequireJS 仅在需要时包含 polyfill

javascript - 需要在 javascript 中导出 TypeScript 类

javascript - 是什么阻止了 Require'ed 脚本注入(inject)更多脚本标签

RequireJS - jQuery 区分大小写吗?