Может ли ember-cli импортировать json и другие файлы, отличные от JS?

Учитывая, что ember-cli использует синтаксис модулей ES6 для импорта других файлов JavaScript, возможно ли также использовать этот же синтаксис для импорта файлов, отличных от JavaScript, таких как файлы JSON или другие текстовые файлы?

Предположим, у меня есть файл JSON с именем «foo.json» в моем текущем каталоге. Как я могу импортировать содержимое этого файла в переменную в моем текущем файле JavaScript? Я безуспешно пробовал несколько вариантов:

import foo from 'foo.json';

if (typeof foo === 'object') {
  // Success
} else {
  // import failed
}

Можно ли импортировать файлы, отличные от JavaScript, в текущий файл с помощью оператора import или любых других средств?


person jake    schedule 04.01.2015    source источник


Ответы (2)


Нет, это не так. Синтаксис модулей ES6 для импорта материалов также требует, чтобы запрошенный объект был правильно экспортирован, чего не будет в ваших json-файлах или текстовых файлах. Кроме того, поскольку у нас еще нет ES6 в браузерах, все эти изящные операторы преобразуются в commonjs-модули при сборке вашего проекта.

На мой взгляд, у вас есть два варианта для этого.

Помещение файлов в вашу общую папку и загрузка их через ajax - простое решение, хотя и не очень элегантное.

Крутым вариантом было бы добавить собственный препроцессор, который обертывает ваши json-файлы в соответствующий оператор экспорта в качестве шага сборки. Это потребует гораздо больше работы и может потребовать некоторого глубокого погружения в ember-cli и брокколи, чтобы прикрепить его в нужное время.

person Karl-Johan Sjögren    schedule 04.01.2015
comment
Я бы предпочел крутой вариант, если смогу разобраться. Если я использую плагин Broccoli, который превращает файлы JSON в модули ES6 / AMD js, есть ли способ импортировать сгенерированные модули js в основной файл app.js (в assets / app.js)? - person jake; 06.01.2015
comment
Поместить его в app.js может быть сложно, но использование app.import() помещает его в vendor.js, что должно быть достаточно хорошо. - person Karl-Johan Sjögren; 06.01.2015

Да, ember-cli может импортировать файлы JSON и другие файлы, если у вас есть соответствующий плагин.

Это позволяет импортировать файлы JSON: https://github.com/IvyApp/ember-cli-json-module

... и этот работает для YAML: https://github.com/joankaradimov/ember-cli-yaml-module.

person Joan Karadimov    schedule 24.04.2017