與后端技術相比,前端似乎沒有那么受人尊重。很多研發(fā)工程師曾經(jīng)看不上JavaScript,但是后來的時代變了,開源和大量相關工具的興起,引領Web應用快速增長。
這種發(fā)展,讓前端工程師開始離開JQuery,很多的科技公司開始使用最新的JavaScript和Eslint、Babel以及Webpack等工具構建應用。
如今,前端的發(fā)展速度快得令人難以置信。本文就是要讓大家趕上2022年前端技術發(fā)展領域的大方向。也許在這些趨勢中,你能找到合適自己的東西。
Svelte越來越受歡迎
Svelte是一個相對較新的工具,因為它起步較晚,沒有機會與React、Vue以及Angular匹敵。但它卻在以前所未有的速度穩(wěn)步普及。
2021年,StackOverflow宣布Svelte為最受歡迎的前端框架。
但Svelte 并不只是一個前端框架,它還是一個構建和優(yōu)化前端的編譯器。
它不像其它流行的框架那樣導入到應用程序中,而是被編譯為純JavaScript,因此它在速度上要勝于React或Vue等框架。
使用Svelte很方便,以下是代碼示例:
Using the framework is very easy. Here is an example of using state + forms. let a = 1; let b = 2; {a} + = {a + b}
可以看到,就是這么簡單??偨Y有以下三件事值得開發(fā)者信任Svelte框架:
1、簡單優(yōu)雅的表單處理,如同SPA框架,不需要加入onChange事件在輸入中;
2、標簽與邏輯可并存,封裝了邏輯和視圖層;
3、管理狀態(tài)相對其它框架很容易。
現(xiàn)在Svelte在社區(qū)中受歡迎程度很高,相信流行只是時間問題。
React、VUE與Augular們會繼續(xù)存在
大約6年前,在Augular2發(fā)布之前,我開始了自己的前端旅程。后來也在很多文章上看到無數(shù)次說到Vue、React或者Auglar要被淘汰。
然而直到現(xiàn)在,這三個框架到現(xiàn)在仍然存在,而且都很受開發(fā)者們歡迎。我們如下圖所示:
可以看到上圖,Angular的流行度是開始時的十倍還多,而React和Vue的增長更快。這三個框架不相伯仲,無論你選擇哪一個,未來幾年內都會有人使用支持,所以不必擔心。
2021年React沒有太大的變化,但它的適應能力令人驚奇,目前React是擁有擴展庫和支持最多的框架。
值得一提的兩個例子是 Next 和 Gatsby,后者將是下一個熱門趨勢之一。
前端框架應同時支持靜態(tài)和動態(tài)兩種類型頁面
讓我們來看靜態(tài)頁面和動態(tài)頁面的定義。
動態(tài)頁面是用戶打開網(wǎng)頁時實時獲取或處理內容。靜態(tài)頁面是在構建就預定義好的,它們是分別生成的獨立文件,它們看起來和動態(tài)文件一樣,但用戶端瀏覽器要做的工作卻要少很多。
比如一個在線商店,你可以只有一個動態(tài)的商品頁面,也可以根據(jù)SKU數(shù)量,生成數(shù)千個甚至更多個靜態(tài)商品頁面,每個商品一個。
總結來說,靜態(tài)頁面對用戶來講性能更高,但編譯構建時間要更長些。
不用靜態(tài)頁面的原因是React或Vue的單頁應用(SPA)框架的普及,但SPA的動態(tài)頁頁要比用HTML寫的頁面要慢得多,特別是從服務器端下載、處理數(shù)據(jù),性能問題比較大。
Gatsby通過在Reat中搭建靜態(tài)頁面框架以及基礎設施來解決此類問題。
另外,Vercel和Nextjs框架能夠運行在服務器端,在后端渲染,能夠讓開發(fā)者生活更輕松。
Netlify 專注于客戶端框架,例如純 React 和 Vue。它提供了很多的有用工具,例如即用型表單、身份驗證和無服務器功能,它是傳統(tǒng)客戶端應用的最佳選擇。
前端優(yōu)化的關鍵
對性能產(chǎn)生負面影響的庫,如 Moment.js,將被更輕、高性能的庫所取代,如 Day.js。其他的則被重構以減小JS包的大小。包括 Material UI 和 Lodash。
Tailwind 目前廣受歡迎,2022 年它肯定會繼續(xù)流行。它可以像幾乎沒有其他 CSS 工具一樣處理減少應用程序加載時間。但是它的問題是可讀性極差,學習曲線也比較高。
各位也可以嘗試 Linaria。Linaria 結合了樣式組件的優(yōu)點和使用靜態(tài) CSS 文件的速度。
GitHub:https ://github.com/callstack/linaria 。
Linaria代碼示例如下:
import { styled } from '@linaria/react'; import mainTheme from 'themes/mainThemeV2'; export const Wrapper = styled.div` display: flex; flex-direction: column; align-items: center; height: 100%; width: 30px; max-height: 60px; border-bottom: 1px solid ${mainTheme.colors.neutral300}; background-color: ${mainTheme.colors.primary300}; border-radius: 8px;
以上的結合,就有了非常好的用戶體驗,速度也更加快速。
小結
有很多創(chuàng)新正在發(fā)生,前端技術正在快速發(fā)展。希望這篇文章給大家一些有價值的東西。感謝閱讀!