哪些技術會決定前端開發者的將來發展?

2019年下半年即將到來,上半年狂風驟雨般的裁人浪潮讓每一位從業者背脊發涼,在經歷了五六年黃金髮展期以後,前端開發這個行業彷佛也進入了轉折點。前端

我一邊聽開發者在網絡上抱怨工做難找,前端開發早已經飽和了,又在另外一邊聽大廠的朋友們抱怨,招了好久的人,四處出擊卻填不滿HC,前端人才市場就是這麼充滿了矛盾與反常。vue

其實仔細想一想,出現上述的狀況很容易理解,實際上前端開發單純從數量上已經飽和了,因此大量的初級前端工程師找不到活幹,可是從另外一方面,高級前端工程師依然是百裏挑一,高級崗的HC永遠是不飽和的。node

前不久民工叔發的動態:react

2019-06-27-16-20-14

目前前端人員的分佈是金字塔形的,並且是底部比較長的金字塔形狀:git

2019-06-27-16-29-37

因此進階是大部分前端開發必需要面對的事情,如今已經不是能寫幾個頁面就能找到工做的時代了,只有往上進階才能保持職業競爭力,不然咱們誰都不能保證下次裁人潮來臨的時候,咱們會不會成爲沙灘上裸泳的人。github

我對前端技術的思考方式

前端社區是很是活躍的社區,幾乎每過一段時間都會有新的技術或者新的開發方式變成了熱點,所以前端開發者纔會有了『學不動了』的梗,以及畢竟丟人的Deno留言事件。web

以我本身爲例,由於想本身開發一個APP,因此面臨技術選型,也面臨未來要投入大量時間選擇學習的技術,擺在我面前的有三個選項:編程

  • Flutter跨平臺技術
  • RN跨平臺技術(WEEX除了阿里生態外,不多用的)
  • 原生技術

到底選擇哪個技術既能知足開發APP的需求,又值得投入時間進行學習呢?小程序

若是你去知乎或者其餘技術類的社區去問,絕大多數的回答是Flutter(雖然從回答來看不少答主彷佛都沒用過Flutter),Flutter做爲正式發佈纔剛剛半年的新技術已經席捲了整個大前端圈子,成爲了當之無愧的第一熱點,真是佩服谷歌的佈道能力。後端

2019-06-27-17-11-45

關於Flutter的事情我思考了好久,也用它快速開發了一個demo,它有很吸引人的地方:

  • 聲明式UI這跟react很像,比Android 那種UI編程方式先進太多(筆者很早以前寫過一個Android APP,那編碼體驗不談了)
  • 更完全的跨平臺,直接調用Skia繪圖引擎進行組件渲染,比RN更加底層,它的理念更像是遊戲。
  • 更大的潛力,有消息稱Flutter是谷歌新操做系統的第一指定框架,這意味着你可能搭上這新系統的風口。

這門技術確實很吸引人,加上社區各個會Flutter不會Flutter的人義務宣傳下,我甚至快決定好好學習一下Flutter了。

可是,你們有沒有想過,經過學習Flutter,你的技術就提高了嗎?

不少人第一反應是『固然了,學了一門新技術,學了一門新語言,難道技術不是提高了嗎?』。

可是我以爲並無,我其實依然在原地打轉,一個Java開發者學會了用Ruby增刪改查並不能表明能力提升了,一個前端開發者用RN或者Flutter開發了簡單的APP也不能說明水平提升了,只不過是用另外一種語言再寫了一遍UI而已,會用三種框架寫頁面,並非什麼高技術含量的事情,會三種不如深刻一種。

Flutter跟RN同樣,想玩得轉必須深刻到原生開發中,由於這兩個技術都不是真正的跨平臺,他們僅僅是UI跨平臺,若是你僅僅學一個Flutter寫寫UI,意義不大,也不存在能力的提高。

咱們或者再功利一點地思考,就算你學會了用Flutter寫UI又怎麼樣呢?大家公司內部有Flutter項目嗎?即便有輪獲得你施展拳腳嗎?畢竟你沒有原平生臺的知識儲備,僅僅寫個UI又有什麼呢?

