Я хочу сохранить json-документ для хранения некоторых простых данных, и я хочу потребовать этот документ и использовать json-объект в вызове define()
, чтобы я мог его использовать. Это не асинхронный вызов. Я имею в виду, что это должно быть для разработки, но я хочу скомпилировать файл на сборке в отличие от фактического асинхронного вызова из API, где контент является динамическим.
Requirejs загружает статический файл JSON
Ответ 1
Самый простой способ сделать это - использовать плагин 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 bootstrap, вы должны добавить его в параметр include
Вы также можете использовать требуемый текстовый плагин js для этого, он обычно используется для загрузки файлов шаблонов, но вы можете использовать его для загрузки файлов .json.
https://github.com/requirejs/text
Вам придется проанализировать содержимое, а затем JSON.parse
(Включите json2.js, чтобы обеспечить поддержку старых браузеров, если это необходимо)
Вы также можете обернуть json в свой собственный define(), чтобы вы могли просто потребовать его традиционно, но это не сработает, если вы ограничены фактическим .json
файлом.
Другой вариант - потребовать, чтобы текстовый файл зависел от ajax вашего пользователя, с jquery или чем-то.
$.get('somefile.json', function(data) {
// do something with your data
});
Ответ 2
Отправка этого ответа, потому что:
- это то, что пользователь задает вопрос, фактически используемый в качестве своего решения.
- это более чистый взгляд, чем требуется текст, поскольку для него всегда используется JSON.parse().
RequireJS имеет плагин JSON. Синтаксис просто:
require(['json!someData.json'], function(data){
...
})