2016年JavaScript開發者需要了解的技能

2016年JavaScript開發者需要了解的技能

xxholly32 · 2016-06-28翻譯 · 1855閱讀 原文鏈接

JavaScript - 由於它是web開發中最基本的語言,無論你怎麼看待它,我們都要去考慮它的"未來"。畢竟,在電腦和手機端,瀏覽器大概是人們用的最多的應用了。

我們開發人員都知道,JavaScript世界看上去動盪不安甚至有些混亂(e.g. the left-pad incident),但這也是說明了這門語言正在不斷的完善。它試着去完善一些老的問題(通常是相關擴展或者複雜的問題)以跟上現在的發展趨勢。

隨着需求的變化,特別是在這技術日新月異的時代。你也許不知道以下這些技術,但想要提高或者完善你的技能,這些因素都是你需要關係(尤其是那些初學者)。能夠了解Javascript的發展走向還是能夠讓你更好的進入這個領域。

那麼到底2016年javascript開發方向是什麼(或者2017年又會有什麼走向)?

javascript 趨勢

node.js已經是我們都知道的,後面的內容我們也不會提它,因爲太有名氣了...........

React & Redux

2015年是React獲得肯定的一年,多的開發者在2014年尾聲開始抱怨Angularjs的一些問題,也有新聞說道,Angular2將會和Angular 1 不兼容。

如今的現狀是,Angular1 仍然是Github上最受關注的,同時緩慢增長,而React正快速的填補這個缺口。

github star 增長圖

圖中的數據基於互聯網。

也許這張reactangular, and angular2, 在npm下載數量圖能夠更好的反應這個問題:

angularjs vs react

出自 NPM 走勢

但是,這些數據並不能真實的代表這些框架的使用情況,有一點要考慮的是自從Angular1被Angular2替代之後的並沒有任何升級,更不必說,React不是一個框架,不能夠和AngularJS一起用。所以說,這2者其實是沒法放在一起對比的。

儘管如此,大概在去年一年裏,JavaScript社區對React的支持比Angularjs要多一些。

看圖表,你可能會問:在8月後發生了什麼?React在npm的下載數量突然以指數倍的方式暴漲,Github的關注數量快要接近AngularJS的數量。

同時,Redux出現,由它的創作人Dan Abramov發佈 在ReactEurope2015 7月的會議上。Redux是一個類似flux的實現,讓很多開發者確信這更適合並能夠推動React的發展。

在Redux出現前,React走過一段不尋常的旅程,開發者需要自己去方法去實現"Flux"的功能。很多很好的實現方式涌現出來,但對於Javascript開發者來說還是缺少一個全面完整的解決方案。因此儘管React在DOM表現層處理的有多優秀,開發者還是對採用這個技術到項目中保留自己的意見。

如今,隨着越來越多的開發者開始關注和使用Redux並且認識到,測試和debug JavaScript是如此方便。Redux開始替代Flux成爲了新的贏家。

由於2016年Javascript在前端領域的地位,同樣地,React 和 Redux也變的炙手可熱了。知名公司如:Netflix,Dropbox, 雅虎 都已經開始使用React,並給與很大的信心。

儘管這樣,Facebook的Relay框架在2017年成爲Redux的最大挑戰者。

You Might Also Want to Read: Getting Started With React & Redux: An Intro

其他感興趣的框架

那麼還有什麼別的框架?還有一些相對關注低一些的,但被炒做的一些框架。

Angular2

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

隨着Angular2的重寫,整個過程希望能夠修改Angular1 app開發的一系列問題,目前爲止效果明顯。谷歌也相信未來是屬於互聯網開發,Angular2 也會支持web組件開發,使其有能力支持更好的展現。

然而,不管Angular團隊如何努力的帶領開發者從Angular 1 引導向Angular2, Angular社區對Angular的取捨還是分成2大陣營。重寫導致Angular的停滯不前和React逐漸火熱,而這個勢頭同時正在加劇。

Angular2 是否能夠和 Angular1 當初一樣成功,並不能完全肯定,在Javascript社區也衆說紛紜。Angular2 還是在這個Javascript和web開發的"未來"中有成功的可能性,但2016顯然不是Angular2,特別是它還是在beta版本。對於那先不喜歡複雜react app 需要配置很多東東的開發者來說,Angular2 還是可以選擇的。

Meteor

