2016年JavaScript開發(fā)者需要了解的技能

英文原文:Skills JavaScript Developers Should Learn in 2016
譯者:xxholly32
譯文地址:http://t.cn/R5HIDVI

JavaScript - 由于它是web開發(fā)中最基本的語言卓箫,無論你怎么看待它撤师,我們都要去考慮它的"未來"。畢竟边酒,瀏覽器可能是PC和移動設備都在使用的最廣泛的軟件應用程序了惯悠。

開發(fā)人員都知道躬络,JavaScript世界看上去動蕩不安甚至有些混亂(e.g. the left-pad incident)蜡吧,但這也是說明了這門語言正在不斷的完善。它試著去完善一些老的問題(通常是相關擴展或者復雜的問題)以跟上現(xiàn)在的發(fā)展趨勢征绎。

隨著需求的變化蹲姐,特別是在這技術日新月異的時代。你也許不知道以下這些技術,但想要提高或者完善你的技能淤堵,無論是了解Javascript的發(fā)展走向寝衫,還是讓你更好的進入這個領域顷扩,它們都是你需要關注的(尤其是那些初學者)拐邪。

那么,到底2016年javascript開發(fā)方向是什么(或者2017年又會有什么新的動向)隘截?

javascript 趨勢

node.js已經(jīng)眾所周知了扎阶,后面的內(nèi)容我們也不會提它,因為它太有名氣了.....

React & Redux

2015年是React獲得肯定的一年婶芭,多的開發(fā)者在2014年尾聲開始抱怨Angularjs的一些問題东臀,也有新聞說道,Angular2 將會和 Angular1 不兼容犀农。

如今的現(xiàn)狀是惰赋,Angular1 仍然在Github上備受關注。同時它的增長也開始放緩呵哨,而React正快速的填補這個缺口赁濒。

github star 增長圖

圖中的數(shù)據(jù)基于互聯(lián)網(wǎng)。

也許更能說明問題的指標是:react孟害、angularangular2 三者的包在NPM的下載量:

angularjs vs react

出自 NPM 走勢

但是拒炎,這些數(shù)據(jù)并不能真實的代表這些框架的使用情況。有一點要考慮的是自從Angular1被Angular2替代之后挨务,它并沒有任何升級击你。更不必說,React不是一個框架谎柄,不能夠和AngularJS一起用丁侄。所以說,這兩者其實是沒法放在一起對比的朝巫。

盡管如此鸿摇,大概在去年一年里,JavaScript社區(qū)對React的支持比Angularjs要多一些捍歪。

看圖表户辱,你可能會問:在8月后發(fā)生了什么?React在npm的下載數(shù)量突然以指數(shù)倍的方式暴漲糙臼,Github的關注數(shù)量快要接近AngularJS的數(shù)量庐镐。

同時,Redux出現(xiàn)变逃,由它的創(chuàng)作人Dan Abramov發(fā)布在 ReactEurope2015 7月的會議上必逆。Redux是一個類似flux的實現(xiàn),讓很多開發(fā)者確信這更適合并能夠推動React的發(fā)展。

在Redux出現(xiàn)前名眉,React已走過了一段坎坷粟矿,大家試圖找出如何最好地實現(xiàn)"Flux"的架構。許多更好的實現(xiàn)方式涌現(xiàn)出來损拢,但對于Javascript開發(fā)者來說還是缺少一個全面完整的解決方案陌粹。因此,盡管React在DOM表現(xiàn)層處理有多優(yōu)秀福压,開發(fā)者還是對采用這個技術到項目中保留自己的意見掏秩。

如今,隨著越來越多的開發(fā)者開始關注和使用Redux荆姆,并且認識到測試和debug JavaScript是如此方便蒙幻。Redux開始替代Flux成為了新的贏家。

由于2016年Javascript在前端領域的地位胆筒,同樣的邮破,React 和 Redux也變的炙手可熱了。知名公司如:Netflix仆救,Dropbox, 雅虎都已經(jīng)開始使用React抒和,并給與其很大的信心。

