首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合两个emberjs应用程序

组合两个emberjs应用程序
EN

Stack Overflow用户
提问于 2019-03-13 15:40:41
回答 1查看 160关注 0票数 1

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

那么我该怎么做呢?提前感谢!!

干杯!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-13 19:21:59

因此,一种可以在预引擎中工作的方法是利用通用路由的附加组件。您的外接程序将像往常一样使用addons目录定义路由、控制器和模板。您还需要定义像addons/utils/router-utils这样的东西

代码语言:javascript
复制
// assume we have a single route foo
export function addRoutes(router) {
    router.route('foo');
}

router是ember在调用Router.map时提供的this值。因此,在您的插件中,为了实现“正常”开发,您需要在tests/dummy/app/router.js中的虚拟应用程序路由器中使用此addRoutes函数

代码语言:javascript
复制
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文件是Ember3.8生成的。您的应用程序可能会有所不同,但关键的一点是,我们使用匿名Router.map this值调用addRoutes函数来动态地将我们的路由添加到虚拟应用程序。有关向路由器动态添加路由的示例,请参阅此twiddle

您现在可以从插件项目中运行ember serve并测试您的路由。验收测试也是针对虚拟应用程序运行的,因此您不会真正受到这种方法的约束。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55136664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档