其實,這個例子說了這麼久,我只是在說兩件事情:

  • 咱們有時候看似在學不少技術,其實這些技術並不能提高你,可是給你形成了『我學了新東西能力提高了』的自我感受誤差
  • 不要盲目追尋社區的熱點,極可能撿了芝麻丟了西瓜,要仔細思考這門技術對於你自己是否有提高,而不是被佈道師們『洗腦』

我以這種思考模式仔細研究了近一段時間熱點的技術,有幾門技術我能夠比較確信在將來會在前端開發領域大展拳腳。

TypeScript

我從2017年就開始使用TypeScript了,能夠說正當時,在使用過程當中踩了不少坑,也總結出不少經驗,知乎上的問題『你爲何不使用TypeScript?』中的最高票回答就是筆者本人。

在2019年的年中,我能夠很是確信TypeScript會在一年內大規模流行,怎麼定義大規模流行?

超過30%基於前端框架的新項目會以TypeScript爲主要語言開發。

緣由我總結了三點。

逐漸統治開源社區

大量重量級前端開源項目採用TypeScript開發,包括不限於:Angular、VScode、Vue3.0、Rxjs、TypeScript(對,它自舉)、Mobx、deno、Antd,並且這個趨勢愈來愈明顯,包括Facebook自家的Jest也宣佈從flowType轉向TypeScript。

這些重量級的開源項目有很是強得帶動做用,我不止一次見過有的前端開發者說,爲了看懂Antd的源碼,特意學了TypeScript。

能夠說,TypeScript的開源生態已經很是完善了,公司徹底能夠放心大膽得進行TypeScript化開發。

TypeScript是真正解決生產力問題的技術

請問前端開發中,引發錯誤的最多的三種報錯是什麼?

你不會想到,是:

  • Uncaught TypeError: Cannot Read Property
  • TypeError: ‘undefined’ Is Not an Object (evaluating...)
  • TypeError: Null Is Not an Object (evaluating...)

竟然是三種很是很是低級的錯誤,緣由就是JavaScript是動態語言,只有運行時纔會報錯,這些低級錯誤在類型定義完整的TypeScript中不會發生,這就是TypeScript的優點之一,編碼時就能規避大量的類型錯誤。

TypeScript完整定義接口,能夠減小很是多的溝通成本和文檔編寫成本,最好的文檔就是類型,除此以外,有了TypeScript的支持先後端的協做也會很是方便,有了TypeScript咱們徹底能夠開發一個工具把後端Java Swagger的信息映射到TypeScript中,方便咱們取數並最大程度規避錯誤。

如今已經有了這麼一款前端取數庫pont.

總而言之,TypeScript解決了前端的兩大問題,規避錯誤和提高效率。

阿里 MidwayJs Team的負責人在GMTC上就說到過『 TypeScript,來幫助咱們解決這些質量,習慣,方法上的問題,就拿 midway 團隊來講,自從使用了 TypeScript,質量提高的很是明顯,日常須要測試好久的代碼,幾乎不會出現低級的問題,反而暴露出的大多都是邏輯問題。』並提到『而今年,咱們但願新應用全量使用 TS。』

2019-06-27-17-50-12

Vue3.0會是TypeScript大規模普及的導火索

Vue3.0將在下半年的發佈,雖然尤雨溪確認Vue3.0支持JavaScript和TypeScript兩種語言,可是vue2.x那種殘疾級別的支持到如今原生支持TypeScript,勢必會引發大量以vue爲技術棧的公司進行TypeScript化運動。

屆時三大框架均可以完美支持TypeScript,甚至其中有兩個是由TypeScript直接開發的,而vue在國內的用戶量最多,也最能影響TypeScript在國內的走勢。

而據我所知美團、餓了麼等一大批vue技術棧的前端團隊也已經大量實踐了TypeScript,至少在大廠層面,TypeScript已經開始大規模普及了。

