ruby-on-rails - 如何将 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
解决方案
我们找到了一个非常简单的解决方案。
- 在 config/environment.js 中:删除 rootURL,locationType:“auto”
- 在 emberjs 中配置了所有需要的路由
- 在 Rails 中创建了一个前端控制器,它在第一次请求时为 ember 文件提供服务
所以现在,应用程序的一些前端部分使用 ember 运行,其他部分仍然使用 rails。ember 路由器不关心未配置的 URL。非常好的解决方案:)
查看https://github.com/puzzle/cryptopus以查看完整的解决方案。
推荐阅读
- python - 涉及遍历文件系统的递归的结束条件
- html - 粘性 HTML 表头,并排,可滚动的 div
- android - 在Android中实现TCP客户端的最佳方法是什么
- c++ - Visual Studio (C++):如何使用 TCP 套接字发送多个值?
- jquery - 如何用值而不是使用跨度填充输入文本框?
- android - 如何让用户在至少登录一次后保持登录状态?
- c++ - C ++如何将字符串数组中的点设置为枚举变量
- github - GitHub 应用程序需要哪些权限才能访问 list-issues-for-a-repository API?
- python-3.x - Need advice cleaning my code to make it DRY
- ruby - 升级到 Rails 5 后,Active Record 回调停止工作