javascript - 将引导变量和 JSON 传递给 require.js

标签 javascript requirejs

将渲染页面中的引导变量(即 JSON 数据或配置变量)传递给 require.js 以便检查它们是否被依赖项使用的最佳做法是什么?

看起来这可以通过检查 window 对象(即 window.bootstrapped_models)来完成,但这似乎不是最优的。

app.html - HTML 文档中的示例数据

<script>
var config = {
    "isAdmin": true,
    "userId": 1
};
var bootstrapped_models = {
    "groups": [
        {
            "id": 1,
            "name": "Foo"
        },
        {
            "id": 2,
            "name": "Bar"
        }
    ]
}
</script>

app.js - 使用 require() 的示例应用

require(['jquery', 'GroupCollection'], function($, GroupCollection) {

    // extend default config
    if (config) {
        $.extend(defaults, config);
    }

    // use bootstrapped JSON here
    var collection = new GroupCollection;
    if (bootstrapped_models.groups.length > 0) {
        collection.add(bootstrapped_models.groups);
    }

});

最佳答案

@timDunham 的回答很有帮助,但对我来说感觉有点过于复杂。在使用 require.js 和 Lithium (PHP MVC) 时,我想到了以下内容。它很简单,并且在我遇到的每个实例中都有效。

<script type="text/javascript">
define('bootstrapData', function () {
    return <?php echo json_encode($bootstrapData) ?>;
});
</script>

然后可以通过执行以下操作获得:

define(['bootstrapData'], function(bootstrapData) {
    console.log(bootstrapData); // Will output your bootstrapped object
});

显然,我引入数据的方式是特定于语言的,但无论您的情况如何,其余的方式都应该有用。

关于javascript - 将引导变量和 JSON 传递给 require.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7985000/

相关文章:

javascript - 检测哪些浏览器触发连续滚动事件(而不是仅在滚动结束时触发)

javascript - AngularJS 和 RequireJS : Module not available

javascript - 邮件监听器偶尔无法通过身份验证

javascript - 时间表的动态页面

javascript - 带有 Passport-twitchtv 的 Express 服务器无法从我的 angularjs 客户端登录

javascript - 撇号在 JSON 字符串数组中转义

javascript - Backbone Marionette : Marionette. 应用程序导致 Require.js 模块加载错误, "' 错误:模块名称 'App' 尚未加载上下文:_”

javascript - AngularJS 模块在 RequireJS 中创建并定义依赖关系

dojo - 配置dojo加载器路径

javascript - 如何通过requirejs加载ckeditor