當今想做前端是要學習很多技能的蘸拔,然后不同的崗位所需要的技能又不一樣巨缘,但是有一個技能是不論哪個崗位都要掌握的欣鳖,那就是 JavaScript督惰。
一般來說想了解一個人比較客觀的辦法就是先了解他的過去不傅,他吃的每一粒米飯,讀過的每一本書成就了現(xiàn)在的他赏胚。同樣的访娶,為了更好的了解 JavaScript 這門語言,可以從他的誕生講起觉阅。
JavaScript 誕生于 1995 年崖疤,當時秘车,產生它的主要目的是完善網頁上的表單驗證。在 JavaScript 問世之前劫哼,只有當表單提交到服務器端的時候才會驗證哪些數(shù)據(jù)沒填或者填錯了叮趴,提交后需要等待一段時間以后才有反饋,在人們普遍通過電話撥號上網的年代权烧,網速之慢眯亦,這種等待是十分痛苦的。
當時網景公司決定著手開發(fā)一種 客戶端語言般码,用來處理這種簡單的表單驗證妻率,這里更好的體驗是在提交之前及時發(fā)現(xiàn)錯誤。就職于網景公司的 Brendan(布蘭登) Eich(艾克)為了趕時間板祝,僅僅花了 10 天就完成了 JavaScript 的設計宫静。為什么叫 JavaScript 呢?因為當時 Java 這門語言特別火券时,想蹭一波熱度孤里,除此以外其實和 Java 沒有任何關系。
結果這門語言發(fā)布后異常的火爆革为,網景的競爭對手微軟看不下去了扭粱。為了迎合網站開發(fā)者,微軟在 Windows 自帶的 IE 瀏覽器里面內置類似 JavaScript 的腳本語言 JScript震檩,所以一般 JS琢蛤、JScript 和 JavaScript 指的是同一種東西。
但是這樣畢竟太亂了抛虏,為了統(tǒng)一標準博其,歐洲計算機制造商協(xié)會召集了一些當時各大知名公司里面的有志之士,大家聚集在一起制定這門語言的標準規(guī)范迂猴,于是就有了第一次的真正標準 ECMA-262 第 3 版慕淡,簡 稱 ES3,然后慢慢發(fā)展到 ES5 / ES6 / ES7沸毁。
1999 年微軟網景瀏覽器大戰(zhàn)終于結束了峰髓,微軟憑借著 Windows 平臺下面 IE 的各種優(yōu)勢,市場份額達到了 99%息尺,于是就解散了 IE 的核心團隊携兵,逐漸放棄了 IE 的更新,這之后 IE6 到 IE7 的升級差不多花了 5 年的時間搂誉。
2008 年谷歌公司發(fā)布了基于 V8 引擎的 Chrome[kr??m] 瀏覽器徐紧。到 2012 年市場份額已經達到 32.8%,這時候谷歌、火狐和 IE 在瀏覽器差不多各占 1/3 的份額并级。因為各瀏覽器之間是競爭關系拂檩,所以他們總喜歡為自己產品添加一些其他瀏覽器沒有的新特性吸引用戶和開發(fā)者,當時的開發(fā)者為了讓同一個網頁在不同的平臺上呈現(xiàn)一樣的效果嘲碧,可能一個網頁要寫兩到三套程序稻励,所以這時候是 jQuery 和 Bootstrap 最火的時候,這兩個框架的組合解決的一個痛點問題就是讓同一段代碼在不同瀏覽器上實現(xiàn)相同的效果愈涩。
到目前為止 JavaScript 還都是一門客戶端語言钉迷,也就是說只能運行在瀏覽器端,但是在 2009 年一個叫 NodeJS 的網絡應用平臺出現(xiàn)了钠署,并且使用 JavaScript 作為這個平臺上的實現(xiàn)語言糠聪,這時候 JavaScript 已經可以像 Java 一樣作為網站后端語言了,但是由于 NodeJS 還很年輕谐鼎,這其中有許多不完善的地方舰蟆,一般大型項目的后端還是使用穩(wěn)定的 Java 比較多。
NodeJS 這個平臺的存在使得 JavaScript 終于可以和其他服務端語言一樣讀寫文件狸棍,這對前端有什么影響呢身害?在這之前如果要動態(tài)生成 JavaScript 文件只能通過 Java 或 PHP 等服務端語言,所以每次有大量前端文件要處理的話只能去找后端幫忙草戈,或者自己學習一下寫個腳本塌鸯。但是由于 NodeJS 的存在,JavaScript 也可以進行文件的存取了唐片,興起了一批前端文件的打包工具丙猬,其中的典型是 Grunt[gr?nt] 和 Webpack。由于國內的環(huán)境费韭,Windows 系統(tǒng)特別多茧球,這其中 WinXP 和 Win7 又占據(jù)了大量的用戶,Win7 裝完系統(tǒng)是自帶 IE8 瀏覽器的星持,但是 IE8 瀏覽器在 JavaScript 的版本支持上面只支持到 ES5抢埋,在前端技術如此快得今天,如果還固執(zhí)的使用 ES5 開發(fā)督暂,那注定是要被淘汰了揪垄,這時候一系列轉換插件例如 Babel 便出現(xiàn)了。
隨著除了 IE 之外的其他瀏覽器之間的競爭越來越激烈饥努,瀏覽器的功能越來越豐富,從前簡單的頁面已經滿足不了用戶了卢未,很多桌面應用都慢慢轉變成網頁應用肪凛。隨著網站越來越復雜,一些幫助開發(fā)者快速開發(fā)的 JS 框架便出現(xiàn)了辽社,最早的是谷歌公司的 AngularJS伟墙,誕生于 2009 年,但是由于一些性能上的問題滴铅,谷歌公司最終在兩年后重寫了這個框架戳葵,一般來說 AngularJS 是指老版本(Angular1.x),而 Angular 指的是新版本(Angular2+)汉匙,雖然名字很像拱烁,但這其實是兩個框架,就像 JavaScript 和 Java 這樣的區(qū)別一樣噩翠。除此以外還有臉書的 React 和國產的 Vue戏自,這三種框架里面 React 生態(tài)里面的 React Native['ne?t?v] 又在手機 App 上占據(jù)了大量的市場份額。由于開發(fā)蘋果端的應用和安卓端的需要使用不同的技術伤锚,使用 React Native 的話可以讓一套程序多端運行呈現(xiàn)相同的效果擅笔。