摘要: 對JSer來講,這是頗有意思的1年。
The State of JavaScript 2018
The State of JavaScript調研已經連續作了3年(2016, 2017, 2018),今年一共調研了2萬多個JS開發者。有這樣一些有意思的發現:javascript
- 絕大多數開發者都用過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標準。今年大佬們繼續忙於處理各類proposal。ECMAScript 2018,即ES9,則在6月如期發佈了,其新增的特性並很少:前端
- 主要新特性:
- Asynchronous Iteration
- Rest/Spread Properties
- 新的正則表達式特性:
- RegExp named capture groups
- RegExp Unicode Property Escapes
- RegExp Lookbehind Assertions
- flag for regular expressions
- 其餘新特性:
- Promise.prototype.finally()
- Template Literal Revision
若是想了解ES9的細節,闊以看看Axel Rauschmayer博士寫的Exploring ES2018 and ES2019。
Node10
Node 10在4月發佈而且在10月成爲LTS,即長期支持版本
Node 10使用了新的V8引擎6.8,所以性能提高了不少,好比Promise與Async函數的性能提高就很是明顯,所以建議你們升級
Node新版本的發佈日期一直很是穩定,作到這一點也是不容易啊!
vue
Vue 3.0
在Vue.js Conference Toronto 2018上,尤雨溪發表了主題演講Vue 3.0 Updates,新版本將會有這些變化:java
- 更快
- 更小
- 更易於維護
- 更多的原生支持
- 放棄Flow,使用TypeScript
Vue 3.0預計將在2019發佈,你們期待吧!
Babel7
2年多時間commit了4000屢次,Babel 7終於發佈了,新增了下面這些特性:node
- babel-upgrade: 升級Babel的工具;
- babel.config.js:學習ESLint與Webpack,使用JS文件配置;
- overrides:容許同一個項目使用不一樣的Babel配置,例如前端代碼的targets爲Chrome 60,然後端代碼的targets爲Node 8;
主流瀏覽器對新的ECMAScript特性已經支持得不錯了,不過仍是存在而且永遠存在不少非主流瀏覽器,因而咱們仍是離不開神奇的Babel。
jQuery3.3.0
曾經風靡一時的jQuery發佈了3.3.0,這個版本放棄了(deprecated)一系列方法:jquery
- 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引擎當初是爲Chrome瀏覽器開發的,可是早已成爲一個獨立的項目。國內的衆多瀏覽器,包括搜狗、360、獵豹、QQ、百度、UC都是基於Chromium瀏覽器開發,而Chromium至關於開源版本的Chrome,天然也是基於V8引擎的。所以,衆多"國產"瀏覽器實際上都是基於V8的。融資了2.5億元紅芯瀏覽器也不例外,他們乾脆打包了Chrome瀏覽器的安裝包,果真有錢任性!還有,就連瀏覽器界的一朵奇葩Microsoft也投靠了Chromium陣營。
另外,Node.js也是基於V8引擎的。git
NPM模塊event-stream被黑客攻擊
這件事鬧得沸沸揚揚,不過只是有不少噱頭,若是認真分析黑客幹了什麼,其真實影響沒那麼大,至少Vue開發者沒啥好擔憂的:github
- 比特幣錢包copay依賴event-stream模塊;
- 黑客從騙取了event-stream模塊的npm發佈權限;
- 黑客爲event-stream模塊添加了依賴flatmap-stream;
- flatmap-stream含有黑客代碼,僅會在copay項目中正確執行,竊取用戶的密碼、私鑰等信息,從而盜取比特幣;
- 有人說什麼Vue可能遭受攻擊,其實沒有這回事,由於黑客代碼只會在copay項目中正確執行。只有copay項目的package.json中的description字符串"A Secure Bitcoin Wallet"可以解密黑客代碼;並且,黑客的代碼是爲copay量身定作的,對其餘項目沒有做用;再說,黑客是來竊取的比特幣的,又不是挖礦,你的項目有比特幣給人家偷嗎?
GitHub拋棄jQuery
一直以來,GitHub最流行的編程語言都是JavaScript,能夠說GitHub是全球最大的JS開發者社交平臺了;同時,由於被IE的兼容問題折磨了多年,前端痛恨Microsoft!可是,有錢任性的Microsoft以75億美圓收購了GitHub!
另外,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的跨平臺特性。同一套代碼多處運行,雖然如今還有不少問題,可是這樣的將來不是挺好麼?
在瀏覽器市場上,Microsoft曾經經過捆綁Windows戰勝了網景,不過這些年在Chrome面前一敗塗地,如今終於"認輸",選擇基於Chromium重寫瀏覽器。對於JSer來講,至少意味着瀏覽器兼容問題能夠緩解不少。
根據The State of JavaScript 2018,Microsoft開發的Visual Studio code儼然已經成爲最受JSer歡迎的代碼編輯器,一些流行插件下載量高達上千萬:express
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
原文地址:https://blog.fundebug.com/2018/12/25/what-happens-in-2018-for-javascript/