天天看點

vue antd admin怎麼切換到basic分支_Vue企業級優雅實戰04元件開發01SVG圖示元件

預覽本文的實作效果:

# gitee           

本文主要描寫如何讓 Vue 工程支援 SVG 圖示,以及如何擷取 SVG 圖示。

Git 本地倉庫切換新分支:

git checkout -b 02_SVGIcon           

确認分支:

git branch           

1 SVG 圖示的擷取

無論是 SVG 圖示,還是 PNG 等其他格式的圖示,都可以從阿裡的 iconfont 網站上搜尋。網址:https://www.iconfont.cn 。

打開網站後,自己新增賬號。最簡單的使用方式,就是直接搜尋你要的圖示。舉個例子,找個首頁的圖示:

1、 在首頁搜尋框搜尋“首頁”,回車

vue antd admin怎麼切換到basic分支_Vue企業級優雅實戰04元件開發01SVG圖示元件

搜尋“首頁”

2、 選擇需要的圖示

vue antd admin怎麼切換到basic分支_Vue企業級優雅實戰04元件開發01SVG圖示元件

3、 滑鼠移動到該圖示上,點選下載下傳樣式的按鈕

vue antd admin怎麼切換到basic分支_Vue企業級優雅實戰04元件開發01SVG圖示元件

4、下載下傳或複制該 SVG 圖示:

vue antd admin怎麼切換到basic分支_Vue企業級優雅實戰04元件開發01SVG圖示元件

“複制 SVG” 不含檔案頭,需要手動添加。我的習慣是沒有 SVG 圖示時,第一次“SVG 下載下傳”,之後建立 SVG 檔案,從已下載下傳的 SVG 中複制檔案頭,然後點選頁面上的 “複制 SVG”,将内容貼到 建立的 SVG 檔案中。此處先下載下傳該 svg 圖示。

該網站也可以建立項目,将你需要的圖示添加到項目中,然後一次性生成并下載下傳。我不太喜歡這種使用方式。兩個原因:

  • 上述方式生成的 class 命名五花八門,也許不符合項目規範;
  • 項目是持續疊代的,如果你手動更新命名,疊代過程中需要新圖示,你如何疊加進去;
  • 我需要些什麼圖示我自己都不知道,在開發過程中需要什麼圖示才去搜尋下載下傳。

2 使工程支援 SVG

2.1 安裝依賴

Vue 項目如果要使用 SVG 圖示,需要 SVG Loader。

svg-sprite-loader

 可以用來加載 svg:

install svg-sprite-loader            

2.2 配置 svg-loader

Vue-cli 3 以上的版本,對 webpack 進行了高度封裝,要對 webpack 進行配置,需要在項目根路徑下(與 src 同級)建立配置檔案:

vue.config.js

 ,在該檔案中配置 svg loader。

vue.config.js

const path =            

3 SVG 封裝

後面我會将自己封裝的元件庫,拆分成獨立的工程(類似 Element UI、Ant Design Vue 等),釋出 npm 或私服後,通過 npm install 進行安裝,便于複用。現在在元件庫開發階段,需要不斷疊代完善,為了友善調試測試,故先将元件庫放在目前工程的 

src/components

 目錄下。

3.1 封裝元件 svg-icon

在 

src/components

 目錄下建立目錄 

ds-svg-icon

, 在該目錄中建立 

index.vue

 檔案。該元件提供兩個屬性:

屬性名 類型 屬性描述
class-name String 該圖示的樣式類(與 HTML 中 

class

 一樣)
icon String svg 圖示檔案的名稱

為了編寫友善,父元件傳遞到 svg 元件時可以省略 

icon-

, 在 svg-icon 中,通過計算屬性将這個字首 

icon-

 拼接上去。如:圖示名稱為 icon-home.svg, 使用元件時使用:

src/components/ds-svg-icon/index.vue:

注意:定義的每個元件都要指定 

name

 屬性,

name

 屬性的值,與目錄名稱保持一緻。

3.2 封裝為插件

上面建立了 ds-svg-icon/index.vue, 随着開發的進行,後面還有很多元件,我們統一将其封裝為插件,每個工程需要使用時,在 main.js 全局引入即可。

在 

src/components

 目錄下建立 

index.js

import DsSvgIcon            

後續元件開發時,都在這個檔案中導入,并添加到數組 

DSCompoents

 中。

在 

main.js

 中引入元件庫,并使用:

import DSComponent            

3.3 icons 目錄

在初始化工程的時候,已經建立了 src/icons 目錄。在該目錄下建立 svg 目錄,所有的 svg 檔案,都放在這個目錄中(

src/icons/svg

),現在可以将之前下載下傳的首頁 svg 圖示拷貝到這個目錄下,将其重命名為 

icon-home.svg

 (說明:上面的配置約定 所有 svg 圖示都使用字首 

icon-

)。

svg 圖示拷貝到 

src/icons/svg

 目錄下後還不能立即使用,需要加載它才行。使用一個 js 檔案統一全部加載:

src/icons/index.js

:

const allRequireSvg =            

最後在 

main.js

 中引入這個 js:

import            

3.4 main.js

到現在為止,main.js 全部代碼如下:

import Vue            

4 測試使用元件

在 App.vue 檔案中,測試剛才編寫的 

ds-svg-icon

 元件:

重新開機服務,在浏覽器中能看到該圖示,則該元件 ok。

送出代碼:

add .           

合并到 master 分支:

git checkout master           

将本地分支分别全部推送到 Gitee 和 GitHub

git push --           
vue antd admin怎麼切換到basic分支_Vue企業級優雅實戰04元件開發01SVG圖示元件

程式員搞藝術

繼續閱讀