前端進化史——The Evolution of Front End Development

本文爲了藝術效果,將前端和後端設計成了對手。實際上二者應是相輔相成,互相協作,密不可分的關係。要想做好web開發,只守着自己前端或者後端的一畝三分地,是一定會遇到瓶頸的,請各位看官放正心態,領會本文的思想,切勿上綱上線,自尋煩惱。

混沌初開,乾坤始奠(1995之前)

此時,“前端”這個詞還沒有任何概念,普通人還無法愉快的使用互聯網,直到一個新事物的誕生,創世者稱之爲——瀏覽器

如果互聯網是一方世界,那麼 Tim Berners-Lee 便是整個世界的創世者。爲了讓歐洲核子研究組織的一幫科學家,更方便對文檔、論文進行傳遞和分享。互聯網之父——Tim Berners-Lee,創造了HTML的雛形以及第一個網頁瀏覽器WorldWideWeb。從此,屬於互聯網瀏覽器的時代,正式開啓。這期間值得一提的一件事,是兩位上仙的打架——IE vs 網景,後世稱之爲“第一次瀏覽器大戰”。此次大戰,造成了很大的混亂,二者爲了競爭,提出了很多互不兼容的標準,這對於當時的開發者來說,實在是配得上“混沌”二字。最終的結果大家已經知道了,IE以96%的市場份額,榮登“諸神之王”的寶座。此役之後,IE一直沉浸在自己光環下,早已忘了進取和競爭爲何物,在第二次瀏覽器大戰之後,被Chrome奪取王座,表面上仗着windows的捆綁似乎保留了幾分面子,實際上口碑已毀,落得個晚節不保,實在可嘆,當然這是後話了。在前端圈裏,逆水行舟,不進則退,看來這個基調早在當時已經定下了。

競爭除了淘汰,也帶來了發展。好在諸神之上還有一個創世者,他有着足夠的權威,在默默地觀察了這一切之後,他制定出了一系列的規則和標準,讓整個互聯網世界能夠有序的發展……

時代特點

  1. 沒有統一的業內標準,瀏覽器之戰使得標準愈加混亂。
  2. 此時的網頁全是靜態網頁。舉個例子,100個論文,要寫100個html,每篇論文的結構都一樣,無法動態注入內容。
  3. CSS,JS什麼的,不存在的,給你個HTML自己玩吧

大事記

  • Tim Berners-Lee是第一個使用超文本來分享資訊的人。他於1990年發明了第一個網頁瀏覽器WorldWideWeb,後來改名爲Nexus。
  • 1991年3月,他把這個發明介紹給了他在CERN工作的朋友。從那時起,瀏覽器的發展就和網絡的發展聯繫在了一起。
  • 超文本置標語言(第一版) -- 在1993年6月發爲互聯網工程工作小組 (IETF)工作草案發布(並非標準)
  • 網景公司在1994年10月發佈了他們的旗艦產品網景導航者。
  • 1995年,微軟通過給予季度費用和部分收入從Spyglass中取得了Spyglass Mosaic的源代碼和授權。從而使IE逐漸成爲微軟專屬軟件。同年8月16日,微軟推出IE 1.0瀏覽器。
  • 1998年,網景公司承認其市場佔有率已無法挽回,這場戰爭便隨之而結束。

天地初定,三生萬物(1995-2005)

正所謂“道生一,一生二,二生三,三生萬物”,HTML、CSS、Javascript俗稱前端三劍客,化生了前端的萬事萬物。雖然一切都還只是初創,但已經有了整個前端世界的基本規則,W3C組織——由互聯網之父 Tim Berners-Lee 創建,便是這最初規則的制定者和完善者。HTML負責承載內容,CSS負責佈局美化,Javascript負責計算交互,三者相輔相成,循環往復,生生不息。IE與網景的瀏覽器大戰也落下了帷幕。至此,前端乃至整個互聯網開始了健康有序的發展。

