【nuxt3】项目中使用svg 7步带你了解

 1.创建svg图标存放文件夹

在nuxt3项目中 项目目录如下图所示 我们需要在项目根目录下的assets目录创建svg,然后我们的svg图标就放在这里面,当然你也可以自己定义svg图标放置的位置,调整路径配置即可

2.创建SvgIcon.vue组件,包装SVG

在项目根目录下的components目录里创建SvgIcon.vue, 这个.vue文件就是我们自定义的图标组件, 代码如下

<template>
  <svg :class="svgClass" v-bind="$attrs" :style="{ color: color }">
    <use :xlink:href="iconName" />
  </svg>
</template>

<script setup>
import { computed } from 'vue'

const props = defineProps({
  name: {
    type: String,
    required: true
  },
  color: {
    type: String,
    default: ''
  }
})

const iconName = computed(() => `#icon-${props.name}`)
const svgClass = computed(() => {
  if (props.name) {
    return `svg-icon icon-${props.name}`
  }
  return 'svg-icon'
})
</script>

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

 3.创建svgicon.client.ts

在plugins文件夹下创建svgicon.client.ts引入

import svgIcon from '@/components/SvgIcon.vue'
export default defineNuxtPlugin(nuxtApp => {
    nuxtApp.vueApp.component('svg-icon', svgIcon)
})

4.安装 vite-plugin-svg-icons

 官方介绍:vite-plugin-svg-icons/README.zh_CN.md at main · vbenjs/vite-plugin-svg-icons · GitHub

npm i vite-plugin-svg-icons -D

5.设置nuxt.config.ts 

在nuxt.config.ts里面添加以下内容,注意文件夹路径要填对 

import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import path from 'path'
export default defineNuxtConfig({
...
    vite: {
        plugins: [
            createSvgIconsPlugin({
                iconDirs: [path.resolve(process.cwd(), 'assets/svg')]
            })
        ],
    }
...
})

6.svgicon.client.ts文件中添加注入脚本

import 'virtual:svg-icons-register'

如果是用TS 可以在tsconfig.json内添加 

复制代码
// tsconfig.json
{
  "compilerOptions": {
    "types": ["vite-plugin-svg-icons/client"]
  }
}

 7.最后 可以在页面中使用啦

 如下

<svg-icon name="home"></svg-icon>

 

注:最后 如果使用之后页面还是没显示 请检查一下第五步的步骤对不对

制作不易!看到最后 希望你能 点赞!!!关注!!

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枫ゞ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值