如何将 EmberJS 逐步集成到 rails 网络应用程序中?

How to integrate EmberJS incrementally into an rails web app?

我们正在开发我们的开源密码管理器 cryptopus https://github.com/puzzle/cryptopus。 自上次发布以来,我们集成了 emberjs 并正在一个接一个地更新组件,从 classic rails webapp 到 emberjs。现在,我们使用 locationType: "hash" 来触发 emberjs 部分。

我们现在面临的一个挑战是确保 URL 在将 UI 组件移动到 emberjs 后仍然相同。所以我们应该摆脱 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

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

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

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

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