Подтвердить что ты не робот

Requirejs загружает статический файл JSON

Я хочу сохранить json-документ для хранения некоторых простых данных, и я хочу потребовать этот документ и использовать json-объект в вызове define(), чтобы я мог его использовать. Это не асинхронный вызов. Я имею в виду, что это должно быть для разработки, но я хочу скомпилировать файл на сборке в отличие от фактического асинхронного вызова из API, где контент является динамическим.

4b9b3361

Ответ 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){
  ...
})