Объединение двух приложений emberjs - PullRequest
1 голос
/ 13 марта 2019

Я сейчас использую ember 1.13. У меня есть два приложения, которые используют emberjs. Теперь я думаю об интеграции этих двух приложений путем создания нового маршрута в первом приложении и отображения конкретного маршрута второго приложения. Многие предлагали использовать ember-движки, но им нужен ember 2.10 или выше. Так как мое приложение в основном зависит от IE 8, я не могу перейти с ember 1.x.

Так что мне делать? Заранее спасибо !!

Ура !!! * * 1005

1 Ответ

2 голосов
/ 13 марта 2019

Таким образом, один из подходов, который работал бы до движков, - это использовать дополнение для общих маршрутов. Ваше дополнение будет определять маршруты, контроллеры и шаблоны, как обычно, с каталогом addons. Вы также захотите определить что-то вроде addons/utils/router-utils:

// assume we have a single route foo
export function addRoutes(router) {
    router.route('foo');
}

router - это значение this, которое ember предоставляет при вызове Router.map. Таким образом, в вашем дополнении, чтобы обеспечить «нормальное» развитие ощущений, вы захотите использовать эту функцию addRoutes в фиктивном маршрутизаторе приложений в tests/dummy/app/router.js:

import EmberRouter from '@ember/routing/router';
import config from './config/environment';
import { addRoutes } from 'addon-with-routes/utils/router-utils';

const Router = EmberRouter.extend({
  location: config.locationType,
  rootURL: config.rootURL
});

Router.map(function() {
  addRoutes(this);
});

export default Router;

Обратите внимание, что приведенный выше файл router.js - это то, что генерирует Ember 3.8. Скорее всего, ваш будет отличаться, но ключевой момент в том, что мы вызываем нашу функцию addRoutes с анонимным значением Router.map this, чтобы динамически добавлять наши маршруты в фиктивное приложение. Посмотрите этот twiddle для примера добавления маршрутов к маршрутизатору динамически.

Теперь вы можете запустить ember serve из проекта аддона и протестировать ваши маршруты. Приемочные тесты также выполняются с фиктивным приложением, поэтому вы не ограничены этим подходом.

Теперь внутри вашего потребляющего приложения вы бы сделали то же самое, что мы сделали в фиктивном приложении, чтобы добавить маршруты. Этот подход, в целом, хотя и потребует тщательной разработки для эффективной работы (многие проблемы, которые решает двигатели, должны быть каким-то образом решены вами). Скорее всего, вашему аддону придется выставить много настроек, чтобы вы могли перенаправить его из аддона обратно в приложение-потребитель, которое не будет знать о маршрутах в приложении-потребителе. Вам придется избегать столкновений пространства имен. Звучит весело, хотя:)

...