vue项目引入svg图标(完整步骤)

news2025/2/26 13:43:03

1. 安装svg依赖

在vue中首先需要安装可以加载svg的依赖。
npm安装:npm install svg-sprite-loader --save-dev

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

创建icons文件夹,在icons文件夹下创建svg文件夹存放本地svg图标。
在这里插入图片描述

3. vue.config.js 中配置svg图片

在这里插入图片描述
vue.config.js代码:

const path = require('path')

module.exports = {
  chainWebpack:config=>{
    // svg图标加载
    config.module
      .rule('svg')
      .exclude.add(path.join(__dirname, 'src/assets/icons/svg'))
      .end()

    config.module
      .rule('icons')// 定义一个名叫 icons 的规则
      .test(/\.svg$/)// 设置 icons 的匹配正则
      .include.add(path.join(__dirname,'src/assets/icons/svg'))// 设置当前规则的作用目录,只在当前目录下才执行当前规则
      .end()
      .use('svg-sprite')// 指定一个名叫 svg-sprite 的 loader 配置
      .loader('svg-sprite-loader')// 该配置使用 svg-sprite-loader 作为处理 loader
      .options({// 该 svg-sprite-loader 的配置
        symbolId:'icon-[name]'
      })
      .end()
  }
}

include.add(路径)–路径不正确会报以下错误:
在这里插入图片描述

4. 创建index.js 导入所有svg图标

icons文件夹创建index.js 自动导入所有svg图标。
在这里插入图片描述
icons/index.js代码:

const req = require.context('@/assets/icons/svg',false,/\.svg$/)
const requireAll = requireContext =>{
    // requireContext.keys()数据:['./404.svg', './agency.svg', './det.svg', './user.svg']
    requireContext.keys().map(requireContext)
} 
requireAll(req)

执行 requireContext.keys().map(requireContext)得到返回的数据:
在这里插入图片描述

5. main.js中引入icons/index.js

在这里插入图片描述

6. 创建SvgIcon公用组件

在这里插入图片描述
SvgIcon/index.vue代码:

<template>
    <i v-if="iconFileName.indexOf('el-icon-') === 0" :class="iconFileName" />
    <svg v-else class="svg-icon" aria-hidden="true" v-on="$listeners">
        <use :xlink:href="`#icon-${iconFileName}`" />
    </svg>
</template>

<script>
export default {
    name: 'SvgIcon',
    props: {
        iconFileName: {
            type: String,
            required: true
        }
    }
}
</script>

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

全局注册SvgIcon组件:
在这里插入图片描述

使用SvgIcon组件:
在这里插入图片描述

vuecli 中 chainWebpack 的常用操作
使用require.context实现前端工程自动化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/405369.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue中使用echarts实现动态数据绑定、获取后端接口数据

之前几篇echarts的文章是实现了静态的柱状图、折线图、饼状图、地图&#xff0c;在项目中我们肯定是需要获取后端接口&#xff0c;将后端返回的数据显示在图表上&#xff0c;所以这次就记录一下如何实现echarts的动态数据绑定。 简单来讲&#xff0c;就是从接口获取到的数据&a…

Vue生命周期总结(四个阶段,八个钩子函数)

生命周期就是组件或者实例&#xff0c;从创建到被销毁&#xff08;初始化化数据、编译模板、挂载DOM、渲染一更新一渲染、卸载&#xff09;的一系列过程&#xff0c;我们称这是Vue的生命周期 文章目录一、Vue的生命周期阶段二、生命周期钩子函数1. beforeCreate2. created3. be…

ES6+--》熟知JS中的async函数

目录 async函数 await 表达式 async使用形式 async读取文件 async发送AJAX请求 与生成器(Generator)相比 async函数 async函数的返回值为 promise 对象&#xff0c;promise对象的结果由async函数执行的返回值决定。async函数能使得异步操作变得更加方便&#xff0c;简而…

前端开发常用哪些工具软件?

前端开发必备工具&#xff0c;一篇文章一网打尽 文章目录 一、前端提高“生产力”工具 1.WebStorm 2. 远程开发 - VSCode 3. 接口测试 - Postman 4.API在线文档生成和测试 - SwaggerUI 5.抓包工具 - Wireshark 6.通用数据库管理 - DBeaver 7.MD编辑器 - Typora 8.虚拟…

【数字孪生】UE4虚幻引擎与前端Web页面的结合

目录介绍基础准备鼠标穿透设置备注介绍 UE初学者&#xff0c;非专业UE工程师&#xff0c;在项目中需要使用UE4结合前端页面完成三维场景与前端图表的联动效果&#xff0c;自学总结方法&#xff0c;使用的版本为UE4.26。 基础准备 1. 使用Vue、Echarts创建前端页面&#xff0…

异常:TypeError: ‘caller‘, ‘callee‘, and ‘arguments‘ properties may not be accessed on strict mode func

异常&#xff1a;TypeError: ‘caller‘, ‘callee‘, and ‘arguments‘ properties may not be accessed on strict mode func 问题解决 今天我在给博客添加樱花飘落的特效的时候 下载并引入了一个JS 之后打包执行的时候 发现樱花不会动了 检查报错发现是文章标题的报错…

事件监听 页面滚动(页面滚动到某一位置时显示/隐藏某元素,Vue环境)

