成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

lscho / 848人閱讀

摘要:今年的大會(huì)上,受到作者現(xiàn)場開源項(xiàng)目的感染,我們也在現(xiàn)場宣布開源這套基于開發(fā)的組件庫。一個(gè)文件夾下有所有的官方插件,直到發(fā)現(xiàn)他們用了一個(gè)叫的工具。那么如何寫樣式同時(shí)多帶帶發(fā)布的組件如何引用樣式文件也是我們要解決的問題。

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

如何管理多個(gè)獨(dú)立的組件項(xiàng)目 -- lerna

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

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

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

element/
  package.json
  packages/
    component-a/
      package.json
    component-b/
      package.json
如何解決定制多套主題的問題

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

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

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

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

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

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

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

如何同時(shí)打包多個(gè)組件 -- cooking

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

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

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

https://github.com/ElemeFE/element

https://github.com/lerna/lerna

https://github.com/ElemeFE/postcss-salad

https://github.com/ElemeFE/mint-ui

https://github.com/QingWei-Li/vue-markdown-loader

https://github.com/ElemeFE/cooking

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/80528.html

相關(guān)文章

  • UI大全:前端UI框架集合(持續(xù)更新,當(dāng)前32個(gè))

    摘要:簡潔直觀強(qiáng)悍的前端開發(fā)框架,讓開發(fā)更迅速簡單。是一套基于的前端框架。首個(gè)版本發(fā)布于年金秋,她區(qū)別于那些基于底層的框架,卻并非逆道而行,而是信奉返璞歸真之道。 2017-1209 ZanUI (Vue) 2017-1218 Onsen UI(Vue, React, Angular) 2017-1215 增加 Vuetify, Weex UI, Semantic UI React,ele...

    only_do 評(píng)論0 收藏0
  • UI大全:前端UI框架集合(持續(xù)更新,當(dāng)前32個(gè))

    摘要:簡潔直觀強(qiáng)悍的前端開發(fā)框架,讓開發(fā)更迅速簡單。是一套基于的前端框架。首個(gè)版本發(fā)布于年金秋,她區(qū)別于那些基于底層的框架,卻并非逆道而行,而是信奉返璞歸真之道。 2017-1209 ZanUI (Vue) 2017-1218 Onsen UI(Vue, React, Angular) 2017-1215 增加 Vuetify, Weex UI, Semantic UI React,ele...

    church 評(píng)論0 收藏0
  • Vue自定義滾動(dòng),我用el-scrollbar

    摘要:弄了一個(gè)持續(xù)更新的筆記,可以去看看,誠意之作本來就是寫給自己看的鏈接地址此篇文章的地址的自定義滾動(dòng),我用基礎(chǔ)筆記的地址可以也可以。大家總會(huì)見過不少滾動(dòng)條比較優(yōu)雅的實(shí)現(xiàn),不可否認(rèn),美是讓人愉悅的。 弄了一個(gè)持續(xù)更新的github筆記,可以去看看,誠意之作(本來就是寫給自己看的……)鏈接地址:Front-End-Basics 此篇文章的地址:Vue的自定義滾動(dòng),我用el-scrollb...

    qylost 評(píng)論0 收藏0
  • Vue自定義滾動(dòng),我用el-scrollbar

    摘要:弄了一個(gè)持續(xù)更新的筆記,可以去看看,誠意之作本來就是寫給自己看的鏈接地址此篇文章的地址的自定義滾動(dòng),我用基礎(chǔ)筆記的地址可以也可以。大家總會(huì)見過不少滾動(dòng)條比較優(yōu)雅的實(shí)現(xiàn),不可否認(rèn),美是讓人愉悅的。 弄了一個(gè)持續(xù)更新的github筆記,可以去看看,誠意之作(本來就是寫給自己看的……)鏈接地址:Front-End-Basics 此篇文章的地址:Vue的自定義滾動(dòng),我用el-scrollb...

    enrecul101 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<