本周繼續就前端之變闡述自己的思考,
前面我講了前端的一些變化,但是事實上,過去數年,前端不僅是在自己的技術方向發生了巨大的變化,它試圖向所有技術方向發起進攻,取代其主流技術,那這一切又是怎么回事,現狀如何?
本篇為前端之變系列的第四篇:進擊的前端,本系列其它文章:
- 前端之變(一):技術的變與不變
- 前端之變(二):不變的前端
- 前端之變(三):變革與突破
全方位的進攻
如果我們再回顧過去幾年技術的發展歷程,我們會發現,前端的變化絕不僅僅體現在前端這一個方向本身,以JavaScript為核心語言的前端不僅在網頁編程方面生了變革與突破,更有意思的是它向其它方向去突破與發展,試圖去占領本不屬于自己的領域
后端開發–NodeJS
在我印象中,我還在做架構師,使用Java做后端開發時候,NodeJS那段時間非常流行,
當時我并不太清楚這個技術的相關細節,只是簡單的知道可以使用JavaScript語言從事后端開發,也就是現在Java所做的事,甚至有一段時間,整個業界對NodeJS非常推崇,
有可能是因為它的事件回圈機制遠比傳統執行緒阻塞的Java高效,也有可能是因為它不需要后端Java程式員,只需要前端工程師?還是也有可能是其它我并不知道的原因,反正那一段時間大家對它非常認可,包括一些主流的互聯網公司,
有一種它真的能取代Java的感覺,
移動端開發–React Native
不僅是在后端,前端還把它的觸角伸向了移動開發,
在我們技術這個領域,始終存在一種對抗與沖突,就是原生開發與跨平臺開發,只要在有多個原生開發的地方,就一定有試圖跨平臺的開發的技術出現,
而這個現象在移動端特別突出,因為我們當前仍然處于移動優先的現狀中,大家對移動技術的各種嘗試永遠不會停止,
在移動端跨平臺開發技術領域中,前端再一次發起了進攻,Facebook基于它的React,整了一個React Navite技術,用JavaScript + React的理念構建一個解決移動端開發的跨平臺開發,
這一次,JavaScript向移動開發發起了進攻,
桌面開發 – NW.js與Electron
如我前面所講,只要在有原生開發的地方,就會有跨平臺開發的技術出現,
同樣的現象也出現在桌面開發,
過去,由于Window一家獨大,桌面開發也只需要考慮它,因此也沒有太多跨平臺的需要,
但是隨著iOS的興起,連帶Mac OS系統的在一些專業行業的興起與流行,比如編程與設計,Linux桌面也一同緩慢發展,在這種背景下,再加上JavaScript本身發展的能力,使它具備了發展出一種跨平臺的桌面開發技術,
因此,跨平臺桌面開發技術–NW.js與Electron就出現了,
這一次,前端技術向桌面開發發起了進攻的號角,
突破與挫折
如果我們把眼光擴大到整個技術,我們會發現,沒有任何一個技術可以與前端的這種全方位的進攻相比較,也沒有第二個技術能做到這個地步,
很顯然,所有這一切,都是突破性的,我們不得不承認它帶來了全新的技術方案,雖然前端在各個方向的發展現狀各有不同,甚至是一些方向遇到了挫折,但它這種突破仍然是值得敬畏的,并且上述所有方向的前端提供的解決方案直到現在仍然是可行的,
NodeJS – 無法取代Java
Java仍然是那個長盛不衰的語言,NodeJS沒能取代它,
在后端領域,使用Java仍然是主流的選擇,NodeJS在這個領域只能算是提供了一個小眾的解決方案,確實有一些使用NodeJS來做后端的專案或產品存在,但與Java相比,不可相比,如果是大規模復雜架構的需求,Java幾乎成了唯一選擇,NodeJS完全不可取,
React Native – 處境艱難
雖然我沒有真正使用過React Native,但基于我過去實實在在的做過iOS與Android原生開發,也用過React,同時React Native的官方檔案我也看過許多遍,我對它的理念與技術實作還是有一定了解的,
React Navite試圖讓前端人員做移動端開發,但它存在兩個致命的缺點:
- 它與Java這種跨平臺解決方案不同,它并無一個JVM中間層去屏蔽各個不同的作業系統,提供統一的API或體驗,而是翻譯成不同的作業系統的原生實作,這種方式帶來了非常多的細節問題,使用React Native,你很難忽略原生的存在,而前端人員與移動端原生技術存在明顯錯位與無力,
- 它在性能上與真正的原生始終存在差距,就像一道無法越過的鴻溝,當App需要考慮體驗與性能時,React Native的這個缺點就會被放大很多倍,
幾乎每隔一段時間,就有哪個公司放棄RN,回歸原生的新聞,而近些年出現的Flutter技術,采用了與React Native完全不同的策略,它提供了一個『中間層』,如同JVM一樣,試圖完全屏蔽原生的存在,
React Native的現狀用一句話來形容就是:前行艱難,后有追兵
NW.js 與 Electron – 性價比高的解決方案
NW.js與Electron相對而言,處境就好很多了,
與NodeJS不同,它沒有面臨Java一樣的主流競爭者,在桌面跨平臺開發方面,從性價比來考慮,沒有比它更好的選擇了,
同樣,與React Native不同,使用它們,你幾乎不用考慮原生系統的存在,它構建于Chromium之上,
除非你對性能有較高的要求,大多數程式使用它們已經足夠解決了,它們是性價比最高的解決方案了,
你可能沒有意識到,現在很多流行的軟體都是基于這種方案而構建
- 前端人員開發工具: Visual studio code – 如同神一般的存在,它代表著基于此種方案能做到的最好的程度了,
- 早期釘釘客戶端,也是基于這種方案來構建
- 微信小程式的IDE
- 迅雷X
還有很多,那些你下載下來發現有幾十M到上百M的,又跨平臺的,基本你就可以往這方面考慮,它很有可能是基于這種方案做的,

我在20年做的PCX,就是基于Electron的解決方案,我甚至為它編譯了一些國產Linux系統的版本,特別是龍芯CPU上的一個版本,令我印象深刻,這說明它跨平臺的能力非常強大,

當然 ,這種方案下,能不能做的好,就要看水準與實力了,很多基于這種方案把產品完全做了一個帶殼的網頁應用,這種就是比較low的表現了,這種我也實實在在的遇到挺多,
Web網頁應用與原生應用在思維上存在一個本質區別:
Web資料幾乎都是全量加載,每次進入都是從零開始加載資料,而原生應用幾乎都是增量加載,每次進入都是增量重繪,應用需要將必要的資料盡量快取在本地
這是一個標準,通過這個標準你就可以知道你底是做成了一個帶殼的網頁應用還是一個類原生應用,
這一切是如何發生的
前端的發展是令人驚嘆,不僅是前端本身,事實上在所有領域,現在都有前端的身影,它們向所有技術方向發起了進攻,
最開始的前端還只是后端開發的一個附屬,后端開發時的頁面需要前端人員來實作,事實上,那個時候很多還是后端程式員兼職做的,對比今日之前端,不可同日可語,
前端技術已經變成我們行業不可忽略甚至是值得非常重視的存在了,
所以,我們就不得不發出靈魂式的問題:
究竟是誰,讓前端發生了這樣的改變?
下一篇繼續:前端之變(五):王者的歸來
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/306446.html
標籤:其他
上一篇:beautify配置
