javascript
JavaScript模块化不算漫长的发展史
最近開始學習模塊化開發了,這一篇完全無關任何代碼,就來講一下模塊化的發展史,提高一下專業素養。
目錄
1.萌芽階段
2.困境階段
3.進步階段
4.發展階段
?
JS模塊化發展史大致可以分為4個階段,萌芽,困境,進步,發展,接下來詳細介紹各個階段
1.萌芽階段
JS在誕生之初,是為了實現頁面中的小效果,代碼量非常小。因為程序規模太小,所以即使大家知道這門語言存在缺陷,也不會特意去解決,只需要在開發的時候多加注意便可以避免問題。在這一階段中,因為前端工程量實在太小,所以前后端并沒有分離,前端的工作完全可以由后端工程師捎帶完成。該階段發生的大事:
1)1996年,NetScape將JavaScript語言提交給歐洲的一個標準制定組織ECMA(歐洲計算機制造商協會)
2)1998年,NetScape在與微軟瀏覽器IE的競爭中失利,宣布破產
2.困境階段
隨著AJAX的出現,JS在瀏覽器中扮演的角色開始改變,此時,它已經可以與服務器之間進行交互,以更好的體驗來改變數據。在功能豐富的同時,JS代碼量也逐漸增長,從最初的幾百行,到后來的幾萬行,前端程序逐漸變得復雜。后端開發者壓力逐漸增加,致使一些公司開始招募專業的前端開發者。不過此時,前端開發者的待遇遠不及后端開發者,因為前端開發者承擔的開發任務相對于后端開發來說,還是比較簡單的,通過短短一個月時間的集訓,就可以滿足前端開發的需求。究其根本,是因為以下問題沒有得到解決:
1)瀏覽器解釋執行JS的速度太慢
2)用戶端的電腦配置不足
3)更多的代碼帶來了全局變量污染、依賴關系混亂等問題
以上三個問題成為前端開發揮之不去的陰影和原罪。在這個階段,前端開發處于一個非常尷尬的境地,它在傳統的開發模式和前后端相分離之間無助的徘徊。第二階段的大事件:
1)IE瀏覽器制霸市場后,幾乎不再更新
2)ES4.0流產,導致JS語言10年間幾乎毫無變化
3)2008年ES5發布,僅解決了一些JS的API不足的糟糕局面
3.進步階段
直到2008年,谷歌的V8引擎發布解決了第一個問題。V8引擎將JS的執行速度推上了一個新的臺階,甚至可以和后端語言媲美。隨著摩爾定律持續發酵,個人電腦的配置開始飛躍,第二個問題也得已解決。此時,只剩全局變量污染和依賴混亂的問題,解決了它,前端便可以突破一切障礙,未來無可限量。于是,全世界的前端開發者在社區中激烈的討論,想要為這個問題尋求解決之道
2008年,有一個名叫Ryan Dahl的小伙子正在為一件事焦頭爛額,他需要在服務器端手寫一個高性能的web服務,該服務對于性能要求之高,以至于目前市面上已有的web服務產品都滿足不了需求。經過分析,他確定如果要實現高性能,那么必須要盡可能的減少線程,而要減少線程,避免不了要用異步的處理方案。一開始,他打算用C/C++語言自己編寫,可是這一過程實在太痛苦。就在他一籌莫展的時候,谷歌的V8引擎的發布引起了他的注意。他突然發現,JS引擎不就是最好的實現web服務的語言嗎?他天生就是單線程,并且是基于異步的。有了V8引擎的支撐,它的執行速度完全可以撐起一個服務器。而且V8是鼎鼎大名的谷歌公司發布的,谷歌一定會不斷優化V8,有這種省錢又省力的好事,我為什么還要自己寫呢?于是,他基于開源的V8引擎,對源代碼做了一些修改,便快速完成了該項目
2009年,Ryan推出了該web服務項目,命名為node.js。從此JS第一次堂堂正正地入住后端,不再是必須依附屬于瀏覽器的“玩具”語言了。也是此刻開始,人們認識到,JS也是一門真正的語言,它依附與運行環境(運行時)(宿主程序而執行)。node.js的誕生,便把JS中的最后一個問題放到了臺前,即全局變量污染和依賴混亂問題
要知道,node.js是服務器端,如果不解決這個問題,分模塊開發就無從實現,而模塊化開發是所有后端程序必不可少的內容。經過社區的激烈討論,最終形成了一個模塊化方案,即鼎鼎大名的CommonJs,該方案徹底解決了全局變量污染和依賴混亂的問題。該方案一出,立即被node.js支持,于是,nodejs成為了第一個為JS語言實現模塊化的平臺,為前端接下來的迅猛發展奠定了實踐基礎,該階段發生的大事件:
1)2008年,V8引擎發布
2)IE的市場逐漸被Firefox和chrome蠶食,現已無力回天
3)2009年,nodejs發布,并附帶commonJS模塊化標準
4.發展階段
CommonJS的出現打開了前端開發者的思路,既然后端可以使用模塊化的JS,作為JS語言的老東家瀏覽器為什么不行呢?于是,有人開始想辦法把CommonJS運用到瀏覽器中。雖然這里面存在諸多困難,但是辦法總比困難多,有些開發者就像,既然CommonJS運用到瀏覽器困難,我們干嘛不自己重新定義一個模塊化的標準出來,難道就一定要用CommonJS標準嗎
于是很快,AMD規范出爐,它解決的問題和CommonJS一樣,但是可以更好地適應瀏覽器環境。相繼的,CMD規范出爐,它對AMD規范進行了改進。這些行為收到了ECMA官方的密切關注,于是2015年,ES6發布,它提出了官方的模塊化解決方案——ES6模塊化。從此以后,模塊化成為了JS本身特有的性質,這門語言終于有了和其他語言較量的資本,成為了可以編寫大型應用的正式語言。與此同時,很多開發者、技術廠商早已預見到了JS的無窮潛力,于是有了下面的故事
1)為了使JS能編寫大型應用,需要一些解決復雜問題的開發框架
- 前端開發框架:Angular、React、Vue等
- 后端開發框架:Express、Koa等
- 各種后端數據苦驅動出現
2)要開發大型應用,需要第三方庫的支持
- npm包管理器的出現,使用第三方庫變得極其方便;
- webpack等構建工具的出現,專門用來打包和部署
3)既然JS可以放到服務器環境,為什么不能放到其他終端環境呢?
- Electron發布,可以使用JS語言開發桌面應用程序;
- RN和Vuex等技術發布,可以使用JS語言編寫移動端應用程序;
- 各種小程序出現,可以使用JS編寫依附于其他應用的小程序;
- 目前還有很多廠商致力于將JS應用到各種其他的終端設備,最終形成大前端生態
可以看到,模塊化的出現,是JS通向大型應用的基石,學好模塊化,便具備了編寫大型應用的基本功。
總結
以上是生活随笔為你收集整理的JavaScript模块化不算漫长的发展史的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Fetch API——简化你的AJAX
- 下一篇: CommonJS概述及使用