目录 一、效果展示 二、实现步骤 三、涉及要点 1. Vue 语法 v-show 2. 获取窗口到元素顶端的距离 3. 监听事件 一、效果展示 最近在做项目时有一个网页渲染是这样的&#xff0c;某一个元素在开始不显示&#xff0c;只有当页面滑动到指定的位置时才显示该元素。效果如下&a…

基于物联网的智慧农业监测系统(前端界面有web端和微信小程序端)

摘要 农业是国民经济的基础&#xff0c;在国家经济发展中有着不可替代的重要作用。随着物联网技术的快速发展&#xff0c;智慧农业已成为了现代农业发展的新方向。基于此&#xff0c;本文设计并实现了一套基于物联网的智慧农业监测系统&#xff0c;系统采用ESP32作为主控板&am…

Vue组合式API

目录 一. 为什么要使用Composition API 1.1.一个Options API实例 1.2.Options API存在的问题 1.3.Composition API简介 二.Composition API 2.1.setup()入口 2.2.ref 响应式监听 2.3.reactive与toRefs 2.4.computed的用法 2.5.watch的用法 2.6.setup()参数 2.6.1.p…

前端如何将项目部署到服务器(Nginx)

文章目录一、准备环境二、安装Nginx1、 安装Nginx依赖2、下载Nginx3、解压下载好的Nginx 压缩包4、编译安装Nginx5、启动Nginx服务三、操作步骤1、使用Xshell连接服务器2、上传静态资源文件3、 配置Nginx4、 重启Nginx服务我们在会开发项目的同时&#xff0c;也应该了解一下前端…

基于Java Web的随意购商城系统(开源项目)

提示&#xff1a;此项目仅作为本博主的学习笔记记录&#xff0c;不作为商品售卖&#xff0c;资源往下翻看源码获取 文章目录前言Web端功能设计首页热销商品新到商品商品分类商品详情购物车添加地址提交订单部分代码展示可能会出现的错误如果拿到项目后发现图片不显示源码获取前…

在Vue中使用高德地图

在Vue中使用高德地图一、如何在Vue中引入基础高德地图1、步骤一&#xff1a;注册并登录高德地图开放平台&#xff0c;申请密钥2、步骤二&#xff1a;安装高德地图加载器3、封装一个自定义地图组件&#xff0c;并初始化地图二、根据关键词搜索&#xff0c;并定位到搜索的位置三、…

谷歌浏览器自带翻译网页插件没用了怎么办?这里有解决办法。

前言 正当我打算来一波科学上网的时候&#xff0c;当我用谷歌浏览器打开文档网站时候&#xff0c;发现发现google浏览器网页翻译插件没用了。经过了我一段时间的搜寻&#xff0c;终于有了解决方案。 原因 从 10 月 20 日起&#xff0c;谷歌在陆续移除国内服务器上的谷歌翻译…

Vue学习之从入门到神经(两万字收藏篇)

写在前面 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家:人工智能学习网站 Vue写在前面前言Vue.js三种安装方式一、 Vue导入二、Vue基本语法1.钩子函数2. 插值表达式3.显示数据(v-text和v-html)4.数据双向…

深入理解Vue响应式原理

前言 Vue响应式原理是Vue最独特的特性之一&#xff0c;当数据模型进行修改时&#xff0c;视图就会进行更新&#xff0c;这使得状态管理简单直接&#xff0c;但是其底层的细节还是需要我们深入学习理解&#xff0c;这样遇到一些问题我们才能快速进行定位&#xff0c;并解决&…

【UML】-- 顺序图练习题含答案(自动售货机、学生选课、提款机、购买地铁票、洗衣机工作)

注意&#xff1a;对象表示法对象名需要下划线&#xff0c;此文章没有标注 一、练习一 根据下面的叙述&#xff0c;绘制一幅关于顾客从自动售货机中购买物品的顺序图。顾客&#xff08;User&#xff09;先向自动售货机的前端&#xff08;Front&#xff09;投币&#xff1b;售货…

CSDN文章点赞、收藏、评论后到底发生了什么?简要分析HTTP交互机制

作者&#xff1a;Eason_LYC 悲观者预言失败&#xff0c;十言九中。 乐观者创造奇迹&#xff0c;一次即可。 一个人的价值&#xff0c;在于他拥有的&#xff0c;而不是他会的。所以可以不学无数&#xff0c;但不能一无所有&#xff01; 技术领域&#xff1a;WEB安全、网络攻防 关…

node.js是干什么的

一、Node.js简介 Node.js是一个开源和跨平台的JavaScript运行时环境。它几乎是任何类型项目的流行工具&#xff01; Node.js在浏览器之外运行V8 JavaScript引擎&#xff08;Google Chrome的内核&#xff09;。这使得Node.js的性能非常好。 Node.js应用程序在单个程序中运行&…

使用SpringBoot一小时快速搭建一个简单后台管理(增删改查)(超详细教程)

最近也是临近期末了&#xff0c;各种的期末大作业&#xff0c;后台管理也是很多地方需要用到的&#xff0c;为了方便大家能快速上手&#xff0c;快速搭建一个简单的后台管理&#xff0c;我花了两天时间整理了一下 我会从0开始介绍&#xff0c;从数据库的设计到前端页面的引入最…

使用uniapp开发APP时的调试/安卓打包等

一、调试 1.先用数据线连接电脑和手机&#xff0c;选择“文件传输”&#xff0c; 2.打开开发者模式&#xff0c;华为手机举列-->设置-->关于手机-->版本号&#xff0c;多次连续点击“版本号”&#xff0c;就会提示已打开 开发者模式 3.华为手机举列-->设置-->…