首页»RubyOnRails»Rails 5 有什么新特性?

Rails 5 有什么新特性?

来源:oschina 发布时间:2015-06-27 阅读次数:

  Rails 5 即将在 2015 年秋季发布,新版本拥有很多令人激动的特性。如果你使用 Rails 开发商城,那你必须使你的应用准备好迎接新的 Rails 新特性。

  别担心!我们会在新版本到来之前让你了解新特性,现在就让我们让你了解有哪些新特性,这将会大大提高你的开发能力。

  主要改进

  有很多新特性将从根本上改变我们使用 Rails 的方式。比如说 Action Cable 和改进的 Turbolinks 新特性,能够立马提高我们开发 Rails 应用的工作流程。让我们看一些这两个新特性的细节。

  合并 Rails API

  在过去的几年中,得益于 Backbone.JS 和 Angular.JS 类库,单页面应用程序(SPA)得到了发展。我在近期开发的几个单页面应用程序借助了 Rails 的威力。我曾经尝试涉猎 Sinatra 项目甚至纯粹的 Rack 项目,但是最终的结果都是写了大量 的boilerplatee 项目。我的做法没有参照 Rails,而且需要处理很多安全缺陷。我不得不在 rails-api 的社区驱动上层和传统的 rails 上进行开发。

  在 Rails 5 中,rails-api 被整合到核心包中,并且能够像简单 JSON API 那样子使用 Rails。结合个人经历,我认为这是一个伟大的改进。我不再用为我的 JavaScript 客户端建立后台 API 发愁了。

  Ruby 2.2.1

  Ruby 2.2 是 Ruby 社区的一个新版本。不仅仅带来了Ruby巨大的性能提升,还引入了大量的新功能。此外,symbols的垃圾收集获取了广泛的好评。有这样一个传说,当这个声明发布的时候,龙族的Valeria在Seventh王国落下了玫瑰雨。OK!也许我扯得太远了,但是一般来说是这样的。

注意:在迁移你的Rails 5之前你需要确认你的应用可以在Ruby 2.2.1上工作。

  由于这些增强功能,Ruby 2.2+对Rails 5来说是一个可靠的选择。Rails 5将仅支持在Ruby 2.2.1以上的版本上工作。

  Turbolinks 3

  传统的 web 应用一般整页加载,而导致响应比较慢。解决这个问题的一个办法是只加载最小的内容区域。 Turbolinks 只从服务器重载某个区域而不是刷新整个页面。 这个改进虽然一定程度上改进了性能,但是相对还是比较慢。Turbolinks 3 将解决这个问题。

 Tubolinks 3 让你可以有选择性的更新部分区域(通过 partial),而大部分页面都不更新。这很像 SPA的工作。你可以选择直接在 server 端完成所有这样的工作,是不是很棒?

  这是一个很赞的特性,目前的趋势朝着单页应用发展。然而,乍一看,它好像需要你去手动管理。这意味着你必须在特定的点上记住程序需要重载的部分。对我来说,这增加了不少代码累赘,而且容易搞砸。就我个人而言,我更喜欢使用React类似的东西,它通过虚拟DOM处理这个很在行。

备注: React的工作方式是:它维护了一个所发生操作的虚拟DOM。然后,比较虚拟DOM和实际DOM的差异,然后只做需要的变更。它确保DOM只有在绝对必要才发生变化且是最小化的。

  不得不说的是,对于那些不喜欢围着JS转的人,这提供了一个即时的性能提升。

  Action Cable

  现在需要项目使使用 Websockets 来推送实时更新到客户端。虽然大多数浏览器已经开始支持这一点,我们任然需要服务器上一个强大的客户端来,管理用户和适当的发送更新信号。这种功能在一些新的框架中已经出现,像 Phoenix for Erlang。Rails 社区需不得不需要求助于第三方解决方案来实现这个,像Pushr.

注意:对于新手来说,Websockets从浏览器开启双工连接是W3C的标准.服务器端可以在需要的时候和客户端通信(比如推送更新)并且同步更新客户端状态而不需要整个页面重新加载.举例来说,这就是Gmail如何在不重新加载真个页面的情况下加载新的邮件.

  通常 Rails 都提供了所有需要建立应用的开箱即用的工具。这也是它为什么如此流行的原因,特别是在一些初创团队。对 Websocket 支持的缺乏社是区中主要的不满的主要原因之一。看起来 Rails 核心团队已经注意到这一点并且开始讨论Action Cable。我们不得不等待一段时间看它是如何在现实生活中工作的,但它任然令人振奋。

  一些新的细节

  Rails 内置 Rake

  对于许多 Rails 新手来说,困惑的原因来自于不得不想出什么时候是有 rake 什么时候使用 rails。现在你不再需要在 rake 和 ralis 命令的上下文直接切换。你可以使用 ralis 命令运行所有的 Rake 任务。比如说:

   rake db:migrate

  将会变成:

  ils db:migrate

  这表面上看起来不太相同,但是对于许多初学者来说会变得简单。Rails 5 也会添加 restart 命令来快速重启应用。

  活动记录(Active Record)的改变

  一个改变是大多数时候忽略了对 tobelongs_to 的更新。当你创建一个 Student 类是 belongs_to 的关联类,创建一个 student 没有相关联的类是可行的。这导致了大量数据的不一致。对 Rails 5 来说,它的父类已经变成强制性的了。如果你在这里尝试插入一个空的记录,活动记录(Active Record)将会抛出异常。

  改变对控制器(Controller)的测试

  如果你测试你的模板并将其渲染到你的控制器,那你就做错了。对你的模板做个简单的变更将会留给你一个不眠之夜,抓住那个罪魁祸首。这就是为什么在 Rails 5 中,assert_template 被废弃的原因。但是,在目前你还会继续使用 assert_select 去检查特定的 DOM 元素。

  如果你已经在一个控制方法内测试了实例变量,你就应该记得 assigns 也应该消失了。

  如果你正在写控制器的测试用例,需要关注 cookies 的新命令,HTTP 返回值和 DB 调用。如果有得话,等等,这听起来像一个集合测试。好吧,你知道我想表达什么了。。。在将来的集成测试中会去掉控制器测试。

注意:点击链Rails Dom testing取等多详细内容和最佳实践

  专注

  在 web 开发中 javascript 扮演着统治地位的今天,web 框架仅仅是在降低更少的 api 服务。Rails 核心团队意识到这点并且在朝向正确的方向。欢迎在评论中加入我们的讨论行列。

  原文地址:http://www.sitepoint.com/whats-new-rails-5/

QQ群:凯发娱乐官网官方群(515171538),验证消息:10000
微信群:加小编微信 849023636 邀请您加入,验证消息:10000
提示:更多精彩内容关注微信公众号:全栈开发者中心(fsder-com)
188bet uedbet 威廉希尔 明升 bwin 明升88 bodog bwin 明升m88.com 18luck 188bet unibet unibet Ladbrokes Ladbrokes casino m88明升 明升 明升 m88.com 188bet m88 明陞 uedbet赫塔菲官网 365bet官网 m88 help
网友评论(共0条评论) 正在载入评论......
理智评论文明上网,拒绝恶意谩骂 发表评论 / 共0条评论
登录会员中心