Как импортировать именованный модуль SystemJS из файла пакета?

У меня есть один файл (app.js) с двумя именованными модулями ("foo" и "bar" - где "bar" зависит от "foo").

Вопрос: Как загрузить "бар" в браузере?

Отказ от ответственности: я новичок в SystemJS, и документы выглядят немного пугающе.

app.js

System.register("foo", [], function(exports_1) {
    "use strict";
    var App;
    return {
        setters:[],
        execute: function() {
            App = (function () {
                function App() {
                    this.bar = 'Hello world.';
                    console.log(this.bar);
                }
                return App;
            })();
            exports_1("App", App);
            ;
        }
    }
});

System.register("bar", ["foo"], function(exports_1) {
    "use strict";
    var App;
    return {
        setters:[],
        execute: function() {
            App = (function () {
                function App() {
                    this.bar = 'Mony a mickle maks a muckle.';
                    console.log(this.bar);
                }
                return App;
            })();
            exports_1("App", App);
            ;
        }
    }
});

person Pablo    schedule 05.12.2015    source источник
comment
Вы пробовали System.import('bar').then((module) => {})?   -  person m90    schedule 05.12.2015
comment
Верно! Оно работает. Я добавил тег <script src="app.js"> в свой индексный файл, а тег System.import('bar').   -  person Pablo    schedule 05.12.2015


Ответы (2)


Получил желаемые результаты, выполнив следующие действия:

  • Добавил тег <script src="app.js"> в мой индексный файл.
  • Также добавил System.import('bar'); на страницу.

Интересно, является ли это стандартным/рекомендуемым способом сделать это.

Редактировать:

Проблема с этим подходом заключается в том, что мне нужны две стратегии для разработки и производства.

В процессе разработки я не добавляю тег <script> и импортирую модуль, используя System.import('path/app.js');

person Pablo    schedule 05.12.2015
comment
Возможно, вам все еще нужно использовать модуль (используя обещание, которое возвращает импорт). Если он логируется прямо сейчас, это связано с тем, что ваш IIFE будет выполняться, но экспорт модуля все равно будет никому не доступен. - person m90; 05.12.2015

Я думаю, что использование исходного кода с голыми костями может помочь вам, показав простой рабочий пример, у этого сида есть РЕЖИМ ПРОИЗВОДСТВА и РАЗРАБОТКИ, и вам не нужно иметь 2 стратегии, просто выберите, запускать его в комплекте или нет.

попробуй: npm i -g slush-jspm-react-seed

person Sloppy Lopez    schedule 12.12.2015