1. 程式人生 > >2018 年,JavaScript 都經歷了什麼?

2018 年,JavaScript 都經歷了什麼?

這些年,JavaScript生態系統異常活躍:

ECMAScript打破多年的沉寂,每年都會給我們帶來新的特性,像async函式這種語法為開發者減少了大量冗餘的程式碼;

JS大家庭的其他成員也都在進步,從前端到後端,從底層的JS引擎到上層的NPM庫,而大家熱愛的Vue正在重寫3.0

就連古老的編輯器也能帶來新的驚喜,Visual Studio Code超越各種其實還不錯的競品,成為最受JSer歡迎的IDE

Microsoft終於放棄了倒騰與眾不同的瀏覽器,選擇加入Chromium陣營,未來大家終於可以少糾結一點相容問題了......

2018也是同樣精彩的一年,JavaScript都經歷了什麼呢?

 

 

一、The State of JavaScript 2018

 

The State of JavaScript調研已經連續做了3年,今年一共調研了2萬多個JS開發者。有這樣一些有意思的發現:

  • 絕大多數開發者都用過ES6,同時TypeScript也越來越流行了;

  • React依然最流行的前端框架,同時Vue也越來越受歡迎了;

  • Express依然是最流行的Node.js框架,既然Node 8已經支援async函數了,Koa的價值就大大降低了;

  • Visual Studio Code遠遠超越Sublime,成為最流行的JS編輯器。

作為一個後端用著Express框架、儘量使用最新的ECMAScript語法,而前端用著TypeScript、不過框架還是AngularJS 1(這事要怪版本帝Angular不向後相容),還拋棄了價值70刀的Sublime、今年加入VS code陣營的JSer——我也是算是夠主流了吧!那你的技術債是怎樣的呢?

 

 

二、ECMAScript 2018

 

TC39(ECMAScript標準委員會)這些年越來越勤快了,從2015年(ES6)開始,每年釋出一個新的ECMAScipt標準。ECMAScript 2018,即ES9,則在6月如期釋出了,其新增的特性並不多:

主要新特性:

  • Asynchronous Iteration;

  • Rest/Spread Properties。

新的正則表示式特性:

  • RegExp named capture groups;

  • RegExp Unicode Property Escapes;

  • RegExp Lookbehind Assertions;

  • s (dotAll) flag for regular expressions。

其他新特性:

  • Promise.prototype.finally();

  • Template Literal Revision。

