中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Rails 5 有什么新特性?

2018-07-20    來源:編程學(xué)習(xí)網(wǎng)

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用

  Rails 5 即將在 2015 年秋季發(fā)布,新版本擁有很多令人激動(dòng)的特性。如果你使用 Rails 開發(fā)商城,那你必須使你的應(yīng)用準(zhǔn)備好迎接新的 Rails 新特性。

  別擔(dān)心!我們會(huì)在新版本到來之前讓你了解新特性,現(xiàn)在就讓我們讓你了解有哪些新特性,這將會(huì)大大提高你的開發(fā)能力。

  主要改進(jìn)

  有很多新特性將從根本上改變我們使用 Rails 的方式。比如說 Action Cable 和改進(jìn)的 Turbolinks 新特性,能夠立馬提高我們開發(fā) Rails 應(yīng)用的工作流程。讓我們看一些這兩個(gè)新特性的細(xì)節(jié)。

  合并 Rails API

  在過去的幾年中,得益于 Backbone.JS 和 Angular.JS 類庫,單頁面應(yīng)用程序(SPA)得到了發(fā)展。我在近期開發(fā)的幾個(gè)單頁面應(yīng)用程序借助了 Rails 的威力。我曾經(jīng)嘗試涉獵 Sinatra 項(xiàng)目甚至純粹的 Rack 項(xiàng)目,但是最終的結(jié)果都是寫了大量 的boilerplatee 項(xiàng)目。我的做法沒有參照 Rails,而且需要處理很多安全缺陷。我不得不在 rails-api 的社區(qū)驅(qū)動(dòng)上層和傳統(tǒng)的 rails 上進(jìn)行開發(fā)。

  在 Rails 5 中,rails-api 被整合到核心包中,并且能夠像簡(jiǎn)單 JSON API 那樣子使用 Rails。結(jié)合個(gè)人經(jīng)歷,我認(rèn)為這是一個(gè)偉大的改進(jìn)。我不再用為我的 JavaScript 客戶端建立后臺(tái) API 發(fā)愁了。

  Ruby 2.2.1

  Ruby 2.2 是 Ruby 社區(qū)的一個(gè)新版本。不僅僅帶來了Ruby巨大的性能提升,還引入了大量的新功能。此外,symbols的垃圾收集獲取了廣泛的好評(píng)。有這樣一個(gè)傳說,當(dāng)這個(gè)聲明發(fā)布的時(shí)候,龍族的Valeria在Seventh王國(guó)落下了玫瑰雨。OK!也許我扯得太遠(yuǎn)了,但是一般來說是這樣的。

注意:在遷移你的Rails 5之前你需要確認(rèn)你的應(yīng)用可以在Ruby 2.2.1上工作。

  由于這些增強(qiáng)功能,Ruby 2.2+對(duì)Rails 5來說是一個(gè)可靠的選擇。Rails 5將僅支持在Ruby 2.2.1以上的版本上工作。

  Turbolinks 3

  傳統(tǒng)的 web 應(yīng)用一般整頁加載,而導(dǎo)致響應(yīng)比較慢。解決這個(gè)問題的一個(gè)辦法是只加載最小的內(nèi)容區(qū)域。 Turbolinks 只從服務(wù)器重載某個(gè)區(qū)域而不是刷新整個(gè)頁面。 這個(gè)改進(jìn)雖然一定程度上改進(jìn)了性能,但是相對(duì)還是比較慢。Turbolinks 3 將解決這個(gè)問題。

 Tubolinks 3 讓你可以有選擇性的更新部分區(qū)域(通過 partial),而大部分頁面都不更新。這很像 SPA的工作。你可以選擇直接在 server 端完成所有這樣的工作,是不是很棒?

  這是一個(gè)很贊的特性,目前的趨勢(shì)朝著單頁應(yīng)用發(fā)展。然而,乍一看,它好像需要你去手動(dòng)管理。這意味著你必須在特定的點(diǎn)上記住程序需要重載的部分。對(duì)我來說,這增加了不少代碼累贅,而且容易搞砸。就我個(gè)人而言,我更喜歡使用React類似的東西,它通過虛擬DOM處理這個(gè)很在行。