Meteor在Github的關注和下載始終是穩固上升中,和React,Angular 的發展相似。這是一款輕量級的,全棧式的,有鮮明特這的一款Javascript框架,很多開發者用它工作能從框架中發現很多新穎有趣的地方。meteor被認爲是一款原型式框架,而且對初級開發者非常友善,能夠較快上手。

然而,使用Meteor起來又是另一種情況。那些學過Angular1 或者是一些Rails的都需要大量神祕的隱藏配置,而在Meteor也是同樣的。Meteor不像React 和AngularJS, 企業中可能會有一些專業的開發人員,而Meteor沒有,這也是不被考慮的因素之一。雖然AngularJS有很多問題,但有谷歌的技術團隊撐腰,而使用Meteor不一樣, 無論是前後端開發,都會有很多技術風險。Meteor要更廣泛的被廣大開發者使用還是需要解決很多問題。

更別提那些數據庫問題,由於Mongodb是Meteor的默認數據庫,而一些開發者對MongoDB的開發模式不是很感興趣(閱後即焚的小型數據庫)。Meteor運行必須要起SQL,而這點也沒有很好的支持。

不用說,Meteor在2016甚至2017年能夠佔到的份額都會比較少。對於構建大型負載的應用,大部分專業開發者對這個技術還是持保留意見。

ES6 終於要普及了

2016年,如果你是個Javascript開發人員,而你的應用還沒有采用ES2015開發規範,你要好好問問自己,你到底在幹什麼?

但爲什麼用Babel和TypeScript處理ES6 app項目呢?Babel大部分是轉換ES6的ES5,TypeScript 是 可選的靜態類型和簡單類型的Javascript的超集。

Facebook創造了Babel,Babel只支持靜態類型檢查的Javascript, 並做轉換,所以這2者都是以不同目的的方式創造出來,沒有可比性。因此這2者一般不會同時用。

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

You Might Also Want to Read: Setting Up a React Environment Using Npm, Babel, and Webpack

然而,在最近,如果你看一些Javascript的解決方案,那些代碼庫都是用TypeScript做的,TypeScript也變得越來越火,越多人挑選了。Javascript之前給人的印象是比較難懂,難調試,不僅僅是它是一門動態語言,而且缺少類型檢查的機制。TypeScript很好的支持了一點,而且TypeScript還有一個比Flow更大的社區支持。

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

也許TypeScript在受關注程度上低於Angular2,但隨着Javascript的應用越來越大,它很有可能因此而被關注。同時,[Redux較早推出Javascript應用測試方案 ], TypeScript幫助使其代碼更具可維護性(它也能和React的JSX兼容)。除此之外,微軟,谷歌,Facebook[共同致力於]在Javascript上添加靜態類型,最終生成ECMAScript協議。谷歌放棄了AtScript而用TypeScript在AngularJS上,而Facebook的Flow的社區並沒有TypeScript那麼大。

因此,負責任的說,不僅靜態類型的Javascript是一種趨勢,而且那些不喜歡Javascript的開發者也因爲TypeScript開始接觸JavaScript了。TypeScript極有可能是未來的趨勢。

函數式編程要變成主流

確切的說,大量函數式編程已經以他們的方式緩慢的佔據主流的編程領域。但在現在複雜的web apps中,"函數式編程"又被重新關注起來了。

類似Scala的後端開發者正慢慢的擁抱函數式編程,Fackbook的React前端開發者也提出了UI的函數式看法。隨着越來越多的讚揚,函數式開發將會成爲主流。

如今,前端開發主要是響應式編程和函數式編程。React+Redux的開發模式,通常對於新手開發者來說,面向對象的編程是最多的解決方案。另一個角度來說,React需要開發者用一個函數來處理UI而Redux用一個函數處理數據。所以基本還是OOP的模式。

不管怎樣,那些用函數式編程的,仍然純用Javascript並且學一些RxJS的技巧。RxJS是Javascript的響應式擴展,用於替代Flux框架,可能會在小型項目中會有一些負作用,在一些負責的大型web項目中能夠發揮很大作用。Netflix採用RxJS,因爲Angular2支持並很好的使用RxJS。由於RxJS是微軟生產的,它也很好的集成了TypeScript,並且在不斷的完善中。

但是,RxJS學起來比較難,不少開發者放棄了做FRP,而在項目中用函數式開發。