盡管這樣派桩,F(xiàn)acebook的Relay框架將在2017年成為Redux的最大挑戰(zhàn)者构诚。

你也許會閱讀這篇文章:Getting Started With React & Redux: An Intro

其他感興趣的框架

那么還有什么別的框架?還有一些相對關注低一些的铆惑,但被炒作的一些框架范嘱。

Angular2

谷歌和微軟合作開發(fā)的框架Angular2,或者說是用微軟的 TypeScript 開發(fā)的更易管理的Angularjs2员魏。這是什么意思呢丑蛤?大型公司(一些非技術性的公司)可能會關注Angularjs2,特別是使用了微軟的.NET框架的撕阎。從去年開始受裹,微軟也開始推動.NET的開源工作,使開發(fā)者能夠更好的使用虏束。

隨著Angular2的重寫棉饶,整個過程旨在能夠修改Angular1 app開發(fā)存留的一系列問題,目前為止效果明顯镇匀。Angular2 也會支持 web 組件開發(fā)照藻,使其有能力支持更好的展現(xiàn)。而谷歌也認為它是Web開發(fā)的未來汗侵。

然而幸缕,不管Angular團隊如何努力的帶領開發(fā)者從Angular 1 引導向Angular2群发, Angular社區(qū)對Angular的取舍還是分成兩大陣營。重寫導致Angular的停滯不前和React逐漸火熱发乔,而這個勢頭正在加劇熟妓。

Angular2 能否和 Angular1 當初一樣成功,并不能完全肯定栏尚,在Javascript社區(qū)也眾說紛紜起愈。Angular2 還是在Javascript和web開發(fā)的"未來"中有成功的可能性,但2016顯然不是Angular2抵栈,特別是它還是在beta版本告材。對于那先不喜歡復雜 react app 需要配置很多東東的開發(fā)者來說坤次,Angular2 還是可以選擇的古劲。

Meteor

Meteor在Github的關注和下載始終是穩(wěn)固上升中,和React缰猴,Angular 的發(fā)展相似产艾。這是一款輕量級、全棧式滑绒,并有鮮明特征的Javascript框架闷堡。很多開發(fā)者用它從框架中發(fā)現(xiàn)很多新穎有趣的地方。meteor被認為是一款原型式框架疑故,而且對初級開發(fā)者非常友善杠览,并且上手較快。

然而纵势,當使用Meteor時又是另一種情況踱阿。那些學過 Angular1 或者是一些Rails的開發(fā)者都掌握了大量隱藏的魔法技巧,而這也會是阻礙Meteor成為主流的一個原因钦铁。

Meteor 不像 React 和 AngularJS软舌, 企業(yè)中可能會有一些專業(yè)的開發(fā)人員,而 Meteor 沒有牛曹,這也是不被考慮的因素之一佛点。雖然 AngularJS 有很多問題,但有谷歌的技術團隊撐腰黎比。而使用 Meteor 不一樣超营, 無論是前后端開發(fā),都會存在很多的技術風險阅虫。Meteor要更廣泛的被廣大開發(fā)者使用演闭,還需要解決很多問題。

更別提那些數(shù)據(jù)庫問題书妻,由于 Mongodb 是 Meteor 的默認數(shù)據(jù)庫船响,而一些開發(fā)者對MongoDB的開發(fā)模式不是很感興趣(閱后即焚的小型數(shù)據(jù)庫)躬拢。

Meteor運行必須要依賴 SQL,而這點也沒有得到很好的支持见间。

不用說聊闯,Meteor 在2016甚至2017年能夠占到的份額都會比較少。對于構建大型負載的應用米诉,大部分專業(yè)開發(fā)者對這個技術菱蔬,還是持保留意見的。

ES6 終于要普及了

2016年史侣,如果你是個Javascript開發(fā)人員拴泌,而你的應用還沒有采用ES2015開發(fā)規(guī)范,你要好好問問自己惊橱,你到底在干什么蚪腐?

但為什么用 Babel 和 TypeScript 處理 ES6 app 項目呢?Babel大部分是轉(zhuǎn)換ES6的ES5税朴,TypeScript 是可選的靜態(tài)類型和簡單類型的Javascript的超集回季。

