我想保留一个JSON文档以存储一些简单的数据,并且我想要在define()
调用中需要此文档并使用JSON对象,以便我可以使用它。 这不是async
调用,我是说这应该是为了开发目的,但与实际的async
API调用不同,其中内容是动态的,我确实想在构建时编译文件。
我想保留一个JSON文档以存储一些简单的数据,并且我想要在define()
调用中需要此文档并使用JSON对象,以便我可以使用它。 这不是async
调用,我是说这应该是为了开发目的,但与实际的async
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构建中包含该文件,以便始终在main/js引导文件中进行优化,则必须将其添加到包含选项中。
您还可以使用requirejs文本插件来实现这一点,通常用于加载模板文件,但也可用于加载.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
});
requirejs-plugins
,其中有一个我完全忽略的json
插件。但是它需要text
作为依赖项。感谢你!今天我刚开始在浏览器上使用RequireJS,它真的很棒。我仍然希望在构建时它不再使用ajax来获取文档。 - ThomasReggitext!./colors.json
,然后对其进行解析以获取配置值。这在开发中有效,但 r.js 优化器会抛出错误。我将其隔离到特定文件,并将其替换为包装在 amd define 中的标准模块,如 ./colors
,优化器不再失败。我不感兴趣找到根本原因,只是必须完成工作。如果您愿意,我们可以线下交流。 - SimplGy因为以下原因,我将此作为答案发布:
RequireJS有一个JSON插件。语法很简单:
require(['json!someData.json'], function(data){
...
})
Access to XMLHttpRequest at 'file:///C:/test/settings.json' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, chrome-untrusted, https, isolated-app.
- Krisztián Balla
.json
文件。 - ThomasReggi