网上代码通篇一律,需要修改多处地方,特别是component下还要创建一个index.vue的组件,奇奇怪怪。
要在 Vue 项目中使用 svg-sprite-loader
来管理 SVG 图标,你需要执行以下几个步骤:
npm install svg-sprite-loader -D
步骤 1: 配置 vue.config.js
确保你的 Vue 项目的根目录中有一个 vue.config.js
文件,用于自定义 Vue CLI 的内部 webpack 配置。如果文件不存在,你可以创建一个。在这个文件中,添加以下配置:
const path = require('path');
module.exports = {
chainWebpack: config => {
// SVG 规则排除 icons 目录
config.module.rule('svg')
.exclude.add(path.resolve('src/assets/icons'))
// 添加 icons 目录的 SVG loader
config.module.rule('icons')
.test(/.svg$/)
.include.add(path.resolve('src/assets/icons')).end()
.use('svg-sprite-loader')
.loader('svg-sprite-loader')
.options({ symbolId: 'icon-[name]' })
}
};
这个配置告诉 webpack 对于 src/assets/icons
目录中的 .svg
文件,使用 svg-sprite-loader
来处理它们。其他目录中的 .svg
文件将使用项目中默认的 SVG loader。
步骤 2: 添加 SVG 图标
将你的 SVG 图标放置在 src/assets/icons
目录中。例如,你可以有一个名为 example.svg
的图标。
一个简单的 SVG 图标可能看起来像这样:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>
</svg>
步骤 3: 全局引入 SVG 图标
在项目的入口文件(通常是main.js
或 main.ts
)中添加全局 SVG 导入。例如:
import { createApp } from 'vue';
import App from './App.vue';
// 导入 SVG 图标
const req = require.context('./assets/icons', false, /.svg$/);
const requireAll = context => context.keys().map(context);
requireAll(req);
createApp(App).mount('#app');
步骤 4: 使用 SVG 图标
在你的组件中,你应该能够通过 symbolId 引用 SVG 图标,就像这样:
<template>
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-example"></use>
</svg>
</template>
其中 icon-example 是你的 SVG 文件名。
步骤 5: 重新编译
现在,你可以在任何组件中使用这些 SVG 图标。图标的 ID 将基于文件名,例如 icon-example
对应于 example.svg
文件。
请注意,这些步骤假设你的 Vue 项目是基于 Vue CLI 创建的。如果你的项目结构有所不同,可能需要相应地调整配置和路径。
原文地址:https://blog.csdn.net/fendouweiqian/article/details/135886923
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_63843.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!