首页 > 其他分享 >如何在vue工程中模块化使用大量的svg图片

如何在vue工程中模块化使用大量的svg图片

时间:2024-04-08 15:45:19浏览次数:21  
标签:vue Sprite svg require 模块化 loader SVG 加载

如果你在执行 requireAll(requireSvg) 后得到的是一个 BrowserSpriteSymbol 数组,并且能够直接使用 <use> 进行引用,这通常意味着在构建过程中有一些特定的 Webpack 配置和/或自定义加载器(loader)被用来处理 SVG 文件,并将它们转换为一个 SVG Sprite,其中每个 SVG 都转换为了一个 <symbol>

具体步骤如下:

  1. require.context: 使用 require.context 创建一个特定的上下文,这个上下文允许你动态地 require 模块。在你的例子中,requireSvg 被设置为指向 ./assets/svg 目录下所有以 .svg 结尾的文件。

  2. requireAll 函数: 这个函数接收一个 requireContext 作为参数,并使用 map 方法遍历 requireContext.keys() 返回的所有模块键(即文件路径)。然后,它使用 requireContext 函数来动态地 require 这些模块。由于 require 会执行导入的代码,因此它会执行由 Webpack 配置的加载器所指定的任何转换。

  3. Webpack 配置和加载器: 在你的项目中,很可能有一个或多个加载器(如 svg-sprite-loadersvg-url-loader 或自定义加载器)被配置来处理 SVG 文件。这些加载器会在 require 被调用时运行,将 SVG 文件转换成一个统一的 SVG Sprite,其中每个 SVG 都被转换成一个 <symbol> 元素。

  4. 返回 BrowserSpriteSymbol 数组: 假设 svg-sprite-loader 或其他类似的加载器被配置为生成一个全局可访问的 SVG Sprite,并且每个 SVG 被转换为一个 <symbol>。在这种情况下,requireAll(requireSvg) 将返回一个数组,该数组包含对 SVG Sprite 中每个 <symbol> 的引用。这些引用可能以某种方式被封装为 BrowserSpriteSymbol 对象,使得它们可以直接在模板中使用 <use> 元素进行引用。

  5. 在模板中使用 <use> 引用: 有了 SVG Sprite 和相应的 <symbol> 定义,你就可以在模板中使用 <use> 元素来引用这些 <symbol><use> 元素的 xlink:href 或 href 属性应该指向 SVG Sprite 中 <symbol> 的 id

  6. 即直接使用<svg> <use :xlink:href="symbolId" /> </svg> 加载svg图片

标签:vue,Sprite,svg,require,模块化,loader,SVG,加载
From: https://www.cnblogs.com/nyhhd/p/18121335

相关文章

  • vue快速入门(十二)v-key索引标志
    注释很详细,直接上代码新增内容v-key的使用场景数组筛选器的使用源码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0">&......
  • 基于springboot+vue+Mysql的学习平台
    开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9系统展示平台首页用户注册课程信息作业信息资料信息个人中心管理员功能界面学生管理教师管理课程......
  • 基于Java+SpringBoot+Vue的SRM供应商系统(源码分享)
           前言:供应商招投标管理系统是一个综合性的管理平台,旨在规范供应商的招投标流程,确保采购过程的透明度和公正性,同时提高采购效率。以下是对您提到的各个环节的详细解释:一、供应商准入供应商准入是招投标管理系统的首要环节,它负责审核和管理潜在供应商的资质。具......
  • 常见原型设计工具介绍-00-overvuew
    拓展阅读常见免费开源绘图工具OmniGraffle创建精确、美观图形的工具UML-架构图入门介绍starUMLUML绘制工具starUML入门介绍PlantUML是绘制uml的一个开源项目UML等常见图绘制工具绘图工具draw.io/diagrams.net免费在线图表编辑器绘图工具excalidraw介绍绘......
  • 前端【VUE】07-vue【路由】
    一、路由单页应用程序:SPA-SinglePageApplication  VueRouter的介绍作用:修改地址栏路径时,切换显示匹配的组件说明:Vue官方的一个路由插件,是一个第三方包官网:https://v3.router.vuejs.org/zh/vue2对应 router3 vue3对应router4......
  • vue 下载图片
    <ahref="https://example.com/image.jpg"rel="externalnofollow"download>下载图片</a>//下载图片asyncdownloadImage(e){//获取图片对象和画布对象constimgUrl=https://example.com/image.jpgconstresponse=awaitfetc......
  • Vue3入门笔记【黑马】
    目录:认识Vue31.Vue3的优势使用create-vue搭建Vue3项目1.认识create-vue2.使用create-vue创建项目熟悉项目和关键文件组合式API-setup选项1.setup选项的写法和执行时机2.setup中写代码的特点3.setup语法糖组合式API-reactive和ref函数1.reactive2.ref3.re......
  • avue表格 超过个数不能勾选
    <avue-crudrow-key="id"reserve-selection@selection-change="selectionChange"></avue-crud>data(){return{maxSelectionCount:10,//设定最大勾选条数}},//选中的数据list是全部的数据,数组,//拿取数据的唯一id并赋值,批量删除使用selec......
  • JS模块化——AMD、CommonJS和ESModules
    文章目录JS模块化——AMD、CommonJS和ESModules方法介绍传统方法:立即执行函数:异步模块定义AMD:CommonJS:ESModules:CommonJS和ESModules区别JS模块化——AMD、CommonJS和ESModules前端模块化是指将前端代码拆解成互相独立的小块,每一块完成特定的功能,这些小块被......
  • 前端【VUE】06-vue【组件组成】【组件通信】【进阶语法】
    一、组件的三大组成部分(结构/样式/逻辑)组件的三大组成部分组件的样式冲突scoped1、components目录下components/BaseOne.vue1<template>2<divclass="base-one">3BaseOne4</div>5</template>67<script>8exportdefault{9......