這篇文章跟大家分享9個開源的 Vue3 元件庫,透過它們聊聊發現的前端的流行趨勢,希望對大家有所幫助!
參考如下開源元件庫,因為有些設計是多個版本和框架的,這裡只討論 Vue3 版本。 (學習影片分享:vue影片教學)
element-plus - 經典中的經典,全面支援Vue 3
#tdesign-vue-next - 鵝廠優質UI 元件,配套工具完滿,設計工整,文件清晰
arco-design-vue- 位元組跳動UI 元件庫開源,大廠邏輯,設計文件完美
ant-design-vue# - 螞蟻前端UI 庫,面向企業級中後台
naive-ui - 寶藏Vue UI 庫,Vue UI 新星,從Vue 3 開始
#vant - 有讚團隊開源移動UI 元件庫,全面支援Vue 3
##nutui - 京東出品,移動端友好,面向電商業務場景
-
#varlet - Varlet 是一個基於 Vue3
開發的Material 風格行動裝置元件庫,全面擁抱
Vue3生態,由社群建立起來的元件庫團隊進行維護。
TypeScript | Monorepo | 套件管理器 | esbuild | SVG Icon | CSS 變數 | |
---|---|---|---|---|---|---|
true | ||||||
#true | pnpm | true | true | #true scss | ||
tdesign-vue-next | true | submodule | 沒有lock文件,npm | true | true svg & iconfont | true less |
arco-design-vue | true | #true | yarn | vite預設true | true | false less |
ant-design-vue | true | false | 沒有lock文件,npm | true | true | true less |
#naive-ui | #true | false | 沒有lock文件,npm | true | #true xicons | #一個全新模式 |
vant | true | true | pnpm | true | false iconfont | true less |
nutui | true | false | #沒有lock文件,npm | vite預設true | false iconfont | false scss |
vuetify | true | true | yarn | #false | false iconfont | true |
TypeScript
流行度:100%
這個流行趨勢已經成必然了,現在面試也有越來越多的 TS 相關。
rollbar 是一個異常監控平台,rollbar 在2018 年統計了前端專案中Top10 的錯誤類型:
# #這裡有很多錯誤都是空的或未定義的。如果使用 TypeScript 就可以簡單的避免這些錯誤。
使用
TypeScript
可以避免 80% 的相關錯誤,當然
不行。 。 另外
的優勢不只如此,例如 IDE 的智慧提示,專案更容易維護等等。如果你還沒用過 過 TS,那最好現在就開始嘗試使用。
Monorepo包括
vue、Reac、Babel
等越來越多的專案都開始使用
#Monorepo,就是指將所有程式碼放到一個程式碼倉庫中的專案管理策略。
Monorepos 的優點- 依賴管理
- :共享依賴,所有的程式碼都在一個倉庫。版本管理非常方便。 程式碼重複使用
- :所有的程式碼都在一個倉庫,很容易抽離出各個專案共用的業務元件或工具,並透過 TypeScript 在程式碼內引用。 一致性
- :所有程式碼在一個倉庫,程式碼品質標準和統一風格會更容易。 透明度
Monorepos 的缺點
-
#效能
:程式碼越來越多, Git、IDE - 之類的工具會越來越卡牌。
權限
:管理檔案權限會更具挑戰, Git - 目錄並沒有內建的權限管理系統,整個專案是沒辦法區分某些部門開放哪個項目,某些部門關閉的。 學習成本
Monorepo 絕對不是銀彈,Monorepo 策略也不完美,但某些方面來說確實解決了一些專案的維護和開發體驗。 如果你的專案有多個關聯倉庫,或者還在用
submodule
方式管理多個倉庫,那可以試試看
。
套件管理器有
55%
使用非npm
,剩下45%
看不出來使用什麼套件管理工具,最主要的是居然都沒有
文件,這個是真沒看懂,作為開源專案不需要統一依賴版本的嗎?
npm v1-v2-
npm第一代的
會導致重複安裝依賴,例如A 依賴C,B 也依賴C,這時會安裝兩次C。 (是安裝兩次,不是下載兩次。會下載到本地快取。) -
node_modules因為是樹型結構,
嵌套層級過深(會導致檔案路徑過長的問題) - 模組實例不能共用。例如 React 有一些內部變量,在兩個不同套件引入的 React 不是同一個模組實例,因此無法共享內部變量,導致一些不可預測的 bug。
npm v3 / yarn
#從
npm3
和
開始,都會透過扁平化依賴的方式來解決上面的這個問題。 所有的依賴都被拍平到
node_modules
目錄下,不再有很深層的巢狀關係。這樣在安裝新的套件時,根據node require
機制,會不停往上級的
當中去找,如果找到相同版本的套件就不會重新安裝,解決了大量套件重複安裝的問題,而且依賴層級也不會太深。
- 但同時,這樣也帶來了新的問題
-
package.json###裡並沒有寫入的套件竟然也可以在項目中使用了。 ###幽靈依賴-
分身依賴- 例如A 和B 都依賴了C,但是依賴
C
的版本不一樣,一個是1.0.0
,一個是2.0.0
。這時取決於A 和B 在package.json
中的位置,使用的C
有可能是1.0.0
版本,也可能是2.0 .0
版本。平鋪減少安裝沒有減省時間,因為演算法的原因,時間居然還增加了。
npm v5 / yarn
#該版本引入了一個lock
文件,以解決node_modules
安裝中的不確定因素。這使得無論你安裝多少次,都能有一個相同結構的node_modules
。
然而,平鋪式的演算法的複雜性,幽靈依賴之類的問題還是沒有解決。
yarn v2 PnP
在yarn
的2.x 版本重點推出了Plug'n'Play(PnP)
零安裝模式,放棄了node_modules
,更確保依賴的可靠性,建置速度也得到更大的提升。
yarn 2.x
擺脫node_modules
,安裝、模組速度載入快;所有npm 模組都會存放在全域的快取目錄下,避免多重依賴;嚴格模式下子依賴不會提升,也避免了幽靈依賴。
但是,自建 resolver
處理 Node require
方法,脫離Node現存生態,相容性不太好。
pnpm
pnpm
具有安裝速度快、節省磁碟空間、安全性好等優點,它的出現也是為了解決 npm
和yarn
存在的問題。
1、pnpm
透過硬連結與符號連結結合的方式,來解決 yarn
與 npm
的問題。
-
硬連結:硬連結可以理解為原始檔案的副本,
pnpm
會在全域store
儲存項目node_modules
檔案的硬連結。硬連結可以使得不同的項目可以從全域store
尋找到同一個依賴,大大節省了磁碟空間。 -
軟體連結:軟連結可以理解為捷徑,
pnpm
在引用依賴時透過符號連結去找到對應磁碟目錄(.pnpm)下的依賴位址。
例如 A 依賴 B,A 下面是沒有 node_modules
的,而是一個軟連結。實際真正的檔案位於.pnpm
中對應的 A@1.0.0/node_modules/A
目錄並硬連結到全域 store
中。
而 B 的依賴存在於 .pnpm/B@1.0.0/node_modules/B
。
而A 依賴的B,用軟連結鏈到上面的位址
,也就是B --> ../../B@1.0.0/node_modules/B
node_modules ├── A --> .pnpm/A@1.0.0/node_modules/A └── .pnpm ├── B@1.0.0 │ └── node_modules │ └── B ==> <store> /B └── A@1.0.0 └── node_modules ├── B --> ../../B@1.0.0/node_modules/B └── A ==> <store> /A
##而這種嵌套
-->
代表軟鏈接,==》
代表硬鏈接
node_modules結構的好處在於只有真正在依賴項中的套件才能訪問,很好地解決了幽靈依賴的問題。此外,因為依賴總是存在
store目錄下的硬鏈接,相同的依賴總是只會被安裝一次,多重依賴的問題也得到了解決。
pnpm 也存在一些限制。
- pnpm-lock.yaml
和
package-lock.json不一致,不能相容。
有些場景不相容,例如 - Electron
。
不同應用程式的依賴是硬連結到同一份文件,所以不能直接修改依賴文件,否則會影響其他項目。而且因為安裝結構不同,原來的 - patch-package
之類的工具也不能用了。
其他
ni可以理解為套件管理器的管理器,ni 假設您使用鎖定檔案(並且您應該),在它運行之前,它會檢測你的
yarn.lock /
pnpm-lock.yaml /
package-lock.json 以了解當前的套件管理器,並執行相應的命令。
cnpmcnpm 和
npm 以及
yarn 之間最大的差異就在於產生的
node_modules 目錄結構不同,這在某些場景下可能會引發一些問題。另外也不會產生
lock 檔案。但是
cnpm 保持了
node_modules 的目錄結構清晰,可以說是在巢狀模式和扁平模式之間找到了一個平衡。
很多面試會問pnpm 為啥快,除了上面的store
保證全域只安裝一次,還有
軟連線保證不重複安裝之外。還有一個,當安裝同一依賴的不同版本時,只有不同的部分會被重新保存。
建議不管用什麼套件管理工具,都要加上 lock
文件,在版本更新期間去升級依賴。以便能獲得更好的安全性。
esbuild
流行度:89%
##esbuild 是用
go 語言寫的
javascript、typescript 打包工具,速度比
webpack 快
100 倍以上。
vite、
webpack、
Rollup,但最後都用到了
esbuild 打包。只有一個
vuetify沒用,不過
vuetify還還沒正式發布,後面也說不定會換。
ESM 標準會越來越流行,所以相對應的工具鏈也會越來越流行。
vite 嚴格來說不是打包工具,而是一個前端建置工具,vite 實際使用 Rollup 和 esbuild 來打包。
SVG Icon
流行度:55%
Icon Font的缺陷,可以看這篇
Inline SVG vs Icon Fonts 文章。主要有以下幾個方面:
- 瀏覽器將其視為文字進行抗鋸齒優化,有時得到的效果並沒有想像中那麼銳利。尤其是在不同系統下對文字進行抗鋸齒的演算法不同,可能會導致顯示效果不同。
Icon Font
作為一種字體,
Icon顯示的大小和位置可能要受到
font-size、
line-height、
word-spacing等等CSS 屬性的影響。
Icon所在容器的
CSS樣式可能會對
Icon的位置產生影響,調整起來很不方便。
- 使用上有不便。首先,載入一個包含數百圖標的
Icon Font
,卻只使用其中幾個圖標,非常浪費載入時間。自己做
Icon Font以及把多個
Icon Font中用到的圖示整合成一個
Font也非常不方便。
- 為了實現最大程度的瀏覽器支持,可能要提供至少四種不同類型的字體檔案。包括
TTF
、
WOFF、
EOT以及一個使用 SVG 格式定義的字體。
- 網路延時會導致
Icon
會先載入出來一個
string。
SVG Icon 的優勢可以用元件文件的描述
- 完全離線化使用,不需要從CDN 下載字體文件,圖示不會因為網頁問題呈現方塊,也無需字體文件本地部署。
- 在低階設備上 SVG 有更好的清晰度。
- 支援多色圖示。
- 對於內建圖示的更換可以提供更多 API,而不需要進行樣式覆蓋。
SVG Icon的劣勢,例如相容性。 (IE:啥?)
Icon Font 對效能的影響沒有那麼大。這也可能是沒那麼流行的原因?
CSS變數
流行度:75%
naive-ui 我沒看懂。後面可能會修正。
CSS var。就效能來說,肯定是瀏覽器支援的
W3C 規格更好。
原文網址:https://juejin.cn/post/7092766235380678687作者:ARRON#(學習影片分享:
以上是透過9個Vue3 元件庫,看看聊前端的流行趨勢!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Vue.js與前端技術棧緊密集成,提升開發效率和用戶體驗。 1)構建工具:與Webpack、Rollup集成,實現模塊化開發。 2)狀態管理:與Vuex集成,管理複雜應用狀態。 3)路由:與VueRouter集成,實現單頁面應用路由。 4)CSS預處理器:支持Sass、Less,提升樣式開發效率。

