后端(应用层)不同于前端,最重要的概念是 middleware/pipeline.
Rails能较为深入的理解一定要建立在对后端整体架构理解架构的基础上,不然就会进入开始很爽越来越晕的尴尬节奏。
大致分为两大部分:Server/App,一个负责接收分发 request,一个负责业务逻辑,他们之间的数据对接靠 Rack 规范。Server 具体可参考这篇文章。而 App 部分就是 Rails。
Rails干的活一句话就是一个按照 Rack 标准数据格式化的 Request 进来,分析url,分配给它一个 Handler 方法处理:
- 解析 url 参数,HTTP header/body
- 身份验证,权限验证
- Database操作
- 渲染需要返回的数据(html/json)
当然为了控制 App 的逻辑复杂度,Rails 采用 MVC 架构,遵循 convention over configuration,don't repeat yourself 理念,尽量将 Server API 设计的 restful.
Rails 重要的组件都是根据 Handler 来,ActionController,ActiveRecord(ORM),ActiveView(view).
然后对一个项目还有:配置,第三方库管理(bundler),测试(RSpec/factory_girl)
这里要提一下Rspec,对于魔法语言 Ruby 来说,只有相对完善的测试(最好TDD)心里才踏实,推荐一本书《Everyday Rails Testing With RSpec》。
有时有些 Request 是好是操作,我们需要后台任务,需要了解 sidekiq.
对于 HTML 有时可能需要 Cache,这时简单粗暴的内存KV数据库 memcached。
有哪些地方容易写出坑:
- 低效 SQL,所以对 SQL 也要有一定了解,知道一个链式 ActiveRecord 操作背后执行的哪条 SQL,而且对所用数据库(MySQL/Postgresql/MongoDB)有一定了解。
- 尽可能不要在 View 中写业务逻辑。
- Controller 中有过多逻辑。
- 当我们把逻辑从 Controller 迁入 Model,Model 会迅速臃肿起来。
对 Ruby 的理解需要达到什么程度?看懂《Ruby元编程》。
拓展阅读:
网友评论