// in addon: /app/instance-initaliziers/my-addon.js
// as this is merged with application's app tree, we can import files from application
import ApplicationRouter from '../router';
export function initialize() {
// register as you would do in app/router.js
ApplicationRouter.map(function() {
this.route('foo');
});
}
export default {
initialize
};
2条答案
按热度按时间rjzwgtxy1#
选择Ember Add-on来分享功能是一个不错的选择。然而,Add-on主要是用来添加/增强更多的focused functionalities。
为了在应用程序之间重用/共享页面(路由),Ember有一个特定的解决方案,称为Ember-Engines。
根据官方指南,
从用户的Angular 来看,引擎允许将多个逻辑应用程序组合到单个应用程序中。
因此,我们可以在Engines中拥有多个页面(类似于任何其他独立的Ember应用程序),并轻松地将这些页面挂载到主机应用程序中。
fzsnzjdm2#
Ember Addon的
app
文件夹与消费应用程序的app
文件夹合并。虽然这主要用于提供组件和服务,但它对路线、控制器和路线模板的作用是相同的。通过Ember Addon共享提供路线的唯一技巧是注册它们。有两种解决方案可以注册由Ember Addon提供的路线:
1.从Ember Addon中导出一个方法,使用该方法的应用程序应使用该方法在路由器中注册路由。
1.在Addon提供的示例初始化程序中导入应用程序路由器,并在其上注册路由。
第一种方法如下所示:
第一个
第二种方法稍微复杂一点,但不需要对使用的应用程序进行任何更改。您可能会认为这是一种优势,或者是应该避免的令人困惑的魔法。