自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Element一套優(yōu)雅的Vue 2組件庫是如何開發(fā)的

開發(fā) 前端
今年的 JSConf 大會上,受到 gridcontrol 作者現(xiàn)場開源項目的感染,我們也在現(xiàn)場宣布開源這套基于 Vue 2 開發(fā)的組件庫 —— Element。初期也遇到一些棘手的問題,很慶幸都找到了解決方案。在這里整理一些解決方案分享給大家。

今年的 JSConf 大會上,受到 gridcontrol 作者現(xiàn)場開源項目的感染,我們也在現(xiàn)場宣布開源這套基于 Vue 2 開發(fā)的組件庫 —— Element。上場前五分鐘才建的空倉庫,到晚上我們真正推代碼上去已經(jīng)收(pian)到了 100 多 star,而且僅僅三天時間就獲得了 1k star。這個項目其實早在 Vue 2 進入 beta 時就開始開發(fā)了,一直到八月底才接近尾聲。初期也遇到一些棘手的問題,很慶幸都找到了解決方案。在這里整理一些解決方案分享給大家。

如何管理多個獨立的組件項目 -- lerna

最初制定的目標是有一個主項目管理所有的組件弄成一個包,然后每一個組件都是單獨一個包。這樣用戶可以安裝所有組件也可以只安裝自己需要的組件。于是我們最直接的做法就是一個組件建一個項目,到后面組件越來越多管理起來也越加復雜,每一次升級主倉庫就要更新一堆依賴組件的版本號。而且開發(fā)起來也不方便。

后來看到 babel 的倉庫的目錄結(jié)構(gòu)很是奇特。一個 packages 文件夾下有所有的 babel 官方插件,直到發(fā)現(xiàn)他們用了一個叫 lerna 的工具??梢宰屇阍谥黜椖肯鹿芾矶鄠€子項目,從而解決了多個包互相依賴,且發(fā)布時需要手動維護多個包的問題。

所以我們重構(gòu)了目錄結(jié)構(gòu),所有插件單獨一個項目放在 packages 目錄下,可單獨打包發(fā)布;同時最外面的 src 目錄下的入口文件引入所有組件,打包發(fā)布的主項目就是包含了所有的組件。從而就解決了多個子項目管理的問題。

  1. element/ 
  2.   package.json 
  3.   packages/ 
  4.     component-a/ 
  5.       package.json 
  6.     component-b/ 
  7.       package.json  

如何解決定制多套主題的問題

組件庫一般都會自帶一套主題,也可能會有多套主題可供選擇,當然也要滿足用戶自定義的需求。所以 Vue 推薦的定義 scope 的樣式就不可行了,同時也不能把樣式寫在組件里。那么如何寫樣式同時單獨發(fā)布的組件如何引用樣式文件也是我們要解決的問題。

為了方便用戶覆蓋樣式,我們采用 BEM 風格來寫 CSS,這樣的好處是類名基本都是一級,少數(shù)才會有嵌套情況,這樣很容易的就可以直接覆蓋掉原有樣式。我們使用了自家開發(fā)的 postcss-salad PostCSS 插件來寫樣式。集成了多個實用的 PostCSS 插件同時也支持 BEM 風格。

并且樣式文件目錄也作為單獨一個子項目發(fā)布,這樣引入整個包可以包含樣式文件,單獨安裝的組件可以通過安裝主題包的方式引入樣式文件。

這么做的好處是方便以后擴展其他主題,或者開發(fā)者可以自己定義一套其他 CSS 預處理的版本例如 Less 或 Scss。

文檔是如何工作的 -- vue-markdown-loader

當初寫 Mint UI 時就遇到了要用 Vue 寫文檔的問題:如何才能在寫 Markdown 時也能寫 Vue 組件的 Demo。雖然后來并沒有在 Mint UI 的文檔里寫 Demo。最開始在 Element 的內(nèi)部版本里,找遍了各種 Vue 的 Markdown 相關(guān)插件,要么是在 template 里定義 Markdown 格式,要么就是有一個 Markdown 的組件。都不能做到純粹的寫 Markdown 文件,并且還能寫 Demo。

后來想到或許可以嘗試把 Markdown 文件轉(zhuǎn)成 Vue 組件。畢竟可以在 Markdown 里寫 HTML,那么完全可以作為 Vue 的模板。后來就有了 vue-markdown-loader,一個把 Markdown 轉(zhuǎn)成 Vue 組件的 webpack loader,搭配 vue-router 就能搭建一個可以在 Markdown 里寫 Vue 代碼的文檔網(wǎng)站。

如何同時打包多個組件 -- cooking

由于前面的設(shè)定,最終需要每個組件都單獨打包一份并發(fā)布。同時每一個組件下面都會有一個對應的配置文件,傳統(tǒng)的用 webpack 打包雖然支持傳入數(shù)組,但是并不能傳入多個文件。但是我們有 cooking,一個基于 webpack 但是配置更簡單同時使用上也更容易的工具。打包時只需要同時傳入多個配置文件,利用 webpack 接受數(shù)組配置項的特性,就能同時進行打包。

有了這些工具,讓 Element 的開發(fā)工作變得更容易且更高效?,F(xiàn)在 Element 已經(jīng)正式開源,并且我們已經(jīng)放出了文檔,同時還放出了設(shè)計資源,歡迎各位 Vue 開發(fā)者來嘗試,也歡迎來做貢獻。

相關(guān)項目鏈接:

責任編輯:龐桂玉 來源: segmentfault
相關(guān)推薦

2021-11-07 20:43:14

React

2022-07-10 20:45:47

React加載動畫庫

2023-03-22 23:23:25

React加載動畫庫

2025-02-27 10:25:35

組件庫MatBlazorWeb

2025-02-24 10:13:22

2021-05-27 07:12:19

單點登錄系統(tǒng)

2024-11-19 16:31:23

2023-10-07 00:13:03

.NETCore框架

2024-11-12 08:13:09

2022-02-25 09:00:00

數(shù)據(jù)科學工具架構(gòu)

2009-06-23 18:01:45

Ajax框架源代碼

2018-08-31 08:42:48

LinuxUnix實用程序

2023-03-03 17:00:00

部署Linux內(nèi)核

2014-12-02 10:02:21

Android異步任務

2016-10-12 17:42:04

云服務云計算云遷移

2022-08-04 00:05:11

系統(tǒng)分布式流量

2015-06-16 14:24:41

開發(fā)五子棋網(wǎng)游

2024-12-09 09:25:30

2021-03-29 11:20:39

前端代碼工作流

2025-01-14 15:12:13

點贊
收藏

51CTO技術(shù)棧公眾號