近年來,Web 應用在整個軟體與網際網路行業承載的責任越來越重,軟體複雜度和維護成本越來越高,Web 技術,尤其是 Web 客戶端技術,迎來了爆發式的發展。
1.用Node做中間層的前端工程化方案2.Webpack、Rollup 這樣的打包工具;Babel、PostCSS 這樣的轉譯工具3.前端三架馬車React、Angular、Vue 這樣面向現代 web 應用需求的前端框架及其生態4.與APP結合的混合開發模式,內嵌單頁webview,Hybrid App
當然了,所謂的趨勢,不是一天兩天就到來的,它是未來的一個技術方向,我們之所以關注趨勢,是要關注變化,技術的發展與普及不是一日之功,一定是慢慢過渡的,但是你能夠比其他人提前看到方向,真正的市場到來的時候,你就可以提前做好準備,提前發掘機會。
從 Facebook 的 Reactive Native,再到 Google 的 Flutter,足以看出,起碼對這些科技巨頭們來說,他們是認定這個方向,並且在投入的,只是當下技術還不夠成熟,所以這類前端跨平臺開發框架都還不夠普及,但是你們得相信,這些巨頭的判斷與實力。
再說到國內各種平臺的小程式,微信小程式、支付寶小程式等等,其實都是屬於真正意義的大前端,所以前端開發人員,以後的要求會越來越全面,你別覺得不信,等著未來的發展就知道了,以後很可能一個前端開發必須是全棧前端。
TypeScript 使用率激增
2019 年是 TypeScript 之年。TypeScript 不僅成為了在 JS 程式碼中新增資料型別的事實選擇,而且許多開發人員會經常在個人專案和工作中,用它來代替普通的 JavaScript。
在 2019 年初發布的 StackOverflow 調查中,TypeScript 與 Python 並列最受歡迎語言次席,僅次於 Rust。在 2020 年初將釋出的新調查中,如果我們看到 TypeScript 的排名再進一步,應該也不會有什麼奇怪。
TypeScript 已經席捲了整個 Web 開發世界——前端和後端皆是如此。一些開發人員認為 TS 只是跟風炒作的產物,覺得它會步 CoffeeScript 後塵;但 TypeScript 已被證明可以解決 JS 開發人員面臨的一大核心問題,而且它的使用率看來只增不減。TypeScript 與所有主流文字編輯器的整合,為 Web 開發人員提供了更好的開發體驗。JavaScript 開發人員將 TypeScript 視為一種工具,它可以減少錯誤,還可以通過(提供自帶描述的)型別和物件介面更輕鬆地讀取程式碼。
值得注意的是,TypeScript 在 2019 年的 NPM 下載量超越了 React,其流行程度可見一斑。此外,它的下載量也比 Flow 和 Reason 等競爭對手高得多。
下一代Web應用:PWA
老生常談,我們先對比一下生活中WebAPP 和 原生APP的優劣
web APP 對比 原生APP 的優勢,開發成本低,適配多種移動裝置,不用IOS 安卓多套程式碼,迭代更新容易,省去了稽核、發包、各種渠道釋出帶來的時間損耗,無需安裝成本,拿來即用
當然原生APP也有它獨到的優勢,這些web app所沒有的優勢我們也不知道以後會不會有突破!
PWA解決的問題
能夠顯著提高應用載入速度
甚至讓 web 應用可以在離線環境使用 (Service Worker)
web 應用能夠像原生應用一樣被新增到主屏、全屏執行 (Web App Manifest)
進一步提高 web 應用與作業系統整合能力,讓 web 應用能在未被啟用時發起推送通知 (Push API 與 Notification API) 等等。
推送Push Notification
Push API 的出現則讓推送服務具備了向 web 應用推送訊息的能力,它定義了 web 應用如何向推送服務發起訂閱、如何響應推送訊息,以及 web 應用、應用伺服器與推送服務之間的鑑權與加密機制;由於 Push API 並不依賴 web 應用與瀏覽器 UI 存活,所以即使是在 web 應用與瀏覽器未被使用者開啟的時候,也可以通過後臺程序接受推送訊息並呼叫 Notification API 向用戶發出通知
WebAssembly
什麼是WebAssembly
WebAssembly 是由主流瀏覽器廠商組成的 W3C 社群團體 制定的一個新的規範。
它的縮寫是".wasm",.wasm 為檔名字尾,是一種新的底層安全的二進位制語法。
可以接近原生的效能執行,併為諸如C / C ++等語言提供一個編譯目標,以便它們可以在Web上執行。它也被設計為可以與JavaScript共存,允許兩者一起工作。
能突破前端3D game 、 VR/AR 、 機器視覺、影象處理等執行速度瓶頸
WebAssembly 是一種新的位元組碼格式,目前主流瀏覽器都已經支WebAssembly。和 JS 需要解釋執行不同的是,WebAssembly 位元組碼和底層機器碼很相似,可以快速裝載執行,因此效能相對於 JS 解釋執行而言有了極大的提升。也就是說WebAssembly 並不是一門程式語言,而是一份位元組碼標準,需要用高階程式語言編譯出位元組碼放到 WebAssembly 虛擬機器中才能執行, 瀏覽器廠商需要做的就是根據 WebAssembly 規範實現虛擬機器。
有了 WebAssembly,在瀏覽器上可以跑任何語言。從 Coffee 到 TypeScript,到 Babel,這些都是需要轉譯為 js 才能被執行的,而 WebAssembly 是在瀏覽器裡嵌入 vm,直接執行,不需要轉譯,執行效率自然高得多。
舉個例子,AutoCAD 軟體是由美國歐特克有限公司(Autodesk)出品的一款自動計算機輔助設計軟體,可以用於繪製二維製圖和基本三維設計。使用它時,無需懂得程式設計,即可自動製圖,因此它在全球被廣泛應用於土木建築、裝飾裝潢、工業製圖、工程製圖、電子工業、服裝加工等諸多領域。
AutoCAD 是由大量 C++ 程式碼編寫的軟體,經歷了非常多的技術變革,從桌面到移動端再到 web。之前,InfoQ 上有一個演講,題目是《AutoCAD & WebAssembly: Moving a 30 Year Code Base to the Web》,即通過 WebAssembly,讓很多年代久遠的 C++ 程式碼在 Web 上可以執行,並且保證了執行效率。
hrome 的核心 JavaScript 引擎 V8 目前已包含了 Liftoff 這一新款 WebAssembly baseline 編譯器。Liftoff 簡單快速的程式碼生成器極大地提升了 WebAssembly 應用的啟動速度。2019年,很多的公司都開始投入人力進行WebAssembly的學習個改造,相信2020年WebAssembly會經歷爆發式期。
Serverless
Serverless 的爆是乎可以歸因於前端。因為 Serverless 能夠較完美的⽀持Node.js,使⽤ Serverless 幫助前端開發者解決了使用Node.js 過程中的諸多問題。當前的前端工程師大多都是科班出身,雖不能和正宗的服務端開發同學比,但也可寫很多服務端層的業務邏輯。當前已經有很多公司在做 BFF 層,來滿足這部分訴求,但依舊擺脫不掉運維、機器分配 這條攔路華。隨著 Serverless 的逐步落地,BFF 這層的程式碼會擺脫運維、機器分配等複雜的問題,同時大概率會由前端同學寫這部分程式碼,服務端同學專注中臺系統的實現。從業務上說,業務的試錯成本也會大幅度降低。
隨著 Node.js 成為前端開發者必備技能之後,雲端計算的不斷普及會讓Serverless 觸不可及。當越來越多的開發者嚐到研發⾼效的甜頭之後,Serverless 必將對前端的研發模式產生變化
同時,使用Serverless的同學一定會使用 TS。這也意味著,2020 不寫 TS 可能真的就 Out 了。
另外提醒
① TS 一定會在火的,現在用 TS 的感覺,讓我感覺跟 vim 很像,剛開始用的時候很難受,一旦習慣了就離不開了。未來專案會越來越複雜,用了 TS 專案的風險會可控很多。
② 多注重框架原理,現在對於前端工程化,,注重原理才能很好的應對未來的發展。