Модуль EcmaScript 6 требует, как он работает?
Поэтому я знаю, как требовать и экспортировать модули в ES6. Но для таких структур, как Aurelia, в документах сказано, что вам требуется aurelia
вот так:
import {LogManager} from 'aurelia-framework';
Нужно ли размещать файл JS с именем aurelia-framework
в папке, где находится файл JS, из которого я выполняю, или делает import
функция работы похожа на require
функция в NodeJS/CommonJS?
2 ответа
Согласно этой статье спецификация модулей ES6 касается только загрузки модулей, которые присутствуют в пути к файлу. Загрузка этих файлов (через NPM или другими способами) выходит за рамки спецификации модулей ECMAScript 6. В спецификации о поддержке пакета npm ничего не сказано (обходя структуру каталогов до /
, один каталог за раз, ищет package.json
файл, а затем поиск в node_modules
каталог где package.json
файл найден). Так что пока import
синтаксис похож на обычный JS стиль, вся магия поиска модулей в node_modules
каталог не входит.
Так что для вашего примера, чтобы работать, aurelia-framework
где-то в вашей файловой системе должен быть файл javascript, и он должен содержать exports
заявление.
import {LogManager} from 'aurelia-framework'; // ./aurelia-framework.js
import {LogManager} from '../libs/aurelia-framework'; // ../libs/aurelia-framework.js
С Aurelia вы можете устанавливать зависимые библиотеки, используя jspm. Вы можете увидеть пример этого здесь. jspm получит пакеты для вас и поместит их в подпапки вашего проекта. jspm использует индекс (хранящийся в config.js), чтобы узнать, где найти файлы (аналогично requirejs, но работает для модулей amd, commonjs и es6).
Также есть пример использования библиотек aurelia с requirejs amd loader. этот пример использует пакет библиотек aurelia, сгенерированных r.js, как показано здесь