值得注意的是另外的一些預研,比如ClojureScript和Elm, 但和React+Redux的函數式編程比起來還是有些遜色。(然而,Redux是受了Elm啓發的,所以有些開發者還是想去關注一下Elm的)

考慮到Javascript的龐大的領域,很難說可能會有一些轉向Elm(當初有很多人堅信Scala會替代Java,然而最後並沒有)。RxJS, 另一方面,仍然是入門較難的框架,暫時無法變成主流。

隨着函數式編程很好的適應瞭如今web開發的熱潮,有一點需要強調,函數式編程已經成爲當下Javascript開發人員必不可少的技能之一了。

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

如今,大量的軟件需要同步數據到不同的平臺(即,手機和桌面)。大部分都是起源於web app,之後再創建桌面應用, 而爲了更好的用戶體驗,web app升級會又快又早。用戶什麼都不裝都可能會卸載你的產品,由於體驗不好,所以這是個比較大的考驗。

在過去,人們爲了那些web技術開發前端UI的桌面app產品,收到了CEF技術的驗證。這並不容易,而且開發這些技術還無法跨平臺。自從2014年,Node.js的出現,桌面應用框架可以很好的使用web技術開發,並處理跨平臺問題。但之後沒有什麼更新的東東出來。

如今,這塊領域任然還有2個技術在做:Nw.js(node-webkit原身)和Electron。2個都是很好的選擇而且都有自己的有事,以下文章說明了他們的走勢。

我們看下最新的Github關注情況:

nwjs vs electron

from Star History

雖然Nw.js出道較早而且較爲成熟,但看來Electron的增長以指數形式增長,而nw.js的增長看上去是平穩的線性。

等等!是否GitHub的關注公平,Electron是在GitHub誕生的,考慮到這個因素,我們去看下Google趨勢,但好像或多或少反映同樣的情況:

nw.js vs electron

Electron比較新,但已經用在了一些知名公司比如Slack,微軟, WordPress和Sencha.(Codementor 也用了Electron做了它的桌面應用)。Electron的簡單易用,它的生態系統和社區平臺也逐漸壯大。它的火熱程度可能會延續到2017,使用Electron框架開發桌面應該用可能是開發者現在最好的選擇。

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

自從React Native 橫空出世,人們預測2016年,講是React Native年,考慮到跨平臺的開發模式,未來將是手機開發和web技術的時代。如果你google一下React Native app性能 ,你會發現很多讚揚,特別是在對比了HTML5 hybrid app,因爲它跑起來更平滑。是否2016屬於React Native?有大片的宣揚和關注,看來它是達到了期望:

react native vs ionic

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

react native vs ionic

from npm trends

從這個圖可以看出,React Naitve作爲跨平臺手機開發工具,正在以它的方式超越ionic成爲開發者的最佳選擇。

在如今的就業市場中,React Native 也變得了比ionic更搶手。

react native vs ionic

from indeed.com

在AngelList的招聘列表中我們做了簡單的統計,這個結果體現了同樣的問題,在5月30號附近,有75個關於ionic的招聘,有65個關於react native的招聘數據。

因此,如果在你的簡歷中有熟悉React Native技術在2016年絕對會給你的提供高的薪資。

webAPI的未來 : GraphQL vs REST

2016年,在Facebook宣佈開源GraphQL之後,這使得大量的JavaScript開發人員開始研究。特別是在開源項目上,Facebook在蘋果的JavaScript領域做了很多貢獻:

graphql

GraphQL目標是代替REST API,但REST API運用已經過於廣泛,這個看上去好像不太可行。

rest vs graphql

GraphQL做的比REST API要好,它雖然努力在做但目前還是沒法替代REST。而且,GraphQL仍然比較新,還很依賴Facebook,所以它的好的例子並不多,沒有足夠的學習資源來讓開發者提高。因此,2016年 看上去對於GraphQL來說,還是不足以使引起開發者的足夠興趣。2017年也許會改變,但2016年5月30號在AngelList中可以看到僅僅只有6個招聘是對GraphQL有需求。

JavaScript走勢的結論

JavaScript社區通常都發展比較快,爲了保持主流定位,必須有更多的資源,支持等一些相關信息。基於本文的JavaScript的趨勢總結,如今的開發人員需要學習React + Redux,需要熟悉函數式編程,學習TypeScript。此外,還需要關注其他領域,React Native等,同時有一些Electron的經驗會更好。(當然,TDD測試驅動開發,也是一直以來需要關注的)。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章