圖形技術

圖形技術不會在短期內席捲前端,也永遠不可能成爲前端的熱門技術,可是倒是前端開發者進階必學的技術。

爲何說圖形技術不會在前端大火?

要火早就火了,今年年內都要發佈webGPU了,絕大部分前端連webgl1.x都搞不清楚,歸根究竟是技術棧不匹配,前端開發和移動端開發雖然很大一部分工做是實現UI,可是這個實現方式幾乎都是調用宿主內置組件,極少有用圖形接口畫UI的狀況。

爲何又說是進階必備?

圖形技術多是僅有的與前端有密切聯繫的計算機底層技術了,由於所謂的UI就是靠圖形接口調用GPU繪製而成的,這樣就意味着掌握圖形技術就能更深度地定製UI。

將來的前端UI不只僅是簡單的Input、Table、List等粗顆粒的組件構成的,而是更加多元化、更加細粒度,就拿筆者最近研究的可視化大屏項目來講,它幾乎用不到任何傳統的前端組件,一部分2D組件是調用Canvas繪圖接口,一部分3D組件是靠webgl繪製而成。

2019-06-28-05-04-35

今年下半年5G開始在國內大面積鋪開,廣泛的一個觀點是認爲5G的到來會讓AR、VR等虛擬技術從新煥發生機,這些技術也無一例外不與圖形技術相關聯,畢竟你總不會認爲在AR中繪製一個input組件吧。

從去年開始關注圖形技術,我也驚喜的發現跟一些前端專家們的觀點不謀而合。

一個是年初奇舞團的leader月影在知乎的回答:

2019-06-28-05-11-30

另外一個也是年初winter的前端技術預測:

2019-06-28-05-12-34

編輯器領域技術

這裏的編輯器指的是各類編輯器的總稱,例如:代碼編輯器(WebIDE)、圖形編輯器(在線的3d建模或者ps)、文本編輯器等。

編輯器領域技術不會像TypeScript同樣蔓延到幾乎全部的前端團隊,可是必定是會在局部火起來的技術。

爲何說只會在局部火起來?

這是個很是小衆的領域,可是複雜度和重要性卻與日俱增,首先絕大部分公司的絕大部分業務場景中對編輯器的需求很小,其次,編輯器的通用性很大,每一個網站的具體業務場景的實現千差萬別,可是說到用戶輸入的文本編輯器,那可能用的都是同一款開源軟件。

說完了局部,咱們在談談爲何會火,最重要的一點就是雲端開發的普及,大量的開發者服務被移植到雲上,包括最近比較火的FaaS、小程序服務等等,雲廠商一方面爲了給開發者提供更好的服務,好比開發FaaS的調試服務,因此須要定製符合本身業務的webIDE,另外一方面也更重要,一個開發者的開發環境輕易是不會變的,webIDE就是這個環境,webIDE就是雲廠商開發者爭奪戰的入口。

2019-06-28-05-34-03

另外一個緣由就是,大規模的團隊十分須要將各個團隊的能力整合在一塊兒,而整合開發的鑰匙就是IDE。

雖然不少公司招編輯器相關的工程師都是掛着前端的Title,可是普通的前端工程師若是沒有相關經驗,徹底拿不下這種場景,這就形成了雖然這是個小衆領域,可是人才卻很缺失的狀況。

下圖爲圓心在GMTC上展現的阿里前端委員會佈局的四大方向:

2019-06-28-06-08-48

談一談其它熱點技術

  1. Serverless

Serverless確定會火,並且也是生產力上的直接提高,前端能夠不考慮部署、運維、環境等場景,直接編寫函數來實現後端邏輯,可能之後人人都是所謂的全乾工程師了。

2019-06-28-06-37-08

可是爲何沒有重點拿來將,首先serverless的適用場景還比較輕量,他不是銀彈,如今的serverless熱在必定程度上誇大了它的實際做用。

