我感覺到的前端變化

bbear.me發表於2016-01-03

  以前

  作為一個java程式設計師寫的程式碼主要還是後臺的程式碼,雖然開始的時候前後端都寫,但是也是用別人造好的輪子來用,學學html,css,js,jquery,再找一個前端ui框架學學,上手之後我們就可以寫介面,寫後臺了,當然這只是企業的後臺管理專案,介面要求不是特別高,對於網站專案還是需要前端童鞋來設計,佈局,寫好html給到我們,我們轉成jsp,或者各種模板引擎檔案。

  這種模式對前端童鞋要求不是特別高,會設計,切圖,就差不多了,什麼前端元件化,模組化,自動化這些概念都沒有,可能是小公司沒有接觸到,大公司應該很早就開始實踐了。那個時候常用的就是yahoo的yui,和jquery ui還有jquery一系列外掛了等等。

  記得11年到12年的時候移動端的開發特別火,很多人都轉型去做native的開發了,那個時候移動端的開發工資特別高,但是我沒有選擇做移動開發,而是選擇安靜的做個後臺。

  那個時候很多創業公司選擇做產品的時候首先會在移動端發力,先做一個android版本的或者做一個ios版本的,等到積攢一定的使用者量之後在針對多個平臺制定一個版本,因為很多產品可能沒得到有機會做多個版本就已經死了,所以一個產品可能有ios,android,winphone,pc等版本,需要多個團隊來開發一個產品。

  那個時候雖然也有公司用webapp(純html5)和Hybrid來做移動端的開發,但是很多公司還是擔心h5在效能和體驗方面不如原生的好,畢竟移動端最重要的還是使用者體驗,是快,是流暢,那個時候解決方案也沒有像現在這麼多,所以很多公司還是選擇採用原生的開發。

  現在

  隨著h5在移動端的使用越來越多,前端超級火爆的情況下各種框架,各種解決方案層出不窮,一個還沒學會,另一個就出來了,亂花漸入迷人眼,導致沒有經驗的前端人員都不知道應該學什麼好了。 看到網上有童鞋總結了前端近幾年的變化,出來的輪子有多少,大家自己感受一下。

  那些年,一度追捧,一度放棄

  下面,花一些篇幅簡單回顧下 09 年到 15 年前端的發展歷程。

  09 年,基礎類庫完善,尋求突破

  09 年之前,JavaScript 還處於對自身語言的完善過程中,而到了 09 年,JavaScript 類庫已經頗為成熟,jQuery/Prototype/Script.aculo.us/Dojo 等都已經發布了好幾個 stable 版本,各大類庫也是相互吸收優點,不斷完善並提高自身效能,然而功能上已經沒有太多增加的勢頭。部分框架開始了思想上的轉變,更加註重前端開發的組織和結構,條理性強了很多,如 YUI,Dojo 等。

  從 ECMAScript 規範的爭執,開啟了瀏覽器引擎大戰,各大廠商也趁機瓜分 IE6 份額,Chrome 和 Firefox 在這場戰役中取得小勝,V8 也敲響了前端的大門。為了迎合市場的激烈競爭,IE 開始了升級之旅,09 年初發布 IE8,全面相容 CSS2.1。

  而此時,Node.js 和 3G Mobile 這兩隻巨獸開始浮出水面,Web 標準也開始向 HTML5、ECMAScript5.0 靠攏。

  10 年,Web2.0 深入人心,開始效能挑戰

  毫無疑問,這一年,各大巨頭都看清了 HTML5 是 web 發展的未來,在保留原來前端技術的狀態下,都簇擁著拉扯 HTML5 的裙襬。富客戶端應用也在這一年蓬勃生長,ExtJS/Dojo 搖身變為企業級框架,各類元件化概念和產品如約而至。

  延續著 09 年的變化,10 年的前端顯得頗為沉寂,然而在標準的運用和推動上,各大廠商也是十分賣力。IE 9 出來了預覽第三版,iPhone 的 Safari 已經能夠支援眾多 HTML5 內容:Canvas/Video/Audio/Geolocation/Storage/Application Cache/Web SQL Database 等。

  W3C 宣佈成立 Web 效能工作組,Google 和 Mozilla 紛紛推出應用商店,瀏覽器除錯工具也豐富了起來,人們開始更多地關注開發體驗和效能問題。

  11 年,HTML5 抗大旗,Flash 堪憂

  2011 年 HTML5 的技術發展和推廣都向前邁進了一大步,語義明確的標籤體系、簡潔明瞭的富媒體支援、本地資料的儲存技術、canvas 等等各類技術被廣泛應用。這一年,很多 web 開發者也面臨一項技術的抉擇,HTML5 or Flash?從 Flash Player 11.1 開始,Adobe 不再繼續開發面向移動裝置瀏覽器的 Flash 外掛,積極投身於 HTML5,這意味著 Flash 技術的凋零。

  這一年,HTML5 遊戲火爆到了一個高潮,他的低門檻和高收益讓很多開發者眼紅,正因如此,移動端開發工具和除錯工具也日益成熟。jQuery 已經成為大小公司日常開發的標配,成千上萬的 JQ 外掛讓網頁開發變得尤為輕鬆,而隨之而來的也是頁面的臃腫和效能調優的深入探索。

  Node.js 已經悄然崛起,在 github 上的訪問量已經超過了 Rails,國內的雲應用開始嘗試使用 Node.js,Node.js 相關工具也紛紛出來。

  12 年,響應式開發,工程化推進

  隨著硬體技術的發展,各手機廠商又開始騷動起來,為了佔有更多的市場,不斷提高產品的價效比,體驗也得到了不斷的優化。藉著先前兩年 HTML5 颳起的東風,移動端上的 web 開發也顫抖了起來。移動端的開發挑戰不亞於 PC 上對多個瀏覽器的支援,這一年,萌生了眾多移動端框架,如 Sencha Touch/Zepto.js/JQ Mobile 等,相對 PC 端框架,它們更加輕便。

  而移動端的崛起,帶來了許多終端開發難題:多終端適配,多解析度適配,遠端除錯等等,而隨著這些難題一個個被解決,移動端生長的勢頭變得更加強盛。此時 Twitter 也推出了 Bootstrap, 這個前端開發工具包不僅方便了前端,也方便了後端同學,它的出現讓快速建站更加簡單。

  程式設計思想的切換,迎來了 CoffeeScript 和 TypeScript,這兩個預處理語言的出現又為 JavaScript 引來了不少其他方向轉型過來的開發者。JavaScript 的兄弟 Node.js,也在命令列領域開拓了一片不小的疆域,甚至有動搖 Perl 和 Ruby 地位的趨勢。

  在前端工程化上,幾個派系相互爭鬥,產出了 AMD、CMD、KMD 等規範,也衍生了 SeaJS、RequireJS 等模組化工具。前端在這一年很有跳躍感。

  13 年,爆發式增長,百花齊放

  規範和標準上有不少產出。Web Components 的出現給前端開發開闢了新思路;WebDriver 規範的出來推動了自動化測試的程式,ECMAScript 6 的規範草案落地,Webapp 工作小組在這一年也是相當活躍。

  Chrome 瀏覽器在這一年也有了很大的突破,開始支援 SPDY,使用 Blink 取代 webkit 作為 Chromium 的新渲染引擎,Chrome DevTools 的除錯體驗大幅度提升。這一年中,Chrome 連同其他瀏覽器廠商快速推動了各項草案規範的實現。

  語言能力上依舊在增強,並且從 JS 開始擴散到 CSS,出現了 LESS、SASS 和 Stylus 等預處理語言,Web 開發變得更加緊湊。

  而在無線端,應用不再侷限於 Webapp,由於流暢度、效能等方面不能滿足使用者體驗的需求,各大公司開始轉向 Native 方向的研究,進而出現了 Hybrid 和 PhoneGap 的繁榮,它們為 JS 呼叫了提供更多的裝置 API。

  Node.js 大放異彩,很多公司在生產環境中使用 Node.js,同時也出現了諸如 Express、Meteor 等小巧的快速搭建 Node.js Server 的應用框架。

  各瀏覽器的除錯也是種類繁多、功能豐富,PhantomJS 在自動化測試上開始取代 Selenium,出現了眾多的遠端除錯方案和工具。

  前端工程化開始普及,各公司開始推出自己的前端整合開發解決方案。

  14 年,移動端的崛起,HTML5 和 ES6 落地

  HTML5 正式定稿,這意味著,web page 正式演變為 web application。ES6 華麗麗走進前端,走的很穩重,它的 Module/Class 等特性已經完全讓這們語言具備了開發大型應用的能力。

  大而厚的基礎庫難以滿足靈活場景,Mobile 要求極致體驗,MV* 庫鋪卷而來,如 avalon/angular/knockout 等。

  Web Components 跨終端元件快速發展,移動端開發迎來一次昇華。Node.js 前後端分離的流行,中間層的出現改變了前後端的合作模式。

  2014 是顛覆式的一年,前端發展在這一年開始形成了一個短暫的穩定格局。

  15 年,觀念的轉變,步入前端工業化生產

  今年格外引人注目的框架是,類 React。Facebook 在 React.js Conf 2015 大會上推出了基於 JavaScript 的開源框架 React Native,它結合了 Web 應用和 Native 應用的優勢,可以使用 JavaScript 來開發 iOS 和 Android 原生應用。在 JavaScript 中用 React 抽象作業系統原生的 UI 元件,代替 DOM 元素來渲染等。敲一次程式碼,能夠執行在多個平臺上,其優勢可見一斑。除了 React ,還有手機淘寶推出的 Weex 框架,它吸收了 vue.js 的程式設計精華,程式設計風格更加簡約。

  在眾多構建工具中,如今瀟灑存活的並不多。體驗完 grunt 和 browserify 後,gulp 順勢而至,爾後又出現了 webpack、jspm 等。而包管理工具,經歷了 components、bower、spm 後,npm 開始主導整個市場。

  Node.js 的應用已經鋪天蓋地,各大公司前端都把 Node.js 作為分離前後端的主要手段,並且在測試、監控等方面沉澱了大量內容。不過,這個市場是很苛刻的,Node.js 的效能難以達到 C/C++ 的水平,那麼接下來要做的就是要提升效能,至少得接近 C/C++。

  參考:http://www.barretlee.com/blog/2015/12/10/after-framework-we-gonna-to-hug-data/

  雖然出來的東西多,但是各種東西各有各的應用場景,還是可以根據需要選擇相應的框架和解決方案,就像大家經常說的不為技術而技術,為了業務而技術(相信還是有很多童鞋感覺某個東西高大上,而沒有太多考慮試用場景,當做自己學習和實踐的用到生產環境環境中吧)。

  所以現在創業公司做產品首選的應該是Hybrid來做移動開發,一套程式碼可以跑在移動端瀏覽器,可以打包成android的app和ios的app(打包可以瞭解cordova(首選),appcan, APICloud等等),後期在根據發展開發其他的比如pc web版本。這樣一來不僅節約時間成本,也節約了金錢成本,後期的維護也只需要維護一套程式碼,是不是感覺比之前的多套程式碼好很多。

  自從14年我一直很關注前端的變化與發展,所以我覺得我現在不能再錯過h5的浪潮了,我覺得只有瞭解前後端才能有一個更加全面的視野來做產品,來把一個東西做好,做技術選型的時候也更加得心應手了。雖然我之前也會一些前端技術,但是跟現在大家常說的大前端比起來,感覺還是會得太少。

  我經常在專案強調前端優化的重要性,可能由於歷史原因其他童鞋並不以為然,那個時候覺前後端都由自己來掌控多好。所以從現在開始有時間就要好好學習一下大前端了。畢竟有基礎,上手應該也快。希望在技術的道路上,越走越遠。

  以後

  以後前端的發展必然是越來越火,出來的輪子和解決方案也會越來越多,雖然一個輪子出來可能很快就會被替換掉,增大了我們的學習成本,但這也是證明了前端是在良性發展,就像我們常說的“長江後浪推前浪”,更好的東西出來了就應該替換掉舊的東西,當然舊的輪子經過時間和市場的檢驗當然更加穩定,更加成熟。

  在選擇上就仁者見仁,智者見智了,希望還是從業務場景出發吧。既然選擇了技術這條路,就努力走下去吧。

  這也算我的一個年終總結,有誤的地方希望大家糾正。最後,祝所有人“新年快樂”!

相關文章