requirejs加载静态JSON文件

Tho*_*ggi 51 json requirejs

我想保留一个json文档来存储一些简单的数据,我想要这个文档并在define()调用中使用json对象,所以我可以使用它.这不是一个"异步"调用.我的意思是它应该用于开发,但我确实希望在构建时编译文件,而不像API的实际异步调用,其中内容是动态的.

Wil*_*eer 62

最简单的方法是使用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){
  ...
})
Run Code Online (Sandbox Code Playgroud)

如果要在r.js构建中包含该文件,以便始终在main/js引导程序文件中进行优化,则必须将其添加到include选项中

您也可以使用require js文本插件,它通常用于加载模板文件,但您也可以使用它来加载.json文件.

https://github.com/requirejs/text

你必须解析你自己的内容JSON.parse
(如果需要,包括json2.js以支持旧浏览器)

你也可以将json包装在它自己的define()中,这样你就可以传统地要求它,但如果你只限于一个实际的.json文件,这将不起作用.

另一个选择是要求文本文件通过jquery或其他东西ajax你自己.

$.get('somefile.json', function(data) {
  // do something with your data
});
Run Code Online (Sandbox Code Playgroud)

  • 我选择`requirejs-plugins`并且它有一个`json`插件我完全被忽略了.它使用`text`作为依赖.那谢谢啦!我刚刚开始在浏览器上使用requirejs,这很棒.我仍然希望当我构建它时,它将停止使用ajax来获取文档. (3认同)
  • 我在使用文字方面遇到了麻烦!对于JSON内容与r.js结合使用以进行优化.只是一个抬头. (2认同)

mik*_*ana 9

发布这个答案,因为:

  • 这是用户提出的问题实际上用作他们的解决方案
  • 看起来比需要文本更清晰,因为它总是为你做JSON.parse().

RequireJS有一个JSON插件.语法很简单:

require(['json!someData.json'], function(data){
  ...
})
Run Code Online (Sandbox Code Playgroud)

  • 对于那些发现不清楚的人,["json!/ some/ajax/endpoint"]的效果也很好 (4认同)
  • 是否可以加载本地文件? (4认同)
  • @erik我通常使用网络服务器(通过gulp)在本地开发,所以总是加载一个http://或https:// URL.我建议你这样做.如果你问的是file:// URL,我不知道. (2认同)