HTML(HyperText Markup Language),超文本標記語言,標準通用標記語言下的一個應用。作爲前端最基礎的一個元素,伴隨着瀏覽器的誕生一直存在着。開始CSS和JS還都集成在它裏面,CSS用style標籤(甚至直接寫在dom上),JS用script標籤,還不分彼此。直到功能越加複雜之後,三者才分開各自維護。而HTML仍然保持着集成者的角色,只是以鏈接的形式引用CSS和JS。

CSS(Cascading Style Sheets),層疊樣式表。可以說是整個前端屆的化妝師,甚至可以稱爲整容師了。在很長一段時間裏,它都是那種不被重視,又不可或缺的存在。直到CSS3標準的不斷迭代,和瀏覽器性能的不斷提升,讓前端多了更多酷炫吊炸天的效果。可惜,瀏覽器兼容永遠都是CSS的痛,讓人們不能毫無顧忌的使用它的新特性,所以它的發展一直不溫不火。

JS(JavaScript)一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型。曾經不被認爲是一門編程語言,據說Brendan Eich在 1995 年僅花了 10 天就開發出 Javascript,JavaScript 之所以用了 Java 這四個字母完全是行銷上考量,藉由 Java 的名氣使更多人注意到 JavaScript。也許連Brendan Eich都沒有預料到,如今的JS在web領域不但佔據了絕對統治地位,甚至已經開始蠶食起其他語言的領域。當然,此時的JS還很弱小,仍然在積蓄力量不斷的完善自己,一直等待着一個機遇的出現。

隨着互聯網的普及,前端規範越發的發展和完善,衍生出來的新事物也越來越多,越來越高級。其中,一個新的衍生標準,起初未引起人們多大的重視,在沉寂了一段時間後,厚積薄發,一鳴驚人;同時,一個JS的衍生庫正在越發變得耀眼,開始書寫屬於它的歷史。二者攜手開創了web2.0時代……

時代特點

  1. W3C組織成立,各種標準開始出現,並發展迅速
  2. 以PHP爲代表的,動態網頁技術開始出現
  3. HTML4和ECMAScript 3.0具有里程碑式的意義,這兩個標準持續了很長時間
  4. Ajax的雛形已經出現,一場革命正在醞釀中

大事記

  • 萬維網聯盟(W3C)由蒂姆·伯納斯-李於1994年10月離開歐洲核子研究中心(CERN)後成立,在歐盟執委會和國防高等研究計劃署(DARPA)的支持下成立於麻省理工學院MIT計算機科學與人工智能實驗室(MIT/LCS),DARPA曾率先推出了互聯網及其前身ARPANET。——維基百科
  • 1994年一個叫Rasmus Lerdorf的加拿大人爲了維護個人網站而創建了PHP。PHP原意是Personal Home Page,宣傳語是Hypertext Preprocessor(超文本處理者)。PHP實現了與數據庫的交互以及用於生產動態頁面的模板引擎,是Web領域中最主流的服務端語言。
  • HTML 2.0——1995年11月作爲RFC 1866發佈,在RFC 2854於2000年6月發佈之後被宣佈已經過時
  • 1995年網景推出了JavaScript,實現了客戶端的計算任務(如表單驗證)。
  • 1996年底,CSS初稿已經完成,同年12月,層疊樣式表的第一份正式標準(Cascading style Sheets Level 1)完成,成爲w3c的推薦標準。
  • HTML 3.2——1997年1月14日,W3C推薦標準
  • 1997年初,W3C組織負責CSS的工作組開始討論第一版中沒有涉及到的問題。其討論結果組成了1998年5月出版的CSS規範第二版。
  • HTML 4.0——1997年12月18日,W3C推薦標準
  • 1998年6月,ECMAScript 2.0版發佈。
  • 1999年12月,ECMAScript 3.0版發佈,成爲JavaScript的通行標準,得到了廣泛支持。
  • HTML 4.01(微小改進)——1999年12月24日,W3C推薦標準
  • 1999年W3C發佈第四代HTML標準,同年微軟推出用於異步數據傳輸的ActiveX,隨即各大瀏覽器廠商模仿實現了XMLHttpRequest,這標識着Ajax的誕生。
  • 2001年W3C就完成了CSS3的草案規範。CSS3規範的一個新特點是被分爲若干個相互獨立的模塊。

