我目前正在使用ember 1.13。我有两个使用emberjs的应用程序。现在,我正在考虑通过在第一个应用程序中创建新路线并显示第二个应用程序的特定路线来集成这两个应用程序。许多人建议使用ember-engine,但是他们需要使用ember 2.10或更高版本。因为我的应用程序主要依赖于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在调用this
时提供的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
并测试您的路线。验收测试也针对虚拟应用程序运行,因此您不会受到这种方法的限制。
现在在您的消费应用程序中,您将执行我们在虚拟应用程序中添加路径的相同操作。总的来说,这种方法需要仔细的工程才能有效地工作(ember引擎解决的很多问题必须以某种方式解决)。您的插件很可能必须公开大量配置,以便您可以从插件向外路由回消费应用程序,这将不知道消费应用程序中的路由。您必须避免命名空间冲突。听起来很有趣:)