如何requirejs加载静态JSON文件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (374)

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

提问于
用户回答回答于

最简单的方法是通过使用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版本中,以便它始终在主/ 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
});
用户回答回答于

发布这个答案,因为:

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

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

require(['json!someData.json'], function(data){
  ...
})

扫码关注云+社区

领取腾讯云代金券