Netflix選擇React來構建其用戶界面,因為React的組件化設計和虛擬DOM機制能夠高效處理複雜界面和頻繁更新。 1)組件化設計讓Netflix將界面分解成可管理的小組件,提高了開發效率和代碼可維護性。 2)虛擬DOM機制通過最小化DOM操作,確保了Netflix用戶界面的流暢性和高性能。

Vue.js被開發者喜愛因為它易於上手且功能強大。 1)其響應式數據綁定係統自動更新視圖。 2)組件系統提高了代碼的可重用性和可維護性。 3)計算屬性和偵聽器增強了代碼的可讀性和性能。 4)使用VueDevtools和檢查控制台錯誤是常見的調試技巧。 5)性能優化包括使用key屬性、計算屬性和keep-alive組件。 6)最佳實踐包括清晰的組件命名、使用單文件組件和合理使用生命週期鉤子。

Vue.js是一個漸進式的JavaScript框架,適用於構建高效、可維護的前端應用。其關鍵特性包括:1.響應式數據綁定,2.組件化開發,3.虛擬DOM。通過這些特性,Vue.js簡化了開發過程,提高了應用性能和可維護性,使其在現代Web開發中備受歡迎。

Vue.js和React各有優劣,選擇取決於項目需求和團隊情況。 1)Vue.js適合小型項目和初學者,因其簡潔和易上手;2)React適用於大型項目和復雜UI,因其豐富的生態系統和組件化設計。

Vue.js通過多種功能提升用戶體驗:1.響應式系統實現數據即時反饋;2.組件化開發提高代碼復用性;3.VueRouter提供平滑導航;4.動態數據綁定和過渡動畫增強交互效果;5.錯誤處理機制確保用戶反饋;6.性能優化和最佳實踐提升應用性能。

Vue.js在Web開發中的角色是作為一個漸進式JavaScript框架,簡化開發過程並提高效率。 1)它通過響應式數據綁定和組件化開發,使開發者能專注於業務邏輯。 2)Vue.js的工作原理依賴於響應式系統和虛擬DOM,優化性能。 3)實際項目中,使用Vuex管理全局狀態和優化數據響應性是常見實踐。

Vue.js是由尤雨溪在2014年發布的漸進式JavaScript框架,用於構建用戶界面。它的核心優勢包括:1.響應式數據綁定,數據變化自動更新視圖;2.組件化開發,UI可拆分為獨立、可複用的組件。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3漢化版
中文版,非常好用

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。