首页 > 解决方案 > 如何将 EmberJS 增量集成到 Rails Web 应用程序中?

问题描述

我们正在开发我们的开源密码管理器 cryptopus https://github.com/puzzle/cryptopus。自从我们上一个版本以来,我们集成了 emberjs,并且正在将一个又一个组件从经典的 Rails webapp 更新到 emberjs。目前,我们使用 locationType: "hash" 来触发 emberjs 部件。

我们现在面临的一个挑战是确保将 UI 组件移至 emberjs 后 URL 仍然相同。所以我们应该摆脱 emberjs 的“hash”-URLs 并且仍然能够调用一些遗留的 rails webapp URLs。

有没有办法忽略 emberjs 中的路由并将请求发送到后端?还有其他想法可以使 emberjs 的增量集成成为可能吗?如果 SPA 在从 class rails webapp URL 返回后重新初始化,那就没问题了。

一些示例路线:

/session/new -> send to rails backend
/teams -> handle by emberjs
/teams/42 -> handle by emberjs
/admin/users -> send to rails backend

也可以为所有 emberjs 处理的路由添加前缀,例如:/app/teams、/app/teams/42

标签: ruby-on-railsember.js

解决方案


我们找到了一个非常简单的解决方案。

  1. 在 config/environment.js 中:删除 rootURL,locationType:“auto”
  2. 在 emberjs 中配置了所有需要的路由
  3. 在 Rails 中创建了一个前端控制器,它在第一次请求时为 ember 文件提供服务

所以现在,应用程序的一些前端部分使用 ember 运行,其他部分仍然使用 rails。ember 路由器不关心未配置的 URL。非常好的解决方案:)

查看https://github.com/puzzle/cryptopus以查看完整的解决方案。


推荐阅读