Facebook創(chuàng)造了Babel,Babel只支持靜態(tài)類型檢查的Javascript正林, 并做轉(zhuǎn)換泡一,所以這兩者都是以不同目的的方式被創(chuàng)造出來,沒有可比性觅廓。因此兩者一般不會同時使用鼻忠。

Babel是的第一個連接ES5和ES6項目的語言,而TypeScript在ES6的支持也快要趕超ES6了杈绸。在github上Babel關注度更高帖蔓,更不用說還有React開發(fā)者會使用Babel + Webpack的組合。

你也許會閱讀這篇文章:Setting Up a React Environment Using Npm, Babel, and Webpack

然而蝇棉,在最近讨阻,如果你看一些Javascript的解決方案,那些代碼庫都是用TypeScript做的篡殷,TypeScript也變得越來越火钝吮,挑選它的人也越來越多。Javascript曾給人的印象是比較難懂板辽,難調(diào)試的奇瘦。不僅因為它是一門動態(tài)語言,而且缺少類型檢查的機制劲弦。TypeScript卻很好的支持了一點耳标,而且TypeScript還有一個比Flow更大的社區(qū)支持。

除此之外邑跪,我們看下在谷歌趨勢上對TypeScript的關注走勢圖:

也許TypeScript在受關注程度上低于Angular2次坡,但隨著Javascript的應用越來越大呼猪,它很有可能因此而被關注。同時砸琅,Redux使得Javascript應用測試變得更加簡單宋距, 在TypeScript的幫助下,其代碼已更具可維護性(它也能和React的JSX兼容)症脂。除此之外谚赎,微軟、谷歌诱篷、Facebook共同致力在Javascript上添加靜態(tài)類型壶唤,最終生成ECMAScript協(xié)議。谷歌放棄了AtScript而用TypeScript在AngularJS上棕所,而Facebook的Flow的社區(qū)規(guī)模并沒有TypeScript那么大闸盔。

因此,很可靠地說橙凳,不僅靜態(tài)類型的Javascript是一種趨勢蕾殴,而且那些不喜歡Javascript的開發(fā)者也因為TypeScript開始接觸JavaScript了。TypeScript極有可能是未來的趨勢岛啸。

函數(shù)式編程要變成主流

確切的說,大量函數(shù)式編程已經(jīng)以他們的方式緩慢的占據(jù)主流的編程領域茴肥。但在現(xiàn)在復雜的web apps中坚踩,"函數(shù)式編程"又再次被關注了。

類似Scala的后端開發(fā)者瓤狐,正慢慢的擁抱函數(shù)式編程瞬铸。Fackbook的React前端開發(fā)者也提出了UI的函數(shù)式看法。隨著越來越多的贊揚础锐,函數(shù)式開發(fā)將會成為主流嗓节。

如今,前端開發(fā)主要是響應式編程和函數(shù)式編程皆警。React+Redux的開發(fā)模式拦宣,通常對于新手開發(fā)者來說,面向?qū)ο蟮木幊淌鞘褂米疃嗟慕鉀Q方案信姓。另一個角度來說鸵隧,React需要開發(fā)者用一個函數(shù)來處理UI,而Redux用一個函數(shù)處理數(shù)據(jù)意推。所以基本還是OOP的模式豆瘫。

不管怎樣,那些用函數(shù)式編程的開發(fā)者菊值,你仍然要堅持使用Javascript外驱,并且學一些RxJS的技巧育灸。RxJS是Javascript的響應式擴展,用于替代Flux框架昵宇,可能在小型項目中會有一些負作用描扯,但在一些大型web項目中卻能夠發(fā)揮很大作用。Netflix采用RxJS趟薄,因為Angular2支持并很好的使用RxJS绽诚。由于RxJS是微軟研發(fā)的,它也很好的集成了TypeScript杭煎,并且在不斷的完善中恩够。

但是,RxJS學起來比較難羡铲,不少開發(fā)者放棄了做FRP蜂桶,而在項目中用函數(shù)式開發(fā)。