還有一點,對於前端而言Serverless實際上是工具,你只能拿來用,自己的開發須要雲原生的專業開發者,因此前端根本沒法深度參與,他反而把前端對node的要求下降了(由於只要會代碼,不須要後端知識),可是對於企業和團隊是好事,對於我的而言並非很是有助於成長的一門技術。

  1. IOT

5G來臨,萬物互聯的說法又隨之而來,IOT會不會在5G時代火,我並不肯定,可是前端在IOT上想大展身手我以爲這幾年內看不到進展。

有人會說不是有人把js移植到嵌入式領域了嗎?是的,甚至三星還爲IOT設備定製了js虛擬機。

IOT是低性能低功耗低內存的設備,越是在這種場景下,低運行時高性能偏底層的編程語言越強大,惋惜js與此偏偏相反,這門語言天生不適合IOT,而C語言卻如魚得水。

ps:我以前聽過一個專門搞IOT的技術專家說過,js最大的問題就是功耗,不少便攜式的IOT設備上js根本沒辦法商用(充電五分鐘,待機5秒鐘)

2019-06-28-06-34-16

那爲何還有那麼多人在炒js in IOT這個話題?

感興趣的能夠聽Ruff的做者鄭曄的電臺採訪

緣由就是js開發者多。。。有技術難度的底層技術都會被專業的嵌入式開發者搞定,js開發者只須要寫業務便可,因此又回到關於Flutter的問題了,你在IOT寫業務比瀏覽器寫業務有啥技術提高呢?

固然了,從職場角度搞IOT仍是有前途的,一旦IOT火起來,先進入這個領域的人能夠更輕鬆地摘桃子,可是我我的不推薦如今就入坑,風險遠大於收益,若是真的對js in any感興趣,不如去研究js runtime,好比node和deno,這是真正有助於提高能力的技術。

  1. GraphQL

GraphQL已經被炒了好幾年了,可是依舊動靜不大,不是技術自己又有問題,是這門技術嚴重損害了後端開發利益。

GraphQL對於前端開發者是真的好用,今後不用求後端大哥搞新接口了,徹底能夠自給自足,可是這個讓前端開發爽到天的技術,付出的代價就是大量的改造工做須要後端來作,後端團隊累死累活搞了GraphQL,得利最大的倒是前端,出了錯鍋得後端背,這種技術推進的阻力可想而知。

這門技術考驗的是跨團隊溝通協做能力,不是技術自己,固然不少時候前者比後者更重要,可是與本文主題不符,按下不表。

  1. AI IN FE

這幾年炒的最火的技術就是AI,雖然這個領域跟前端能夠說沒有任何交集,可是依然有不少人想往這方面靠。

先說tfjs的問題,基於瀏覽器的深度學習框架,其實應用範圍很是很是窄,筆者在調研的時候沒有發現什麼有商業價值的案例,在瀏覽器中跑深度學習原本就很小衆,再加上js自己的性能問題和瀏覽器沒有支持GPU加速的API,致使tfjs更像是個殘次品,實際上一些前端團隊雖然在開發AI應用,可是基本用的都是正宗TensorFlow。

目前算是比較靠譜的前端+AI的場景就是自動化UI,將設計師的設計稿自動生成UI組件,還原UI是很是機械重複性的工做,早日干掉還原設計稿能夠充分解放前端,目前閒魚的大前端團隊已經有相關的成果了。

前端就算涉及AI,也最可能是停留在工具使用階段,也就是所謂的『調包俠』,固然,即便這樣你能幫助團隊解決生產力問題,那麼已是大功一件了,建議有能力的同窗能夠佈局一下這方面的技術,可是對於絕大多數人而言,玩轉深度學習即便是調參也是很遙遠的事情。

最後

這是筆者看完圓心的分享以後的一點感覺,圓心的格局很高,談到的都是技術形態、技術影響力和技術生態,本文格局還很小,只停留在技術成長上,只不過對於當下的筆者這種小格局彷佛更實用。

這就是筆者站在2019年年中對將來前端技術發展的思考。


相關文章
相關標籤/搜索