1994年能夠看作前端歷史的起點,這一年10月13日網景推出了初版Navigator;這一年,Tim Berners-Lee建立了W3C;這一年,Tim的基友發佈了CSS。仍是這一年,爲動態web網頁設計的服務端腳本PHP以及筆者本人誕生。javascript
萬維網(WWW)是歐洲核子研究組織的一幫科學家爲了方便看文檔、傳論文而創造的,這就是爲何Web網頁都基於Document。Document就是用標記語言+超連接寫成的由文字和圖片構成的HTML頁面,這樣的功能已經徹底知足學術交流的須要,因此網頁的早期形態和Document同樣,徹底基於HTML頁面,而且全部內容都是靜態的。html
隨着網頁從學術機構走向公衆社會,網頁承載的功能便超出了學術範圍而變得越發豐富,所以早期網頁的侷限性也逐漸顯露出來。前端
第一,全部的網頁都基於HTML頁面,由於沒有任何手段能夠控制局部內容的顯示和隱藏,所以任何局部的變化哪怕只多出一個標點符號,都只能從新下載一個新的頁面。java
第二,計算任務只能在服務端實現。因爲網速限制,與服務器通訊的過程是很是緩慢的,而且此過程是同步阻塞的,因而會出現這樣的場景:用戶提交一個表單,而後整個頁面消失,瀏覽器呈現白屏,通過漫長的等待,瀏覽器渲染出一個和以前如出一轍的頁面,只不過輸入框旁邊多了一排紅色小字:用戶名錯誤。node
第三,全部頁面都是靜態的,這意味着一個電商網站有一千種商品,哪怕頁面佈局如出一轍,也必須寫一千個單獨的頁面。react
早期網頁形態低下的效率是沒法僅僅經過提升網速解決的。jquery
1994年一個叫Rasmus Lerdorf的加拿大人爲了維護我的網站而建立了PHP。PHP原意是Personal Home Page,宣傳語是Hypertext Preprocessor(超文本處理者)。PHP實現了與數據庫的交互以及用於生產動態頁面的模板引擎,是Web領域中最主流的服務端語言。git
PHP的聖戰程序員
(PHP是最好的語言)-這個梗是怎麼來的?github
1995年網景推出了JavaScript,實現了客戶端的計算任務(如表單驗證)。
Atwood's Law:Any application that can be written in JavaScript,will even-tually bewritten in JavaScript.(任何應用程序能夠用JavaScript寫的,將最終被用javascript所寫。)-------------------------- (via@codinghorror)
1996年微軟推出了iframe標籤,實現了異步的局部加載。
1999年W3C發佈第四代HTML標準,同年微軟推出用於異步數據傳輸的ActiveX,隨即各大瀏覽器廠商模仿實現了XMLHttpRequest。這標識着Ajax的誕生,可是Ajax這個詞是在六年後問世的,特別是在谷歌使用Ajax技術打造了Gmail和谷歌地圖以後,Ajax得到了巨大的關注。Ajax是Web網頁邁向Web應用的關鍵技術,它標識着Web2.0時代的到來。
2006年,XMLHttpRequest被W3C正式歸入標準。
至此,早期的Document(文檔)終於進化爲了Web page(網頁),上述三個侷限都獲得了妥善的解決。
C/S 結構 Client 客戶端/Server 服務器
B/S 結構 Browser 瀏覽器/Server 服務器
早期的網頁開發是由後端主導的,前端能作的也就是操做一下DOM。2006年 John Resig發佈了jQuery,jQuery主要用於操做DOM,其優雅的語法、符合直覺的事件驅動型的編程思惟使其極易上手,所以很快風靡全球,大量基於jQuery的插件構成了一個龐大的生態系統,更加穩固了jQuery做爲JS庫一哥的地位。
起初制約Web開發從後到前的因素很簡單,就是前端不少事幹不了或幹很差,當時的瀏覽器性能弱,標準化程度低。特別是佔據大量市場份額的IE,不只醜陋,而且bug多。
於2008年問世的谷歌V8引擎改變了這一局面。現代瀏覽器的崛起終結了微軟的壟斷時代,前端的計算能力一會兒變得過剩了。標準組織也很是配合的在2009年發佈了第五代JavaScript,前端的裝備獲得了總體性的提升,前端界如同改革開放走進了一個使人應接不暇的新時代。V8就是chrome瀏覽器用的js解釋引擎,主要是C編寫的
2009年AngularJS誕生,隨後被谷歌收購。
2010年backbone.js誕生。
2011年React和Ember誕生。
2014年Vue.js誕生……先後端分離可謂大勢所趨。
後端只負責數據,前端負責其他工做,這種分工模式必定是更清晰也更高效的。隨着基礎設置的不斷完善以及代碼封裝層級的不斷提升,使得前端一我的可以完成的事愈來愈多,這是技術積累的必然結果。就好像今天高中生的知識水平,可能遠遠超過五百年前的科學家,今天要成爲Web全棧工程師,門檻也只會愈來愈低。
2014年,第五代HTML標準發佈。H5是由瀏覽器廠商主導,與W3C合做制定的一整套Web應用規範,至今仍在不斷補充新的草案。咱們能夠清晰的感覺到這一系列規範背後隱含的領導者的勃勃雄心:佔領全部屏幕。
2009年Ryan Dahl發佈了node.JS,node是一個基於V8引擎的服務端JavaScript運行環境,相似於一個虛擬機,也就是說js在服務端語言中有了一席之地。若是說ajax是前端的第一次飛躍,那麼node可算做前端的第二次飛躍。它意味着JavaScript走出了瀏覽器的藩籬,邁出了全端化的第一步。
一種流行的組合就是利用Express和Mongo搭建服務端程序。
Web開疆拓土的步伐並不止於此。
2007年第一代iphone發佈,2008年第一臺安卓手機發布。悄然間互聯網進入了移動時代。移動端的發展進程和PC的歷史一模一樣,一開始都是Native App的天下。但瀏覽器試圖取代操做系統的篡位之心從未消減。相比原生應用,Web APP有太多好處:無須開發兩套系統版本、無須安裝、無須手動升級、無須審覈……我認爲最大的好處以及驅動軟件形態轉向的主要緣由在於下降成本,記得13年的時候韓寒說作一個APP大概須要五十萬,今天網上比較靠譜的分析評估半年時間從零作出一個稍微像樣的APP至少100萬,而開發Web App花的錢必定少得多。
制約Web App的因素有不少,但咱們能夠看到Web App一直在不斷修復缺陷、突破侷限。你說網頁有tab bar,好吧,給你個fullpage API,你說網頁不能調取系統功能,好吧,Geolocation API、Vibration API、Luminosity API、Orientation API、Camera API……你說網頁不像APP有圖標,IOS早就支持在桌面上添加網頁連接的快捷圖標,還得是喬幫主遠見;你說網頁必須聯網,如今離線的方案也不少啊;你說Web App性能差,這個……你說得對,也就是這個緣由,Native App還能做爲主流存在一段時間,但是若是Web App的性能逐漸遇上Native了呢?目前的Hybrid、nw.js、Electron、react native、weex等均可以看作Web App在性能方面向Native靠近的嘗試。更況且半路又殺出個微信小程序。
設想:科技就是爲人類服務的,就算工程師是超人,但其本質也是人類。因此人類會從最開始01的二進制語言,到彙編語言,到今天的愈來愈高級愈來愈天然的開發語言,計算機也是從裸機被愈來愈簡單的操做系統,應用軟件一層一層所封裝。
因此開發應該也是會相似,困難的、反人性的部分應該會不斷的被封裝,從而去不斷的追求低成本,高效率,高兼容性,高安全性,更加接近業務層。
參考文獻:
分享問題:
爲何 JavaScript 有如此多的框架?
如何實現先後端分離?
小公司的前端應該怎麼作?
2017年前端開發手冊一-2016前端技術回顧 2017年前端入門指南簡單版
前端開發者指南(2017)全版