值得注意的是另外的一些預測也切,比如ClojureScript和Elm扑媚, 但和React+Redux的函數(shù)式編程比起來還是有些遜色。(然而雷恃,Redux是受了Elm啟發(fā)的疆股,所以有些開發(fā)者還是想去關注一下Elm的)

考慮到Javascript龐大的生態(tài),很難說會大規(guī)模遷移到Elm的可能(當初有很多人堅信Scala會替代Java倒槐,然而最后并沒有)旬痹。RxJS, 另一方面讨越,仍然是學習門檻較高的框架两残,暫時無法變成主流。

隨著函數(shù)式編程很好的適應了如今web開發(fā)的熱潮把跨,有一點需要強調(diào)人弓,函數(shù)式編程已經(jīng)成為當下Javascript開發(fā)人員必不可少的技能之一了。

桌面應用的對決:Nw.js vs Electron

如今着逐,大量的軟件需要同步數(shù)據(jù)到不同的平臺(即崔赌,手機和桌面)。大部分都是起源于web app滨嘱,之后再創(chuàng)建桌面應用峰鄙, 而為了更好的用戶體驗,web app升級會更快太雨,并且更容易吟榴。更何況,用戶在什么都不裝的情況下囊扳,都可能會卸載你的產(chǎn)品吩翻。由于體驗不好兜看,所以這是個比較大的考驗。

在過去狭瞎,人們?yōu)榱四切﹚eb技術開發(fā)前端UI的桌面app產(chǎn)品细移,收到了CEF技術的驗證。這并不容易熊锭,而且這些應用還沒有真正的跨平臺兼容弧轧。自從2014年,Node.js的出現(xiàn)碗殷,桌面應用框架可以很好的使用web技術開發(fā)杈帐,并處理跨平臺的問題抹镊。但之后便沒有出現(xiàn)新的東東欲间。

如今沸呐,在該領域任有兩個主要的技術:Nw.js(node-webkit原身)和Electron。雖然兩者都是不錯的選擇仿粹,有自己的優(yōu)勢搁吓,這篇文章是關于發(fā)展趨勢。

因此吭历,讓我們來看看兩個項目在Github上的關注情況:

nwjs vs electron

出自 Star History

雖然Nw.js出道較早堕仔,而且較為成熟,但Electron卻以指數(shù)形式增長毒涧,而nw.js的增長看上去是平穩(wěn)的線性的贮预。

等等!由于Electron是在GitHub誕生的契讲,考慮到GitHub上關注的公正性,我們?nèi)タ聪翯oogle趨勢滑频,但好像或多或少反映了同樣的情況:

nw.js vs electron

Electron比較新捡偏,但已經(jīng)用在了一些知名公司比如Slack、微軟峡迷、WordPress和Sencha.(Codementor 也用了Electron做了它的桌面應用)银伟。Electron的簡單易用,使得它的生態(tài)系統(tǒng)和社區(qū)平臺也逐漸壯大绘搞。它的火熱程度可能會延續(xù)到2017彤避,使用Electron框架開發(fā)桌面應用,應該是開發(fā)者現(xiàn)在最好的選擇夯辖。

手機端框架對比:React Native vs Ionic

自從 React Native 橫空出世以來琉预,人們預測2016年將是React Native之年,考慮到跨平臺的開發(fā)模式蒿褂,未來將是手機開發(fā)和web技術的時代圆米。如果你谷歌一下React Native app性能 卒暂,你會發(fā)現(xiàn)很多贊揚。特別是在對比了HTML5 hybrid app娄帖,因為它跑起來更平滑也祠。是否2016屬于React Native之年?在宣傳和關注上近速,看來它是達到了預期的:

react native vs ionic

但實際是否是這樣呢诈嘿?當寫這篇文章時,React Native仍然沒有到達1.0版本(現(xiàn)在是0.26)削葱。所以奖亚,如果你現(xiàn)在想用React Native需要勇氣和耐心去處理一些app問題,可能需要重構代碼佩耳,還會有一些未知的問題(Codementor也僅僅使用在手機端)遂蛀。因此,我們再看一下React Nativc 和 Ionic 在npm的下載對比:

