前端之變(一):技術的變與不變

從本週開始,我將就前端技術之變作的一些思考記錄下來。前端

這是第一篇: 技術的變與不變程序員

變與不變

首先,作爲一個技術人員,你要明白一個道理:數據庫

> 對技術而言:惟一不變的事情就是變化編程

因此,想要成爲一個優秀的程序員,你不能指望只精通一門語言或幾種框架類庫,就能成爲你永恆的資本,讓你在技術的世界無往而不勝。後端

這是不可能存在的事情。設計模式

這也是爲何不少技術人員搞了一些年就準備退出的緣由所在,可能隨着年齡的增加,他們認爲本身已經沒法再跟得上這種變化了,受困於本身的思惟或能力,他們指望能從這種變化中逃出來,去尋找一種他們指望的穩定的能安心立命的東西。固然,在他們的思惟中,這個確定不是『技術』框架

但顯然這是繆論。前後端分離

由於這些人沒有意識到技術在變的過程當中,存在着『不變』的東西。一旦你掌握及理解了不變的東西,所謂的變化對你而言,可能就如同換膚同樣輕易與簡單。微服務

這也是爲何國外不少優秀的程序員一把年紀了仍是在技術第一線。這樣的例子不勝枚舉,Robert C.Martin,Martin Flow還有Linux的做者。學習

而咱們這,可能30還沒到,不少編碼的就想着怎麼逃出去,以爲本身可能學不動了或幹不動了。

爲何別人能作到的事,在咱們這片土地上,咱們作不到?這是很是咱們反思與思考的一個現象。

我在2020年與前端的一些交集,讓我意識到了技術的這種變與不變。對我而言,彷彿這是一個全新的世界。

這也是我想分享出來的緣由所在。

我與前端

大多數前端人員是流水線式的,可能從編碼開始就作的前端,而後一直投入在前端這個方向中,後面變化的只是時間及經驗,2年,5年或更多。

顯然,我並不能算是一個前端技術人員,事實上我與主流的前端技術人員的經歷相差過大,我很難說本身是他們中的一員或與他們的經歷相似。

我與前端的交集並非個流水線。它是斷點式的。

主要可能有三個階段:

階段一:工做以前

在這個階段,由於本身的專業與計算機有點關聯,記得大學還專門有個課程就是學習HTML知識的,當時應該是HTML4,這門課程結束時老師還要求用HTML作個網站。

這多是我與前端的第一次相遇。

階段二:後端開發

我工做的很長一段時間是在後端開發,可能如今的後端人員沒有這種經歷,但在我作後端的那些年,前端並非一個獨立的技術方向,事實上,當時的前端更多的是後端兼顧的。

因此,如今可能大多數前端人員不太知道的一些技術其實在早期也是能夠算是前端的技術,好比JSP,Freemarker模板,還有Struts頁面等。

這些是什麼東西?可能如今的前端與後端人員都不太熟知這些技術了。由於如今的主流開發模式應該是先後端分離。也就是後端邏輯後臺人員來實現,而後提供REST API接口。而前端邏輯由前端人員來處理。但在我工做的早幾年,可不是這麼回事,那個時候的頁面但是由後端人員本身來作,方式就是上面說的相似JSP,Freemarker模板這些技術。

爲何?

由於當時前端技術自己不足以提供動態渲染複雜頁面的技術能力

隨着WEB頁面愈來愈複雜,早期的HTML這種靜態頁面已經徹底不能適應複雜WEB頁面的須要,但當時前端自己又根本提供不了動態渲染複雜頁面的能力,JQuery這種動態DOM操做雖然有必定的頁面操做能力,但不能應付很是複雜的頁面,因而由後端動態渲染頁面,成爲了當時的主流。

階段三:先後端分離

在2020年以前的幾年時間,我都主要是在負責移動端相關的編碼工做,這個階段與後端打交道很少,雖然仍是有一些。與前端就基本沒打過交道了。

因此,等我2020年再次與前端相遇時,前端已是徹底不一樣的世界了。我所熟悉的JQuery也好,HTML也好,在這個前端的世界基本能夠說是處在邊緣甚至能夠說是被拋棄的技術了。

2020年上半年,我開始PCX的開發工做,這個是基於Electron的跨平臺桌面開發。