如果想了解ES9的細節,可以看看Axel Rauschmayer博士寫的Exploring ES2018 and ES2019(http://exploringjs.com/es2018-es2019/toc.html)。

 

 

三、Node 10

 

Node 10在4月釋出並且在10月成為LTS,即長期支援版本。

Node 10使用了新的V8引擎6.8,因此效能提升了很多,比如Promise與Async函式的效能提升就非常明顯,因此建議大家升級。

Node新版本的釋出日期一直非常穩定,做到這一點也是不容易啊!

 

四、Vue 3.0

 

在Vue.js Conference Toronto 2018上,Vue.js 創作者尤雨溪發表了主題演講Vue 3.0 Updates,表示新版本將會有這些變化:

  • 更快;

  • 更小;

  • 更易於維護;

  • 更多的原生支援;

  • 放棄Flow,使用TypeScript。

Vue 3.0與其說是更新或者重構,不如說是重寫,因為變化很大,但是同時會保證向後相容。

Vue 3.0預計將在2019年釋出,大家一起期待吧!

 

 

五、Babel 7

 

2年多時間commit了4000多次,Babel 7終於釋出了(https://babeljs.io/blog/2018/08/27/7.0.0)。新增了下面這些特性:

  • babel-upgrade: 升級Babel的工具;

  • babel.config.js:學習ESLint與Webpack,使用JS檔案配置;

  • overrides:允許同一個專案使用不同的Babel配置,例如前端程式碼的targets為Chrome 60,而後端程式碼的targets為Node 8;

  • ......

主流瀏覽器對新的ECMAScript特性已經支援得不錯了,不過還是存在並且永遠存在很多非主流瀏覽器,於是我們還是離不開神奇的Babel。

 

 

六、jQuery 3.3.0

 

曾經風靡一時的jQuery釋出了3.3.0,這個版本放棄了(deprecated)一系列方法:

  • jQuery.now;

  • jQuery.isWindow;

  • jQuery.camelCase;

  • jQuery.proxy;

  • jQuery.type;

  • jQuery.isNumeric;

  • jQuery.isFunction;

  • Event aliases。

這些方法大多會在jQuery 4.0中被刪除,因此jQuery官方鼓勵大家使用替代的方法。

從這個更新也能看出端倪,jQuery時代已經逐漸功成身退,GitHub網站乾脆完全移除了jQuery

 

 

七、V8引擎10週年

 

強大的V8引擎已經發布10週年了,它的命名靈感來自超級效能車的V8引擎,果然名副其實!V8的效能一直在穩步提高:

V8引擎當初是為Chrome瀏覽器開發的,但是早已成為一個獨立的專案。國內的眾多瀏覽器,包括搜狗、360、獵豹、QQ、百度、UC都是基於Chromium開發的,而Chromium相當於開源版本的Chrome,自然也是基於V8引擎的。因此,眾多"國產"瀏覽器實際上都是基於V8的。

融資了2.5億元紅芯瀏覽器也不例外,他們乾脆打包了Chrome瀏覽器的安裝包,果然有錢任性!還有,就連瀏覽器界的一朵奇葩Microsoft也投靠了Chromium陣營。

另外,Node.js也是基於V8引擎的。

 

 

八、NPM模組event-stream被黑客攻擊

 

這件事鬧得沸沸揚揚,不過只是有很多噱頭,如果認真分析黑客幹了什麼,其真實影響也沒那麼大,至少Vue開發者沒啥好擔心的:

  • 比特幣錢包copay依賴event-stream模組;

  • 黑客從騙取了event-stream模組的npm釋出許可權;

  • 黑客為event-stream模組添加了依賴flatmap-stream;

  • flatmap-stream含有黑客程式碼,僅會在copay專案中正確執行,竊取使用者的密碼、私鑰等資訊,從而盜取比特幣;

  • 有人說什麼Vue可能遭受攻擊,其實沒有這回事,因為黑客程式碼只會在copay專案中正確執行。只有copay專案的package.json中的description字串"A Secure Bitcoin Wallet"能夠解密黑客程式碼;而且,黑客的程式碼是為copay量身定做的,對其他專案沒有作用;再說,黑客是來竊取的比特幣的,又不是挖礦,你的專案有比特幣給人家偷嗎?

所以同學們,不要輕易相信標題黨......

 

 

九、《Refactoring》第2版改用JavaScript

 

對於《重構:改善既有程式碼的設計》這本書,我想大多數人都沒看過,但是至少應該都聽說過。這本書剛出了第二版,所有示例程式碼由Java改成了JavaScript。

根據作者Martin Fowler的解釋,《重構》這本書重點在於思想,適用於各種程式語言,所以選擇什麼語言並不重要。而他選擇JavaScript的原因很簡單,因為JS既支援面向過程程式設計,又支援面向物件程式設計,這樣方便寫非OOP程式碼重構的示例。

前端大神尤雨溪說過這樣一句話:

至於重構、設計什麼的,我只想說,看的是使用的人的水平,跟用什麼語言沒那麼大關係。水平爛的人用 TS 一樣寫的是翔一樣的程式碼,看看 Java 就知道了。

《Refactoring》的示例程式碼用什麼語言寫根本不重要,重要的是背後的程式設計思想。順便推薦一下《Clean Code》,如果基本的程式設計習慣和思想沒有提升的話,換個語言或者框架是沒用的。

這本書原價54.66刀,的確有點貴,不過算是必讀書,大家看著辦......

 

 

十、GitHub拋棄jQuery

 

另外,GitHub的技術極客們花了數年時間,以非常規範的流程完全移除GitHub網站了jQuery:

  • 實現了一個ESlint外掛eslint-plugin-jquery,禁止在程式碼中使用已經棄用的jQuery方法。這樣可以防止同事使用jQuery方法。

  • 使用原生程式碼重寫了2個依賴於jQuery的模組jquery-pjax和facebox。

  • 開發一個定製的jQuery版本,一旦完全移除某個jQuery方法,就刪除jQuery中的對應程式碼。這樣既可以減少jQuery大小,也可以防止同事使用已經移除的jQuery方法。

  • 根據使用者統計資料,來逐步放棄支援低版本的IE瀏覽器,這樣的話可以無需依賴jQuery來保證相容性。

  • ......

蘿蔔青菜各有所愛,是否使用jQuery各有各的想法和需求,但是GitHub棄用jQuery的流程非常專業,可以作為處理技術債的標準規範。

 

 

十一、Microsoft愛上JavaScript

 

土豪Microsoft似乎愛上了JavaScript,它家的Office 365、MicroSoft Teams以及Skype都開始使用JavaScript重寫了。原因無疑是JS的跨平臺特性——同一套程式碼多處執行,雖然現在還有很多問題,但是這樣的未來不是挺好麼?

此處應該再來感受一下大名鼎鼎的Atwood's Law:

Any application that can be written in JavaScript, will eventually be written in JavaScript.

在瀏覽器市場上,Microsoft曾經通過捆綁Windows打敗了網景,不過這些年在Chrome面前一敗塗地,現在終於"認輸",選擇基於Chromium重寫瀏覽器。對於JSer來說,至少意味著瀏覽器相容問題可以緩解很多。

根據The State of JavaScript 2018,Microsoft開發的Visual Studio Code儼然已經成為最受JSer歡迎的程式碼編輯器,一些流行外掛下載量高達上千萬:

市值超過Apple,重回全球市值最高公司的Microsoft有錢任性,買下了JS開發者最多的GitHub

從JSer的角度也能看出,IT界的羅馬帝國(出自吳軍的《浪潮之巔》)Microsoft又重新崛起了,這是一件很了不起的事情。

 

 

十二、Oracle宣示JavaScript主權

 

Oracle明年就要開始給Java收費,雖然只是JDK 8的u192之後的更新要收費,這個行為大概會讓很多Java開發者不爽......

另外,Oracle還要求一個iOS開發者將一款叫做”HTML5, CSS, JavaScript, HTML, Snippet Editor“的App從App Store下架,因為App名字中包含“JavaScript”字眼,而Oracle擁有JavaScript在美國的商標權。

Oracle這位大爺惹不起,因此大家正在一本正經地建議給JavaScript改名。當然這基本上是不可能的,這輩子都不可能......

作者:劉凱,Fundebug CTO。

 

 熱 文 推 薦 

 iPhone 史上最大優惠;摩拜「裁員門」反轉;百度網盤縮減空間 | 極客頭條

 程式設計師開發軟體的意義到底在哪?

 Eclipse 4.10.0 正式釋出,全面擁抱 Java 11!

☞ 面向物件程式設計,再見!

☞ 雲端計算到底是怎麼玩的?

☞ 00後也會「玩」區塊鏈,你對「朝陽」行業焦慮啥 ?| 聖誕特輯(文末有福利)

 何愷明等最新突破:視訊識別快慢結合,取得人體動作AVA資料集最佳水平

 霸氣!女程媛徵男友的需求說明書!