本文中,我們將一同看看當今 Web 開(kāi)發(fā)的發(fā)展趨勢,給大家分享我對 2015 年及未來(lái)的一些看法、觀(guān)察和預測。我從 2000 年就開(kāi)始做 Web 技術(shù)方面的工作,而近幾年主要是做云架構解決方案。作為一名 Web 開(kāi)發(fā)者,我曾在 .Net、Node.js 和 Go 技術(shù)棧上開(kāi)發(fā) Web 應用和 Web 服務(wù)。最近,我將 Web 技術(shù)和開(kāi)發(fā)趨勢作為整體研究了一遍,在這里分享一下我的想法和觀(guān)察結果。
首先,讓我分享一些我所觀(guān)察到的可用性和體系結構目前的趨勢。
可用性的趨勢
如今,用戶(hù)體驗變得比以往更重要,響應式網(wǎng)頁(yè)設計(RWD)也成為了網(wǎng)站必備的特性。RWD 能讓最終用戶(hù)在不同尺寸的設備上訪(fǎng)問(wèn)網(wǎng)站,包括手機和平板瀏覽器。有了 RWD 取代移動(dòng)網(wǎng)站,我們便無(wú)需為移動(dòng)用戶(hù)單獨開(kāi)發(fā)額外的網(wǎng)站。特別是當我們需要把焦點(diǎn)放到如何呈現內容時(shí)尤為有用。但如果你是在開(kāi)發(fā) Web 應用(包含著(zhù)大量 UI 交互流程)而不是網(wǎng)站時(shí),RWD 就幫不了你了。記住 Web 應用與網(wǎng)站是不同的。Twitter Bootstrap 與 Zurb Foundation 算是目前最流行的 RWD 框架。如果你要針對移動(dòng)用戶(hù)開(kāi)發(fā) APP 我會(huì )建議使用輕量級的框架比如 Yahoo Pure CSS 。
應用程序架構的趨勢
企業(yè)中的移動(dòng)優(yōu)先策略同樣影響到了 Web 開(kāi)發(fā)架構。當一個(gè)組織在開(kāi)發(fā) Web 應用與 Web 服務(wù)時(shí),他們會(huì )以自身的移動(dòng)策略作為主方向調整。且如今,Web API 已成為 Web 應用和移動(dòng)應用的中心,開(kāi)發(fā)者會(huì )在服務(wù)器端建立 RESTful 服務(wù),然后基于 RESTful 服務(wù)為 Web 和移動(dòng)開(kāi)發(fā)前端應用。
API 驅動(dòng)開(kāi)發(fā)的崛起
在移動(dòng)領(lǐng)域,API(特別是 RESTful API)已成為 Web 應用的關(guān)鍵部分,而服務(wù)器端的實(shí)現已變成薄薄的一層,只提供數據和安全相關(guān)的 API 。這些 RESTful API 并不受限于 Web 應用,移動(dòng)應用同樣可以使用。所以說(shuō)現代 Web 開(kāi)發(fā)人員編寫(xiě)的服務(wù)器端代碼同時(shí)用于移動(dòng)應用和 Web 應用,給予了我們更多的機會(huì )。這里的另外一個(gè)趨勢是移動(dòng)后端云服務(wù)的興起,如 Parse和 Azure Mobile Services 等的服務(wù)(MBaaS)云平臺解決方案。這些 MBaaS 平臺可針對多種特定移動(dòng)后端服務(wù)的數據模型提供自動(dòng)的 RESTful API 。我們可以使用 MBaaS 服務(wù)開(kāi)發(fā) Web 應用,因為它們不僅提供 RESTful API ,伴隨著(zhù)移動(dòng) SDK 還提供了 JavaScript SDK 用于 HTML5 客戶(hù)端。未來(lái),我堅信 MBaaS 服務(wù)將廣泛用于 Web 應用和移動(dòng)應用。
單頁(yè)面應用程序(SPA)的出現
當使用 RESTful API 的服務(wù)器端受限時(shí),Web 前端開(kāi)發(fā)便遷移到客戶(hù)端,且瀏覽器上的類(lèi)桌面 UI 是在客戶(hù)端渲染而不是在服務(wù)器端。在 SPA 應用中,前端只需簡(jiǎn)單的調用 RESTful API 傳送數據,然后在客戶(hù)端構建完整的 UI 。這種情況下,JavaScript 便成為構建 Web 應用的關(guān)鍵技術(shù)。SPA 應用的一個(gè)優(yōu)勢是我們可以使用雜交移動(dòng)容器(hybrid mobile container)比如 Phonegap 和 Trigger.IO 很容易地將這些 Web 應用打包成移動(dòng)應用。這種方法可以應付小型到中型基于數據形式 UI 的應用。于是我們就可以用一份代碼建立 Web 應用和移動(dòng)應用了。
在基于 SPA 的 Web 開(kāi)發(fā)中,JavaScript 已成為關(guān)鍵技術(shù),而且 JavaScript 技能也比以前更加重要。我曾接觸過(guò)不同框架開(kāi)發(fā)過(guò)一些 SPA 應用,并在這種模型下注意到了一些難題。如下:
我對 SPA 框架的意見(jiàn)
目前AngularJS、EmberJS 和 Backbone 是實(shí)際使用中最受歡迎的幾個(gè) SPA 框架。我對這三個(gè)框架做了評估并使用其開(kāi)發(fā)過(guò)應用。根據我的經(jīng)驗,AngularJS 是產(chǎn)能最高的框架,具備構建大型 SPA 應用所需的特性。依愚人之見(jiàn),使用 MV* 框架做前端開(kāi)發(fā)并不是一個(gè)好方法,MVC 不適合大型前端應用。但如今我們在服務(wù)器端和客戶(hù)端都使用 MVC ,我不認為這是最佳實(shí)踐。
ReactJS – 令人驚嘆的前端框架
當大多數 SPA 框架依然在使用傳統的 MVC 模型時(shí),ReactJS 為客戶(hù)端構建 UI 提供了一種不同的方式。React 是由 Facebook 和 Instagram 團隊開(kāi)發(fā)的 JavaScript 庫,目的是用來(lái)構建用戶(hù)界面。Instagram 網(wǎng)站的整個(gè)前端和 Facebook 網(wǎng)站的一部分都是用 ReactJS 構建的。有趣的是,你可以與其他的前端框架如 AngularJS 和 EmberJS 一起使用 ReactJS 。你可以將 ReactJS 作為 MVC 框架的視圖層。但是在實(shí)踐中,我不建議在傳統的 MVC 框架上使用 ReactJS 。ReactJS 引入了虛擬 DOM(Virtual DOM),這就是 ReactJS 庫令人驚嘆的部分,它給渲染 UI 帶來(lái)了高性能的表現。ReactJS 提供了比 AngularJS 與 EmberJS 等 MVC 框架更高性能的 UI 渲染。你可以利用虛擬 DOM 抽象出可重用的 UI 組件,然后在實(shí)際的 DOM 上合成這些組件。虛擬 DOM 讓你可以利用 React 在瀏覽器以外構建 UI 。比如 Facebook 的 React 團隊搭建了 Objective C 橋,用于在 iOS 應用上構建 UI 。對于擴展前端應用,我們可以對 React 使用 Flux 架構,這是架構的一套基本慣例,提供了單方向的數據流。我已經(jīng)對 BackboneJS、EmberJS、AngularJS 和 React 都做了評估并強烈推薦你使用 React 構建用戶(hù)界面。
2014 年服務(wù)器端Web技術(shù)棧的趨勢
幾年以前,動(dòng)態(tài)類(lèi)型語(yǔ)言如 Ruby 和 Python 已經(jīng)吸引了許多創(chuàng )業(yè)公司。直到幾年前,Ruby on Rails 真是 Web 開(kāi)發(fā)的一場(chǎng)革命。許多創(chuàng )業(yè)公司已經(jīng)利用 RoR 和 Python Web 框架開(kāi)發(fā)出各種創(chuàng )新的產(chǎn)品。但如今有趣的是,由于性能和可擴展性的難題,這些應用程序正被其它的 Web 技術(shù)棧重建。在大型應用程序中使用動(dòng)態(tài)類(lèi)型語(yǔ)言就像在喝加了太多糖的飲料。開(kāi)始的時(shí)候,糖的甜味會(huì )比較吸引人,但長(cháng)期來(lái)看就會(huì )傷害到應用程序的健康。今年,我們已經(jīng)看到很多企業(yè)采用 Node.js 尤其是用于構建備受關(guān)注的移動(dòng)應用后端服務(wù)。大企業(yè)如領(lǐng)英(LinkedIn)和沃爾瑪(Walmart)正在使用 Node.js 加強它們的移動(dòng)后端服務(wù)。作為一項新技術(shù),Node.js 真是 2014 年采納市場(chǎng)的贏(yíng)家。Node.js 也是移動(dòng)后端服務(wù)(MBaaS)云解決方案的首選技術(shù)棧。今年我們也看到許多基于 Node.js 的命令行工具被用于前端開(kāi)發(fā)。Node.js 的崛起與 Ruby 棧的衰落是今年最值得注意的趨勢。
這里是一些服務(wù)器端 Web 棧的觀(guān)察結果:
對2015年及以后的預測
哪種技術(shù)會(huì )稱(chēng)霸 2015 年?哪種技術(shù)會(huì )失去其勢頭?我深深地感受到使用動(dòng)態(tài)語(yǔ)言做 Web 開(kāi)發(fā)的時(shí)代就要結束了。而 Node.js 會(huì )再接再厲在新興技術(shù)市場(chǎng)乘勢而上嗎?我不這么認為。自 2011 年起我已經(jīng)主要在寫(xiě) Node.js 代碼并打算為此寫(xiě)一本書(shū),但后來(lái)還是放棄了這個(gè)計劃。最近我已離開(kāi)了 Node.js 平臺,原因如下:
我使用 Node.js 的這些問(wèn)題其他人也會(huì )有,在出錯處理、調試和可用性上還會(huì )有許多實(shí)用性方面的問(wèn)題。我相信可維護性將是大型 Node.js 應用的一個(gè)大難題。如果你在 Node.js 上構建 RESTful 服務(wù),我強烈建議你使用沃爾瑪開(kāi)發(fā)的 Hapi.js 框架,它真的做得很好。我非常欣賞 Hapi.js 的作者 Eran Hammer 。
在 2015 年我看好 Go 語(yǔ)言,不僅僅是用于 Web 開(kāi)發(fā),還作為構建分布式應用的一個(gè)技術(shù)生態(tài)系統。對我來(lái)說(shuō),Go 是比 Node.js 更好的選擇。我預測 2015 年許多 Ruby 和 Node.js 開(kāi)發(fā)者會(huì )遷移到 Go 。
接下來(lái)是我對 2015 年及以后的一些預測:
Go:2015 及未來(lái)的技術(shù)
最近出現了許多用Go開(kāi)發(fā)的優(yōu)秀應用,包括Docker和Packer.IO 。我預測Go將會(huì )在各種不同的社區中產(chǎn)生巨大的吸引力,包括 Java、Ruby、Python 和 Node.js 。Go 是靜態(tài)類(lèi)型語(yǔ)言卻提供了動(dòng)態(tài)類(lèi)型語(yǔ)言生產(chǎn)力的靈活性。在Go語(yǔ)言中,并發(fā)性是核心編程語(yǔ)言的一等公民。類(lèi)似 C 和 C++,Go編譯成原生機器碼;而不像 Java 和 .Net ,它不需要任何JIT 編譯。我愛(ài)上了 Go 的簡(jiǎn)單性、實(shí)用的設計和相當好用的包系統。也許它不適合構建傳統的Web應用,但絕對適合做提供 RESTful 服務(wù)的 HTTP 服務(wù)器。在未來(lái),你也許還可以用 Go 開(kāi)發(fā) Android 應用。Go 的優(yōu)勢是它是一種通用編程語(yǔ)言,可以用于任何可能的場(chǎng)景 – 包括系統編程和大型分布式商業(yè)應用。我強烈感受到 Go 是屬于云時(shí)代的分布式、并發(fā)、并行計算的語(yǔ)言。Go可以在企業(yè)中成為下一個(gè) Java 。
英文來(lái)自:shijuvar
本文由伯樂(lè )在線(xiàn) Jaward華仔翻譯
聯(lián)系客服