Миграция с requirejs на es6 import - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть приложение javascript, которое использует requireJS для загрузки своих компонентов.Это простой пример того, как это работает:

require(['eventHandler'], function(eventHandler)) {
    ... // app code that uses the eventHandler in some way
}

Он использует несколько компонентов, но давайте упростим его и представим, что он только этот.

У меня есть две разные "версии" моего miniappв двух частях большего веб-приложения, которое мы разрабатываем в моей компании.Для улучшения возможности повторного использования мне пришла в голову следующая идея:

У меня есть 2 файла требуемой конфигурации, которые определяют расположение модулей, которые необходимо запустить приложению, и я могу определить набор компонентов, которые он должен использовать длякаждый случай.

Стандартная конфигурация:

require.config({
paths : {
    // components
    eventHandler : 'lib/eventHandlers/standardEventHandler',
    ...
});

Специальная конфигурация:

require.config({
paths : {
    // components
    eventHandler : 'lib/eventHandlers/specialEventHandler',
    ...
});

Когда я загружаю приложение, я делаю следующее:

 <script data-main="@standardConfigFile" src="/lib/require/require.js"
        type="text/javascript" charset="UTF-8"></script>

И так я могу загружать разные компоненты для каждой конфигурации.В настоящее время у меня есть 2 разных, но я ожидаю, что скоро увеличу это число.

Теперь мы переключаемся на модули es6 с собственным импортом и экспортом, и мне интересно, как я могу перенести мою текущую архитектуру на собственный импорт и экспорт js идокументация не охватывает эту конкретную проблему.

Есть идеи?

1 Ответ

0 голосов
/ 21 сентября 2018

Я нашел ответ, на самом деле это действительно просто.Мне нужно только сделать модуль «import».

В моем основном компоненте я сделаю:

import * as components from '@standardComponentsLoader.js';

И затем сделаю все операции импорта в standardComponentsLoader:

import * as eventHandler from '@standardEventHandler.js';

export { eventHandler };
...