57

我想保留一个 JSON 文档来存储一些简单的数据,我想要求这个文档并在define()调用中使用 JSON 对象,以便我可以使用它。这不是一个async电话。我的意思是它应该用于开发,但我确实想在构建时编译文件,这与async来自 API 的实际调用不同,其中内容是动态的。

4

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