Модуль 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, как показано здесь

Другие вопросы по тегам