備注: React的工作方式是:它維護(hù)了一個(gè)所發(fā)生操作的虛擬DOM。然后,比較虛擬DOM和實(shí)際DOM的差異,然后只做需要的變更。它確保DOM只有在絕對(duì)必要才發(fā)生變化且是最小化的。

  不得不說的是,對(duì)于那些不喜歡圍著JS轉(zhuǎn)的人,這提供了一個(gè)即時(shí)的性能提升。

  Action Cable

  現(xiàn)在需要項(xiàng)目使使用 Websockets 來推送實(shí)時(shí)更新到客戶端。雖然大多數(shù)瀏覽器已經(jīng)開始支持這一點(diǎn),我們?nèi)稳恍枰⻊?wù)器上一個(gè)強(qiáng)大的客戶端來,管理用戶和適當(dāng)?shù)陌l(fā)送更新信號(hào)。這種功能在一些新的框架中已經(jīng)出現(xiàn),像 Phoenix for Erlang。Rails 社區(qū)需不得不需要求助于第三方解決方案來實(shí)現(xiàn)這個(gè),像Pushr.

注意:對(duì)于新手來說,Websockets從瀏覽器開啟雙工連接是W3C的標(biāo)準(zhǔn).服務(wù)器端可以在需要的時(shí)候和客戶端通信(比如推送更新)并且同步更新客戶端狀態(tài)而不需要整個(gè)頁面重新加載.舉例來說,這就是Gmail如何在不重新加載真?zhèn)頁面的情況下加載新的郵件.

  通常 Rails 都提供了所有需要建立應(yīng)用的開箱即用的工具。這也是它為什么如此流行的原因,特別是在一些初創(chuàng)團(tuán)隊(duì)。對(duì) Websocket 支持的缺乏社是區(qū)中主要的不滿的主要原因之一?雌饋 Rails 核心團(tuán)隊(duì)已經(jīng)注意到這一點(diǎn)并且開始討論Action Cable。我們不得不等待一段時(shí)間看它是如何在現(xiàn)實(shí)生活中工作的,但它任然令人振奮。

  一些新的細(xì)節(jié)

  Rails 內(nèi)置 Rake

  對(duì)于許多 Rails 新手來說,困惑的原因來自于不得不想出什么時(shí)候是有 rake 什么時(shí)候使用 rails,F(xiàn)在你不再需要在 rake 和 ralis 命令的上下文直接切換。你可以使用 ralis 命令運(yùn)行所有的 Rake 任務(wù)。比如說:

   rake db:migrate

  將會(huì)變成:

  ils db:migrate

  這表面上看起來不太相同,但是對(duì)于許多初學(xué)者來說會(huì)變得簡(jiǎn)單。Rails 5 也會(huì)添加 restart 命令來快速重啟應(yīng)用。

  活動(dòng)記錄(Active Record)的改變

  一個(gè)改變是大多數(shù)時(shí)候忽略了對(duì) tobelongs_to 的更新。當(dāng)你創(chuàng)建一個(gè) Student 類是 belongs_to 的關(guān)聯(lián)類,創(chuàng)建一個(gè) student 沒有相關(guān)聯(lián)的類是可行的。這導(dǎo)致了大量數(shù)據(jù)的不一致。對(duì) Rails 5 來說,它的父類已經(jīng)變成強(qiáng)制性的了。如果你在這里嘗試插入一個(gè)空的記錄,活動(dòng)記錄(Active Record)將會(huì)拋出異常。

  改變對(duì)控制器(Controller)的測(cè)試

  如果你測(cè)試你的模板并將其渲染到你的控制器,那你就做錯(cuò)了。對(duì)你的模板做個(gè)簡(jiǎn)單的變更將會(huì)留給你一個(gè)不眠之夜,抓住那個(gè)罪魁禍?zhǔn)。這就是為什么在 Rails 5 中,assert_template 被廢棄的原因。但是,在目前你還會(huì)繼續(xù)使用 assert_select 去檢查特定的 DOM 元素。

  如果你已經(jīng)在一個(gè)控制方法內(nèi)測(cè)試了實(shí)例變量,你就應(yīng)該記得 assigns 也應(yīng)該消失了。

  如果你正在寫控制器的測(cè)試用例,需要關(guān)注 cookies 的新命令,HTTP 返回值和 DB 調(diào)用。如果有得話,等等,這聽起來像一個(gè)集合測(cè)試。好吧,你知道我想表達(dá)什么了。。。在將來的集成測(cè)試中會(huì)去掉控制器測(cè)試。

注意:點(diǎn)擊鏈Rails Dom testing取等多詳細(xì)內(nèi)容和最佳實(shí)踐

  專注

  在 web 開發(fā)中 javascript 扮演著統(tǒng)治地位的今天,web 框架僅僅是在降低更少的 api 服務(wù)。Rails 核心團(tuán)隊(duì)意識(shí)到這點(diǎn)并且在朝向正確的方向。歡迎在評(píng)論中加入我們的討論行列。

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

標(biāo)簽: 安全 代碼 服務(wù)器 服務(wù)器端 通信

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:Java:面向未來的七大強(qiáng)力新特性

下一篇:Android 開發(fā)有哪些新技術(shù)出現(xiàn)?