成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

你必須知道的Rails 5新特性

移動開發
Rails 5 即將在 2015 年秋季發布,新版本擁有很多令人激動的特性。如果你使用 Rails 開發商城,那你必須使你的應用準備好迎接新的 Rails 新特性。

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 任務。比如說:

 

  1. rake db:migrate 

將會變成:

 

  1. rails 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 核心團隊意識到這點并且在朝向正確的方向。歡迎在評論中加入我們的討論行列。

責任編輯:chenqingxiang 來源: oschina
相關推薦

2019-05-30 08:25:50

5G4G網絡

2015-10-27 10:22:47

Html5API調用

2020-02-28 14:05:00

Linuxshell命令

2017-12-07 15:47:25

2012-09-29 09:22:24

.NETGC內存分配

2012-09-29 10:29:56

.Net內存分配繼承

2017-12-07 15:28:36

2021-10-29 08:44:22

推拉機制面試broker

2013-06-26 09:01:22

JVMJava

2013-06-26 11:23:40

JVM命令行JavaJVM

2018-03-29 01:33:53

5G有線無線

2011-11-30 09:09:13

王濤Windows Pho移動開發

2017-10-11 15:50:18

光纖通信傳輸

2015-07-23 10:37:13

Linux命令

2021-03-01 07:34:42

Java泛型ArrayList

2024-03-29 13:17:03

Docker數據卷Volume

2011-05-11 15:28:05

2012-11-05 09:19:37

2023-02-16 13:31:22

2017-07-04 08:59:35

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕一二三 | 久久久久国产 | 久久免费精品 | 国产一区二区在线免费观看 | 日韩影音 | 日韩一区二区三区在线观看视频 | 国产91久久精品一区二区 | 国产小视频在线观看 | 欧美日韩福利视频 | 日韩欧美在线观看 | 999国产视频 | 操网站 | 国产电影一区二区三区爱妃记 | www.久草.com| 亚洲成人播放器 | 亚洲精品一区二区在线观看 | 不卡视频一区二区三区 | 日韩中文字幕一区二区 | 北条麻妃99精品青青久久 | 黄视频网站免费观看 | 天天操夜夜操 | 国产精品明星裸体写真集 | 色综合色综合网色综合 | 国产农村一级片 | 国产精品大全 | 日韩a视频 | 俺去俺来也www色官网cms | 婷婷精品 | 久久亚洲二区 | www.亚洲视频.com | 日韩无 | 91精品国产一区二区三区 | 国产精品久久久久久久久久 | 久久久久久国产一区二区三区 | 伊人网91 | 亚洲精品久久久久中文字幕欢迎你 | 久久久久国色av免费观看性色 | 日韩一区中文字幕 | 成人一区二区三区在线观看 | 高清视频一区二区三区 | av一区二区三区四区 |