ember.js - 结合两个 emberjs 应用程序
问题描述
我目前使用的是 ember 1.13。我有两个使用 emberjs 的应用程序。现在我正在考虑通过在第一个应用程序中创建新路线并显示第二个应用程序的特定路线来集成这两个应用程序。许多人建议使用 ember 引擎,但他们需要 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
是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
从插件项目中运行并测试您的路线。验收测试也针对虚拟应用程序运行,因此您不会真正受到这种方法的限制。
现在在您的消费应用程序中,您将执行我们在虚拟应用程序中执行的相同操作来添加路线。一般来说,这种方法需要仔细的工程才能有效地工作(ember 引擎解决的许多问题必须由您以某种方式解决)。您的插件很可能必须公开大量配置,以便您可以从插件向外路由回消费应用程序,而消费应用程序将不知道消费应用程序中的路由。您必须避免命名空间冲突。不过听起来很有趣:)
推荐阅读
- docker - Flink 消费者作业无法从 Docker 连接到 Kafka
- virtual-machine - 有两个带 NAT 但与主机 IP 不同的 VirtualBox 虚拟机?
- python - 使用 python 在特定位置读取文本
- ios - 未找到 -lPods- 的 XCode 库
- javascript - 提交表单后清除formik错误
- javascript - 发送到视图的模型无法在 ajax get 中读取
- reactjs - React Material UI 单选按钮看起来杂乱无章
- reactjs - MapBox html 标记
- python - Reportlab:修复标题使其无法向上?
- three.js - 从 gltf 加载模型时如何增加对比度和色彩饱和度