這是我個人的理解的前端2022年,甚至以後的前端發展的方向。這裡沒有太多的乾貨的知識,不會告訴你說Javascript怎麼寫,也不會告訴某個頁面需要怎麼排版……那都是一些很基礎的東西(但是並不能我的本篇文章和思考有多麼的高大上),這些方向的瞭解可能會貫穿我們整個前端的職業生涯;也可能等你在前端這個行業中摸爬滾打了多年之後,你才在某個清晨恍然大悟,原來這麼多年我都是個機器:把設計稿轉換成頁面,每天做著這樣重複但是看似有意思的工作。而我就是其中的後者。
先簡單的介紹一下為什麼我會有這樣的想法吧。
我的前端經歷
我是2010年開始學的前端,其實那個時候也就是那個時候前端還不能算是前端,Html5 還未釋出,我們用的瀏覽器也還是IE6到IE8,我們前端還是一個最底層的工作(確切來說叫切圖仔);那個時候CSS還是處於1.0到2.0時代(為了保證頁面不亂,我們喜歡用table進行佈局);那個時候瀏覽器還不支援很多的類(不如說那個時候還沒又JSON物件,要想將字串專程物件,就得用eval);那個時候我們用的工具還是網頁三劍客(可能現在的很多的前端小夥伴都不清楚網頁三劍客是什麼東西,網頁三劍客:Dreamweaver, Firework, Flash)……就是在這樣的一個環境中,我開始接觸了前端。從第一個input框開始,到一個百度頁面,再到後來的後來,再到今天。我正兒八經開始做前端的工作是從2015年開始的。所以這中間經歷的很多的前端方面的時代的變遷。
從接開始前端方面的工作開始,從最初的P2P,到遊戲,再到最後的2B的SAAS行業;從最初的JQuery時代,到後來的angualr1,再到後來的angular,vue,react三足鼎立框架的改變;從最初的grunt,gulp到webpack再到snowpack和vite等打包工具的變遷。就在這幾年的時間中發展迅速,但是不變的就是前端的主要使用的東西依舊是html,css,js。
個人前端發展方向
對於我的經驗來說,我理解的前端個人的發展方向未來會有以下幾個方向:
• 深入理解業務,站在技術的角度能夠提出更好的業務方面的改進,前端互動以及使用者體驗的發展(UED)
• 偏向於服務端的前端開發,說白了就是基於NodeJs來實現前後端的統一開發
• 偏向於工具類的開發,其實工具類就包含很多的東西了,比如說基於Node的rollup之類的,還有就是webpack,vite等相關的大包工具的開發
• 偏向於跨平臺方案的解決方案的設計和開發,比如說uniapp,taro,flutter,RN等等。
• 基於瀏覽器的音視訊功能的開發
• 基於瀏覽器的圖形影像類工具的開發,比如說線上PS,等等
• 基於WebGL,和canvas的遊戲模擬,虛擬現實的開發。
前後端全棧開發方向
隨著NodeJs的發展,以及基於NodeJs的web服務端的框架的逐漸成熟,現在已經有很多企業都在使用NodeJs來作為服務端開發的解決方案了。這個時候的前端,其實就不僅僅是一個前端了,而是一個全棧開發工程師。我們前端會接觸到很多做後端的同學,這樣在跟他們溝通的過程中對與後端同學使用的技術以及開發的內容比較感興趣,於是乎就開始學習部分後端的語言,比如說go,比如說Java,python等可以用來寫服務的內容。漸漸的就逐步發展成為了一個全棧開發工程師。
那麼對於一個全棧工程師來說,應該具備哪些方面的能力呢?
• 至少了解一門後端語言(不限於NodeJs,Python,Java,Go,C#),並且瞭解該語言所對應的服務端的開發框架。畢竟流行的語言,都會對應的有一個良好的開發框架:Node的express和koa,Python的Django,Java的Spring,Go的Zero,C#的.Net Mvc等等。只要瞭解了這寫東西,才能夠讓你在後端開發過程中游刃有餘。
• 資料庫,快取,訊息佇列等等。資料庫是用來儲存使用者的資料的,常用的資料庫有MySql,Sqlserver,postgreQL這些關係行資料庫,還有一些非關係行的資料庫,比如說No-SQL,Redis等等,對於web後端還需要了解一些優化的方案,比如說使用快取memerycach,訊息佇列等等。
• 網路及通訊協議,網路方面的內容我相信這都應該是一些很基礎的內容,尤其是針對一個web開發人員來說,瞭解網路協議等內容,是我們必不可少的東西,常見的http通訊和sokcet等;除了這些還有可能會涉及到程式見通訊,管道,Rpc等等。
• 架構設計能力,這個能力其實對於全棧工程師是必不可少的東西,網站的設計如何,將直接會影響到使用者的體驗等等。
• 伺服器運維能力,開發好的內容,就需要部署到對應的伺服器上,給別人用起來,這樣才有價值。因此作為一個全棧,最起碼的搭建伺服器環境,做最基本的專案部署迭代工作還是很重要的。
工具類的開發
這裡所要講的工具類的開發涉及到很多個方面:
• 我們開發過程中的打包工具webpack,rollup,vite等等,
• 基於web的工具:vscode等
• 基於web的CAD等相關的工具,比如說線上PS,figma
• 線上辦公工具,比如說,金山文件,draw.io等等
• ……
由於web的輕量和隨時隨地以及跨平臺,以及目前瀏覽器越來越強大,以至於這樣的線上版的工具越來越多而且未來也會越來越多。在未來,很多桌面版的工具會被搬上瀏覽器,而對於前端來說,這些工具的開發過程中就涉及的都是功能也逐漸被前端化,因此,前端的在這些方面又可以進行大展拳腳了。
跨平臺框架開發
說起誇平臺開發,很多的前端開發者都能夠講出來一些,比如說cordova,ionic,react- native,weex,kotlin-native,flutter等跨平臺的框架百花齊放。當然,對於目前,國內我們還有小程式,在使用者體驗方面,小程式有著天然的優勢,另外,小程式能夠提升使用者的粘性,因此各大廠商都在拼命的發展自己的小程式業務,我們常見的小程式有:微信小程式、QQ小程式、支付寶小程式、淘寶小程式、百度智慧小程式、今日頭條小程式、抖音小程式、360小程式。當然,面對這麼多的小程式平臺,雖說有不少的相似的地方,但是同樣存在著不小的差異。因此對於我們我們前端來說不應該是每來一個平臺就為其開發一套,因此,有不少的結局方案,比如說uniapp,taro等,解決方案。
對於我們前端來說如果僅僅是學會使用這些框架和解決方案,來完成企業的業務,發展來發展去,到最後,依舊是一個體力活。而這些,也正如上面所講到的那樣,絕對不是我們做前端的終點。因此,我們要做的就是其深層次的東西的研究。就是研究其底層進行跨平臺編譯的原理和編譯思想。這樣所能夠接觸到的東西,以及這些東西所涉及的方面就會更加的深入。
在做這方面的研究過程中,能夠接觸到不同平臺等網路,渲染,執行語言等方面的只是,還能夠使我們更加深入的立即程式語言的魅力以及其編譯和執行的整個過程;另外還會了解的到虛擬機器,作業系統,計算機體系結構,網路等等多方面的底層的只是內容;另外對於渲染層面的內容,我們要了解的可不僅僅是瀏覽器的渲染原理(什麼重排,重繪等等),更重要的是去實際思考我們的東西應該怎麼去繪製,中間包含有計算機圖形學,影像處理等多方面的內容……
因此如果在
音視訊方向
近幾年,國能的短視訊,線上視訊播放的不斷的增長和拓張;2020 年疫情爆發,直接促使了會議、教育等線上視訊產品的飛速成長;2021年1月26號WebRTC也正式的進入到了W3C的標準中,一時間基於Web的音視訊開發也被推到了風尖浪口。
未來基於Web的音視訊開發,絕對會成為稀缺,可能現在的很多人都覺得基於Web的音視訊開發,無非就是html5的video和audio的標籤麼?其實基於Web的音視訊開發(WebRTC)主要有兩個方面:
一個是音視訊的播放方面
• 支援對流式視訊和音訊的解碼和顯示
• 能夠從網路攝像頭中捕獲視訊和音訊流
• 對呼叫的協調協議(如訊號處理)
• 高效的音訊和視訊的編碼及解碼器
• 處理回波消除、噪聲抑制、位元率適應(根據頻寬自適應的流)等諸多方面的演算法。
一個是網路傳輸方面
WebRTC通訊方面的內部構造主要包含有下面的內容:
• 點對點通訊
• 防火牆和 NAT 穿透
• 信令,會話及協議
• WebRTC 介面
這中間的每一個模組都夠折騰很久了。然而這也僅僅只是一小部分的內容,未來WebRTC可能會涉及到的領域很多,比如說實時監控,網路雲遊戲,以及雲電腦等等。但是在前端這塊,其實基於瀏覽器去做音視訊方面的內容的開發,還是面臨和很大的挑戰的。因子未來前端同學如果感興趣的話,可以在音視訊方面進行較深入的研究。
資料視覺化方向
有人說資料視覺化不就是圖表麼,不就是呼叫echarts等圖表外掛把資料從冰冷的數字轉換成圖形,頂多就是色彩豐富一些,做一些特效什麼的,看起來更酷炫,逼格滿滿,寫老闆在寫PPT的時候顯得更好看一些。
其實不然,一個好的視覺化,能夠帶給人們不僅僅是視覺上的衝擊,還能夠揭示蘊含在資料中的規律和道理。常見的資料視覺化的使用場景有以下幾點:
• 工業數字化中臺,監控臺,園區裝置等場景
• 智慧家居的進一步發展,3D雲看房,遠端操控臺等場景
• NoCode下的3D模型,拖拽式的倉儲管理系統等場景
• 智慧機器人,Iot物聯網場景
• AR,VR、元宇宙.....
可見我們資料視覺化未來的發展以及使用的場景該是有多麼的有前途。
遊戲方向
從最早的flash頁遊,到現在,前端推出了Canvas以及WebGL,以及目前前段遊戲引擎的不斷的崛起:Egret、laya、pixi、three.js,通訊協議有websocket和http等等,而且再加上現在的瀏覽器基本上都開始不斷的放棄flash,因此,基於H5的遊戲,也越來越流行了。而且現在很多的平臺也都開始在搞遊戲化的宣傳,檢視通過遊戲來增加大家的使用者粘性:比如說支付寶的,螞蟻森林,螞蟻莊園等等,甚至還有一些會通過一些小遊戲來進行做一些宣傳。
不僅僅如此,就連元宇宙其實也是很遊戲有關的,當遊戲遇上了VR遇上了AR在遇上了Web,我相信這些東西所能夠帶來更多的新穎的東西。曾經我們在晚上賣東西或者是賣東西,都是漸漸的跟這些東西的進行了結合。
前端的技術研究方向
對於很多的有理想,有抱負的前端開發人員來說,為了支撐這些技術的發展方向,我們需要在哪些技術方面進行提升自己呢。我大致總結了以下幾個方面:
• 計算機圖形學
• 圖形影像和音視訊
• 計算機網路
• WebAssembly
當然這些內容其實看起來更多的是跳出了我們平時經常接觸的前端的三大主流內容,但是這些才是我們身為一個手藝人才應該將更多的精力投入進去,來充實自己,讓自己具備有更多的戰鬥力,讓我們能夠在前端這條路上面走的更遠。
小結
未來的瀏覽器會越來越強大,而前端的在整個技術領域中的劃分,也將變得越來越重要,而我們身為前端開發人員,要與時俱進,不斷的提升自己,來讓自己具備更強的市場競爭力,以及用我們自身的技術手藝來帶來更加巨大的社會價值。我也希望,更多前端小夥伴不再擁有35歲的焦慮。