Rails 如何实现 Rails 项目的前后端分离?

drshu · 2016年09月18日 · 最后由 drshu 回复于 2016年09月23日 · 8108 次阅读

现在需要做一个项目,要求实现前后端分离,因为最近一直在琢磨 Rails,所以想在之上进行尝试,但是不太清楚 Rails 上如何实现。搜索了一波之后,发现这方面的资料不是很多,并且很多东西都是我之前没有涉及到的。 Rails + ES6 + Angular2 前后端分离开发(一)
因为之前前端经验很少,知识储备不够,所以看起来很费解,能否请各位前辈指导一下如何实现比较方便?需要补充那些知识,最近买了 JS 的书JavaScript DOM 编程艺术 (第 2 版) ,正准备深入了解下,除此之外还需要哪些知识(HTML 和 CSS 除外)

1,楼主链接给撑了邮箱格式。 2,前后端分离的话,按照项目具体情况,可以尝试一下 sinatra 或者 Rails5 的 api mode,以此作为后端;前端选 angular ember react 其一,当作两个项目来开发,使用某种通讯方式进行数据交互。最简单的大概就这样吧,如果要加入其他如 es 这样的工具,那自然会复杂一点。不过接入方法都很成熟,搜索一下就能得到很多例子。

#1 楼 @realwol 抱歉,已经重新编辑。
1.那如果使用 Rails5 的 API mode 有没有什么教程可以研读一下,和普通 ROR 开发有什么区别呢?
2.您的意思是前端 angular 后端 Rails,通过 ES 来交互是吗?
3.能否使用 bootstrap 这样的框架呢?感觉 angular 的学习路线有点太陡了

其实 Rails 开发者更多是前后端一起搞的,不过也可以和 java、php 一样来个前后端分离,目的说白了就是把前端的开发和后端 API 分开。前端可以选择 vue(个人推荐,可以看看 他们的对比)、react 或者 angular 之类的框架,后端提供 API。我们的做法(后端 PHP)是前端通过 nodejs 来做路由和视图渲染(至于为啥是 nodejs,可以看看阿里的那篇前后端分离文章,部分原因是因为它是用前端开发人员熟悉的 js 来写的)

另:angularjs 是 mvvm 框架,bootstrap 是 UI 框架,完全不是一码事

#3 楼 @hxh1246996371 大致明白了,那如果使用 Rails 来后端的话,这个 Api 这些怎么来提供呢?感觉和普通开发有很大不同 ( ・᷄ ᵌ・᷅ )

#4 楼 @drshu 可以继承 ActionController::API 单独写 api 的 controller,就是精简的 ActionController::Base

从你提问的内容和你看的书来看,目前你的能力做这样的架构未必能解决。如果你真想这么做的话,推荐仔细读完 rails5 api 的内容,angular2 的所有文档并且理解他奇奇怪怪设计模式的所有东西。不然你会遇到满满的坑,连环坑。

#6 楼 @zj0713001 恩,对,我越来越意识到这个方案的困难了,现在考虑用 Vue+JAVA 来分离前后端,Rails 这边可能需要看的东西太多了。

#7 楼 @drshu 用自己熟悉的

只用 ruby 写后端业务逻辑,然后前端用 node 来作,通过 API 接口和 ruby 项目来进行交互。推荐 sinatra 和 Grape。

接楼上,node 做为中间层,搭个 webpack 以及负责 view 层的渲染,后端 api 用什么都可以,中间层可以参考下:HackerNew Middle Layer

最近刚写了个前后端分离的项目,楼主要是有兴趣可以看看:https://ruby-china.org/topics/31090

#11 楼 @rina 谢谢你,祝你早日找到一份理想的工作😊

我们是分了两步走,最开始是把 js、css、image 这些资源从 Rails 抽离出去,抛弃了 asset pipeline 改用 webpack:https://ruby-china.org/topics/29630。最近开始弄 nodejs 的中间层,再把后端完全 API 化。

建议去读一下 discourse 项目的源代码,感受一下这种大型 Rails 项目中前后端分离的做法,并思考如何在自己的团队中设计并执行这种基于 Rails 的前后端分离项目的工作流程。

同时也建议参考Java、PHP甚至C#等技术平台的前后端分离做法,这样你会有更清晰的理解。

#14 楼 @pengedy 谢谢您,我去研究一下

需要 登录 后方可回复, 如果你还没有账号请 注册新账号