结合两个 emberjs 应用程序

Combining two emberjs apps

我目前正在使用 ember 1.13。我有两个使用 emberjs 的应用程序。现在我正在考虑通过在第一个应用程序中创建一条新路线并显示第二个应用程序的特定路线来集成这两个应用程序。许多人建议使用 ember 引擎,但他们需要 ember 2.10 或 higher.Since 我的应用程序主要依赖于 IE 8,我无法从 ember 1.x 迁移。

那我该怎么办?提前致谢!!

干杯!!!

因此,一种适用于引擎前的方法是利用通用路线的插件。您的插件将像往常一样在 addons 目录中定义路由、控制器和模板。您还需要定义类似 addons/utils/router-utils:

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

router 是 ember 在调用 Router.map 时提供的 this 值。因此,在您的插件中,为了让 "normal" 感觉得到发展,您需要在 tests/dummy/app/router.js:

中的虚拟应用程序路由器中使用此 addRoutes 功能
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 生成的。您的很可能会有所不同,但关键是我们使用匿名 Router.map this 值调用我们的 addRoutes 函数,以将我们的路由动态添加到虚拟应用程序。有关动态添加路由到路由器的示例,请参阅此 twiddle

您现在可以 运行 ember serve 从插件项目中测试您的路线。还针对虚拟应用程序进行验收测试 运行,因此您实际上并不受此方法的限制。

现在在您的消费应用程序中,您将执行我们在虚拟应用程序中所做的相同操作来添加路由。一般来说,这种方法需要仔细的工程才能有效地工作(ember 引擎解决的许多问题必须由您以某种方式解决)。您的插件很可能必须公开大量配置,以便您可以从插件向外路由回到消费应用程序,而消费应用程序将不知道消费应用程序中的路由。您必须避免命名空间冲突。不过听起来很有趣 :)