中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue3+vue-cli4中怎么使用svg

發布時間:2022-08-09 17:20:25 來源:億速云 閱讀:221 作者:iii 欄目:開發技術

這篇文章主要介紹“vue3+vue-cli4中怎么使用svg”,在日常操作中,相信很多人在vue3+vue-cli4中怎么使用svg問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”vue3+vue-cli4中怎么使用svg”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

一、安裝 svg-sprite-loader

npm install svg-sprite-loader --save-dev

二、在src/components/svgIcon下新建組件index.vue

<template>
  <svg :class="svgClass" aria-hidden="true">
    <use :xlink:href="iconName" rel="external nofollow" ></use>
  </svg>
</template>

<script>
import { computed } from "@vue/reactivity";
export default {
  name: "baseSvgIcon",
  props: {
    iconClass: { type: String },
    className: { type: String },
  },
  setup(props) {
    const iconName = computed(() => {
      return props.iconClass ? `#icon-${props.iconClass}` : "#icon";
    });
    const svgClass = computed(() => {
      return props.className ? "svg-icon " + props.className : "svg-icon";
    });
    return { iconName, svgClass };
  },
};
</script>

<style scoped lang="scss">
.svg-icon {
  width: 1em;
  height: 1em;
  vertical-align: -0.15em;
  fill: currentColor;
  overflow: hidden;
}
</style>

三、在assets在創建icons文件夾

imgs文件夾里含一個svg文件夾,放svg格式文件,以及一個index.js文件,該文件內容如下

// 獲取當前目錄所有為.svg的文件
const req = require.context('./svg', false, /\.svg$/)

// 解析獲取的.svg文件的文件名稱并返回
const requireAll = (requireContext) =>{
    return requireContext.keys().map(requireContext)
}
requireAll(req)

四、在src同級下創建vue.config.js進行配置

經評論區總結,如果是在非vue-cli4的項目中,在config.module.rules.delete("svg");報錯的話,可以嘗試使用config.module.rule("svg").exclude.add(resolve("src/assets/imgs")).end();替換該語句

const path = require('path')

function resolve(dir) {
  return path.join(__dirname, '.', dir)
}

module.exports = {
  chainWebpack: config => {
    config.module.rules.delete("svg"); // 重點:刪除默認配置中處理svg,
    config.module
      .rule('svg-sprite-loader')
      .test(/\.svg$/)
      .include
      .add(resolve('src/assets/imgs')) // 處理svg目錄
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })
  },
};

五、在main.js里引入,以及做一些小修改

此處注意,將組件注冊放到main.js里。不然會報[Vue warn]: Failed to resolve component: svg-icon的問題,預測為父組件先創建完了而子組件還沒創建進去,導致該問題的出現

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import '@/assets/icons'

const app = createApp(App)

import SvgIcon from '@/components/svgIcon' 
app.component('svg-icon', SvgIcon)

app.use(store).use(router).mount('#app')

六、在頁面中使用

<div class="topLeft">
  <svg-icon icon-class="category"></svg-icon>
</div>
<div class="topCenter"></div>
<div class="topRight">
  <svg-icon icon-class="search"></svg-icon>
</div>

七、文件目錄結構及其效果展示

vue3+vue-cli4中怎么使用svg

到此,關于“vue3+vue-cli4中怎么使用svg”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

虎林市| 望城县| 浦江县| 大关县| 崇义县| 广丰县| 丰镇市| 柏乡县| 云阳县| 彭山县| 尼勒克县| 广南县| 潜山县| 山丹县| 乌审旗| 济宁市| 永泰县| 河池市| 东莞市| 汶上县| 南乐县| 静安区| 舞钢市| 昆山市| 宁津县| 抚宁县| 思茅市| 濮阳市| 东乡| 龙里县| 确山县| 沁水县| 丰顺县| 清远市| 阜平县| 武清区| 页游| 新蔡县| 阳高县| 兴山县| 龙门县|