将渲染页面中的引导变量(即 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/