方興未艾,如火如荼(2005-2009)

事物按部就班的發展着,但事實上並沒有表面上看起來的那麼平靜,直到ajax和jQuery的出現,爲互聯網開啓了一個嶄新的時代——web2.0時代。

Ajax即“Asynchronous Javascript And XML”(異步 JavaScript 和 XML)。它顛覆了用戶體驗,也顛覆了人們對前端的認知,人們驚豔於Gmail和谷歌地圖的神奇,才意識到原來前端可以做的更多。它可以做到異步獲取數據,配合jQuery更可以做到局部刷新,做到極致後便發展成爲了之後的SPA(單頁應用)。它的出現,幾乎將後端模板的地盤搶了大半,甚至一些後來者,只知ajax,而不知後端模板爲何物。另外,格式通用這個特點,讓它在接下來的移動互聯網時代更是大放異彩,甚至讓後端的工作量減少了一倍。

jQuery,一個偉大的JS庫,一個在前端歷史上有着不可撼動地位的里程碑。甚至後來的javascript的標準制定也受到了其思想的啓發。它讓開發者的效率提高了數倍,最直接的影響便是越來越多的網頁,以越來越快的速度產生,用戶體驗也越來越好。它重新定義了前端工程師這個職位,在它出現之前,我們更多的被稱爲“切圖的”,根本沒有人會把“前端”和“工程師”聯繫起來。

Ajax與jQuery將前端帶上了一個新臺階,爲前端帶來了飛速的發展,前端進化從此進入了快車道。此時的前端開發,只需要一個瀏覽器和一個文本編輯器,就可以愉快的進行工作。但是,一場更加徹底,影響更加深遠的革命已經在醞釀當中,甚至絕大多數前端工程師都沒有預料到……

時代特點

  1. 前端工作被重新定義,並且飛速發展,“前端工程師”成爲一個新的職位
  2. jQuery爲前端帶來了革命性的改變,直到現在,研究jQuery源碼還是一個快速提高編程能力的捷徑
  3. ECMAScript在10年之後終於發佈了新版本,這其中的故事相信足夠寫一本精彩的小說了
  4. 由於SEO的需求,後端模版仍然佔有部分地盤;但毫無疑問,越來越多的網頁開始使用了ajax
  5. jQuery和Ajax爲前端發展大大提速,他們的影響還會持續一段時間,但是另一場革命已經到來

大事記

  • 2005年初,谷歌使用Ajax技術打造了Gmail和谷歌地圖之後,Ajax獲得了巨大的關注。Ajax是Web網頁邁向Web應用的關鍵技術,它標識着Web2.0時代的到來。
  • 2006年,XMLHttpRequest被W3C正式納入標準。
  • 2006年1月John Resig等人創建了jQuery;8月,jQuery的第一個穩定版本,並且已經支持CSS選擇符、事件處理和AJAX交互。
  • 2007年10月,ECMAScript 4.0版草案發布,對3.0版做了大幅升級,預計次年8月發佈正式版本。草案發布後,由於4.0版的目標過於激進,各方對於是否通過這個標準,發生了嚴重分歧。以Yahoo、Microsoft、Google爲首的大公司,反對JavaScript的大幅升級,主張小幅改動;以JavaScript創造者Brendan Eich爲首的Mozilla公司,則堅持當前的草案。
  • 2008年7月,由於對於下一個版本應該包括哪些功能,各方分歧太大,爭論過於激進,ECMA開會決定,中止ECMAScript 4.0的開發,將其中涉及現有功能改善的一小部分,發佈爲ECMAScript 3.1,而將其他激進的設想擴大範圍,放入以後的版本,由於會議的氣氛,該版本的項目代號起名爲Harmony(和諧)。會後不久,ECMAScript 3.1就改名爲ECMAScript 5。
  • 2009年12月,ECMAScript 5.0版正式發佈。Harmony項目則一分爲二,一些較爲可行的設想定名爲JavaScript.next繼續開發,後來演變成ECMAScript 6;一些不是很成熟的設想,則被視爲JavaScript.next.next,在更遠的將來再考慮推出。

