專案當中使用icon應該是很多的,比如說選單的圖示等等,其實方法有很多,我們可以使用字型圖示,我們可以使用png等,但是他們都有弊端,我們一般都會結合阿里圖示庫。png 多了就會是專案變大(雖然沒多大)一種意識性問題
2.1 準備工作
2.1.1 元件目錄結構
|-- icons // 資料夾
| – svg // 資料夾 用來存放svg檔案
| – index.js
| – svgicon.vue
2.1.2 需要的loader
yarn add svg-sprite-loader -d
2.1.3 vue.config.js// 刪除其他loader對svg檔案的編譯
config.module.rules.
delete
("svg"
)config.module
.rule
('svg-smart').
test
(/\.svg$/
).include
.add
(resolve
('src/icons'))
.add
(resolve
('src/assets'))
.end()
.use
('svg-sprite-loader').
loader
('svg-sprite-loader').
options
()
2.2 詳解icons資料夾
2.2.1 svg資料夾
這是乙個資料夾
專門用來存放專案裡面需要使用的svg檔案,比如a.svg
b.svg
…
2.2.2 index.js
import vue from
'vue'
import svgicon from
'./svgicon'
// svg元件
// 全域性註冊元件
vue.
component
('svg-icon'
, svgicon)
const req = require.
context
('./svg'
,false
,/\.svg$/
)const
requireall
= requirecontext => requirecontext.
keys()
.map
(requirecontext)
console.
log(
'requireall'
,requireall
(req)
)requireall
(req)
2.2.3 svgicon.vue
就是普通的vue元件,不再解釋。
class
="svgclass" aria-hidden=
"true"
>
"iconname"
/>
<
/svg>
<
/template>
export
default
, classname:},
computed:',
`#icon-$`
)return
`#icon-$`
},svgclass()
else}}
}<
/script>
.svg-icon
<
/style>
2.2.4 主檔案引入main.jsimport
'./icons'
2.2.5 使用demo.vue
icon-class
="agent"
>
svg-icon
>
這種方式在使用的時候80%~90%是沒問題的,那什麼情況下會出現問題呢?首先看vue.config.js裡面的配置,我們實現刪除了關於svg編譯的而配置,然後載入了svg-sprite-loader
這個loader,在這個loader裡面我們add了一些受控檔案目錄,所以如果不在這個目錄裡面的svg怎麼辦?肯定會報錯,那我們可以多幾個add,但是我們引用的一些npm包裡面也有用svg的時候編譯還是不會通過,那我們不刪除svg的配置了,不好意思svg元件不管用,好難啊,最粗魯的方式就是不使用這些npm包。。。。。有好的方案在更新,臨時還沒有好的方案。 svg元件封裝
檔案體積小,能夠被大量的壓縮 可無限放大而不失真 向量圖的基本特徵 在視網膜顯示屏上效果極佳 能夠實現互動和濾鏡效果 1.安裝相應的npm包 yarn add svg sprite loader svgo dev2.src資料夾下新建乙個icons資料夾。裡面存放svg格式的圖示。index.js實...
svg在vue cli3中的配置
svg向量圖有時候在專案中用起來當然要比用起來好。之前沒有用過svg,這次花了一點時間在專案中支援了svg的使用,個人感覺用起來還是沒有直接用font class的爽,然後又改成font class的使用,如下我說一下我是如何配置svg和font class的 這兩者都是iconfont 的不同使用...
vue cli專案中分頁元件封裝
為了方便理解整個元件 都在這 元件部分 class select v if size limit layout prev,pager,next prev text next text current change goindex current page index page size limit ...