我想保留一个 JSON 文档来存储一些简单的数据,我想要求这个文档并在define()
调用中使用 JSON 对象,以便我可以使用它。这不是一个async
电话。我的意思是它应该用于开发,但我确实想在构建时编译文件,这与async
来自 API 的实际调用不同,其中内容是动态的。
问问题
58477 次
2 回答
68
最简单的方法是为此使用 requirejs json 插件,这也将允许您将文件包含到构建中。
https://github.com/millermedeiros/requirejs-plugins
下面是一个例子:
require(['json!someFile.json'], function(data){
...
})
// It does not actually need to be a .json extension, this will work to:
require(['json!someFile'], function(data){
...
})
如果您想在您的 r.js 构建中包含该文件,以便它始终在 main/js 引导文件中进行优化,您必须将其添加到包含选项
您也可以为此使用 require js 文本插件,它通常用于加载模板文件,但您也可以使用它来加载 .json 文件。
https://github.com/requirejs/text
您将不得不解析您自己的内容JSON.parse
(如果需要,包括json2.js以提供对旧浏览器的支持)
.json
您也可以将 json 包装在它自己的 define() 中,这样您就可以传统地要求它,但如果您仅限于实际文件,这将不起作用。
另一种选择是要求文本文件通过 ajax 你自己,使用 jquery 或其他东西。
$.get('somefile.json', function(data) {
// do something with your data
});
于 2013-03-09T18:06:21.973 回答
10
发布这个答案,因为:
- 这是用户提出问题的实际用作他们的解决方案的内容
- 它比需要文本更清晰,因为它总是为您执行 JSON.parse()。
RequireJS 有一个 JSON 插件。语法很简单:
require(['json!someData.json'], function(data){
...
})
于 2014-11-17T10:40:05.797 回答