勢不可擋,威震八方(2009-2014)

在人們還沒有消化掉ajax和jQuery帶來的變化時,在人們剛剛開始重新思考前端時,誰都沒有想到,另一場革命已經到來。來的如此迅速,來的如此洶涌。迅速到“自己人”都疲於應付,洶涌到重新定義了前後端的格局。這一切只因一個開拓者——Node.js。

Google的V8引擎,讓javascript的運行效率有了極大的提升,Node.js既是在此背景下誕生的。它讓JS的運行脫離了瀏覽器環境,可以直接運行在PC上,甚至可以運行在服務器上提供後端服務。並且因爲JS天生異步的性質,不需要考慮複雜的“鎖”,尤其在處理I/O操作上優勢更加的明顯。這讓人們開始考慮它在後端提供服務的可能。沒錯!前端已經打到了後端的門口了,曾經被後端固守的模板領域,也已經被徹底攻陷。還有比這更顛覆的嗎?!此時只想說一句,“還!有!誰!!”

Node.js帶來的影響是多方面的,超出了所有人的預料。如果說之前前端的發展是開着飛機的話,那麼現在真的算是坐着火箭了。

首先,JS能夠在PC上運行了,那麼編譯文件肯定是可行的了。於是各種開發工具像火山噴發一樣噴薄而出。來一張不太準的github統計圖大家體會一下。

CSS方面,終於有了突破性的發展,less、sass的出現爲CSS帶來了新的生機,也讓人們對CSS的關注多了一些;

JS方面,除了各種壓縮、混淆、打包的工具之外,更是出現了browserify、grunt等工程化的框架,從此前端也有了工程化;

在服務端方面,express、koa開始登上舞臺,並且衍生出了更多的後端框架;

最後,第一個著名的SPA框架——AngularJS出現了,這簡直又是一次顛覆。沒錯,我又用了顛覆,除了顛覆,我真想不到用什麼其他的詞了。它的出現,已經開始對jQuery的統治地位產生了影響,顛覆也只是時間的問題。

上面一系列的變化,都發生在短短的幾年時間裏。想象一下,這相當於將一些成熟後端語言的發展歷程,硬生生的縮短了幾倍的時間。最後造成的結果就是,現在的前端開發,已經跟後端開發無異,需要準備很久的開發環境,安裝各種依賴包,開發時要運行各種命令,甚至啓動一個,乃至多個服務。新人入職,用一整天的時間安裝配置開發環境,都算是高效的了。2年前很火的一個帖子,《2016年裏做前端是怎樣一種體驗》,很好的詮釋了前端開發的複雜度。之前瀏覽器加編輯器就能走天下的時代,一去不復返了。前端工程師的門檻,也越來越高了。

時代特點

  1. 井噴式的發展速度,各種Node.js的包滿天飛,讓人應接不暇
  2. 2010年被稱爲移動互聯網元年,這相當於又開放了一個位面給前端,爲前端的飛速發展又加了一把火
  3. 前端工程師的門檻越來越高,對人員的素質要求也越來越高,相應的,待遇水平也越來越高
  4. 快速學習已經成爲了前端工程師必備的能力,一個流行的框架或工具,你要是在半年內還沒走過它的demo,那你就危險了
  5. 前端工程化和向後端滲透這兩個新方向,讓前端工程師的任務增加了許多,前端不再是一個侷限的職位,大前端的趨勢已經出現