我是用了前端的一整套技術搭配,包括TypeScript,React,WebPack,Mobx等,作了個跨平臺的桌面軟件。

基於Electron及前端的跨平臺桌面軟件

也就是我並非作前端開發,但因爲這玩意其實就是基於一整套前端技術而開發的,因此我搞完這個,天然也就再次明白如今的前端開發怎麼回事了。

哪些改變了,哪些沒有改變?

因爲不是流水線式的經驗,而是這種斷點式的,再結合我有後端,移動端的開發經驗。因此,我就會以爲前端技術的發展有點難以想象,相比後端與移動端,簡單能夠說是天翻地覆式的變革。

因此,我也時常思考,什麼緣由?

它改變了

是的,很顯然,它改變的太多了。

後端與移動端這幾年的技術變化遠不能與前端相提並論。

雖然我在前幾年沒怎麼接觸後端,但等我再回到後端時,沒有任何生疏感。主流的無非是從SSH變爲Spring Boot,再就是微服務的流行。事實上,就算微服務興起,它仍然沒有辦法取代過往的單體或集羣服務這種模式。或者新興的Kotlin或響應式編程這種模式,但這種原本也是少衆,不可能成爲主流,並且就算以這些來論,其變化的幅度仍然與前端不可相提並論。

而在移動端,無非是原生開發,Hibrid混合開發,再就是相似React Native與Flutter跨平臺開發這些,這些遠稱不上改變,它們也只是不一樣的解決方案而已,適應不一樣的場景,並不算得上演進或改變。由於它們之中沒有任何一種模式能壓倒性的取代其它模式。

而前端則全然不一樣,它並不僅是出現了新的技術或框架這麼簡單,更多它是一種新的編碼理念徹底取代了舊有的編碼理念,新的編碼模式壓倒性的取代了舊有的編碼模式。

包括但不限於:

  • 前端由後端渲染轉變爲前端動態渲染

  • 從HTML+JS這種腳本式編碼變化爲TypeScript+React這種面向對象的編碼

  • 出現了React,Vue這種組件式的UI編碼,取代了舊有的HTML+JQuery的DOM操做這種模式的UI編碼

  • 從命令式UI到聲明式UI的轉變

  • 從編碼就是產物,到編碼與產物徹底是兩種大相徑庭的東西

這些改變,用天翻地覆來形容並不爲過。

它沒有變化

固然,因爲我在後端與移動端也有編碼經驗,因此當我把前端的這些變化放大到整個技術背景來看,我就能發現它又有不少東西其實並無改變。

給人一種之前遊離在外的小孩回到了主流的隊伍的感受而已。

包括但不限於:

  • TypeScript是面向對象的語言,它與Java極爲相似。
  • 我把DDD領域驅動應用取了PCX的開發
  • 我在PCX抽取的數據庫的框架,是我在iOS抽取的數據庫框架的復刻版而已。
  • 前端能夠應用基本的面像對象的原則及設計模式了

因此,看到沒,若是把範圍放大,你說它改變了麼?

道與術

這就是我在2020年的感悟到的一個最大的事情 ,技術這個東西原來存在變與不變兩方面的東西的。

這就是道與術

理解並掌握了這個,你就能成爲一名優秀的程序員,不會懼怕任何改變或新技術。

關於道與術,我後續另外會專門講這些話題。

事實上,我在準備作PCX時,上面講的幾個前端技術我一個都沒有接觸過,而TypeScript仍是我從其餘前端人員中聽來的,直至要搞前我都不知道前端還有這個技術,這些玩意我當時也只是花了2周看了下是什麼就開始搞了。最終我花了不到5個月的時間,完成了PCX的第一個版本。

而在今年搞myddd-vertx以前,我對kotlin與vert.x也基本一無所知,但myddd-vertx從我起意到實現再到應用到一個具體的項目,可能2個月時間都沒有。

因此,你想成爲優秀的程序員,必定要去追尋編碼之道。

前端之變與緣由

我在前端講述過了前端的這些變化 ,意味着前端的編碼發生了一個質變。

那究竟前端發生了什麼樣的改變,具體表現是什麼?

又是什麼致使前端發生了這種質變?

下個文章我再來說述:前端之變(二):前端的變化與緣由追尋

相關文章
相關標籤/搜索