react native vs ionic

出自 npm trends

從這個圖可以看出干厚,似乎React Naitve正在以它的方式李滴,超越ionic成為最佳的跨平臺移動開發(fā)框架。

在如今的就業(yè)市場中蛮瞄,掌握React Native技術的人才也變得比ionic更加搶手所坯。

react native vs ionic

出自 indeed.com

在AngelList的招聘列表中我們做了簡單的統(tǒng)計,這個結(jié)果體現(xiàn)了同樣的問題:在5月30號左右挂捅,有75個關于ionic的招聘芹助,有65個關于react native的招聘數(shù)據(jù)。

因此闲先,如果在你的簡歷中有熟悉React Native技術状土。在2016年,雇主們絕對會給你的提供更高的薪資伺糠。

webAPI的未來 : GraphQL vs REST

2016年蒙谓,在Facebook宣布開源GraphQL之后,這使得大量的JavaScript開發(fā)人員開始從事它的研究训桶。特別是在開源項目上累驮,F(xiàn)acebook在蘋果的JavaScript領域做了很多貢獻:

GraphQL目標是替代REST API,但REST API已經(jīng)應用的更加廣泛了舵揭,這是不太可能的情況:

rest vs graphql

GraphQL很難取代REST API谤专。充其量,它可以補充REST API所提供不到的東西午绳。而且置侍,GraphQL仍然比較新,還很依賴Facebook,所以它沒有足夠的學習資源來讓開發(fā)者來提高墅垮。因此惕医,2016年對于GraphQL來說,還是不足以使引起開發(fā)者的足夠興趣算色。2017年也許會改變抬伺,但是2016年5月30號在AngelList中可以看到,僅僅只有6個招聘是對GraphQL有需求灾梦。所以你可以不必急于學習它峡钓。

JavaScript走勢的結(jié)論

JavaScript社區(qū)總體發(fā)展是比較快的。為了保持主流定位若河,必須有更多的資源和支持等一些相關信息能岩。基于本文的JavaScript的趨勢總結(jié)萧福,如今的開發(fā)人員需要學習React + Redux拉鹃,需要熟悉函數(shù)式編程,學習TypeScript鲫忍。此外膏燕,還需要關注其他領域,React Native等悟民,同時有一些Electron的經(jīng)驗可能會更好坝辫。(當然,TDD測試驅(qū)動開發(fā)射亏,無論何時都是你要掌握的技能)近忙。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市智润,隨后出現(xiàn)的幾起案子及舍,更是在濱河造成了極大的恐慌,老刑警劉巖窟绷,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件击纬,死亡現(xiàn)場離奇詭異,居然都是意外死亡钾麸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門炕桨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饭尝,“玉大人,你說我怎么就攤上這事献宫≡科剑” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長涉瘾。 經(jīng)常有香客問我知态,道長,這世上最難降的妖魔是什么立叛? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任负敏,我火速辦了婚禮,結(jié)果婚禮上秘蛇,老公的妹妹穿的比我還像新娘其做。我一直安慰自己,他們只是感情好赁还,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布妖泄。 她就那樣靜靜地躺著,像睡著了一般艘策。 火紅的嫁衣襯著肌膚如雪蹈胡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天朋蔫,我揣著相機與錄音罚渐,去河邊找鬼。 笑死斑举,一個胖子當著我的面吹牛搅轿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播富玷,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼璧坟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赎懦?” 一聲冷哼從身側(cè)響起雀鹃,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎励两,沒想到半個月后黎茎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡当悔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了盲憎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗅骄。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖饼疙,靈堂內(nèi)的尸體忽然破棺而出溺森,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布屏积,位于F島的核電站医窿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏炊林。R本人自食惡果不足惜姥卢,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望铛铁。 院中可真熱鬧隔显,春花似錦、人聲如沸饵逐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽倍权。三九已至掷豺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間薄声,已是汗流浹背当船。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留默辨,地道東北人德频。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像缩幸,于是被迫代替她去往敵國和親壹置。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容