大事記

  • 第一個版本的V8引擎隨着第一個版本的Chrome於2008年9月2日發佈。
  • 2009年5月,Ryan Dahl在GitHub上發佈了最初版本的部分Node.js包,隨後幾個月裏,有人開始使用Node.js開發應用。
  • AngularJS誕生於2009年,由Misko Hevery 等人創建,後爲Google所收購。
  • 2009年12月coffeescript在github開源
  • 2010年2月express在github開源
  • 2010年2月less在github開源
  • 2010年9月sass在github開源
  • 2010年9月browserify在github開源
  • 2011年7月,Node.js在微軟的支持下發布Windows版本
  • 2011年9月grunt在github開源
  • 2013年12月koa在github開源

不忘初心,砥礪前行(2015-至今)

筆者寫到這裏,突然有種恍如隔世的感覺。真的不敢相信,H5、TS、Babel、Webpack、ES6、Vue這些如日中天的存在,僅僅才誕生了3、4年的時間,即使是React也不過5年的時間,前端的發展速度,由此可見一斑。也難怪周圍的同學都有一個相同的口頭禪,“老子TMD學不動了”。現在前端的格局,不,應該說是大前端的格局已經有了趨於寡頭壟斷的穩定趨勢。比如,JS框架這塊已經被React、Vuejs、AngularJS(已經有些力不從心)三者瓜分;工程化這塊,Webpack佔有着絕對的優勢;ES6的發佈,讓Babel成爲了前端開發必不可少的依賴,甚至可以提前使用未發佈的ES7的新特性(我們似乎已經習慣了超前……);CSS預處理這塊,被Postcss、less、sass把持着,不過css-modules大有上來插一腳的意思;服務端,express已經顯得過時,koa已經作爲更底層的依賴,衍生出了更多的後端框架,例如國產的ThinkJS和eggjs;前後端同構方面,React和Vue都給出瞭解決方案,nextjs和nuxtjs分別對其進行了實現;移動端開發方面,ReactNative和Weex蠢蠢欲動,不過貌似進展不是很順利;甚至在嵌入式開發上面,Nodejs也已經有所滲透……

最近的前端圈,已經算是比較太平得了,至少2018年沒有特別顛覆的事情出現,對於每個經歷過前端發展歷程的人來說,似乎有點不太習慣。這幾年剛剛加入前端陣營的小朋友,可算是幸運,也算是不幸。幸運的是一上來就可以用上最佳實踐來開發,具體的原理慢慢參悟;不幸的是沒有經歷過前端發展歷程,似乎少了一些應有的歷練。不過有一點是可以肯定的,想在前端圈混下去,你一刻也不能停,必須不斷地學習與前進。如果你休息個一年半載再出來看,保證你聽不懂圈子裏的人在聊什麼。這次就不寫什麼時代特點了,畢竟身在其中,也不好評說,只有一句,“前端不易,且行且珍惜”~

大事記

  • 2013年5月Facebook開源了React
  • 2014年1月gulp在github開源
  • HTML 5——2014年10月28日,W3C推薦標準
  • 2014年11月Typescript在github開源
  • 2015年1月Babel在github開源
  • 2015年1月Webpack在github開源
  • 2015年4月Postcss在github開源
  • 2015年4月React Native開源
  • 2015年6月17日,ECMAScript 6發佈正式版本,即ECMAScript 2015。
  • 2015年8月,css-modules在github開源
  • 2015年10月,rollup在github開源
  • 2015年10月27日,Vuejs 1.0.0正式發佈
  • 2016年4月21日,阿里巴巴在Qcon大會上宣佈跨平臺移動開發工具Weex開放內測邀請。
  • 2016年5月,Vuejs2.0.0發佈
  • 2016年10月,next.js在github開源
  • 2016年11月,nuxt.js在github開源
  • 2017年2月,koa2發佈
  • TO BE CONTINUE……

參考文獻

https://blog.csdn.net/elwingao/article/details/52412403

https://www.cnblogs.com/kidney/p/6079530.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章