如何在vue工程中模块化使用大量的svg图片
如果你在执行 requireAll(requireSvg) 后得到的是一个 BrowserSpriteSymbol 数组,并且能够直接使用 <use> 进行引用,这通常意味着在构建过程中有一些特定的 Webpack 配置和/或自定义加载器(loader)被用来处理 SVG 文件,并将它们转换为一个 SVG Sprite,其中每个 SVG 都转换为了一个 <symbol>。
具体步骤如下:
-
require.context: 使用require.context创建一个特定的上下文,这个上下文允许你动态地require模块。在你的例子中,requireSvg被设置为指向./assets/svg目录下所有以.svg结尾的文件。 -
requireAll函数: 这个函数接收一个requireContext作为参数,并使用map方法遍历requireContext.keys()返回的所有模块键(即文件路径)。然后,它使用requireContext函数来动态地require这些模块。由于require会执行导入的代码,因此它会执行由 Webpack 配置的加载器所指定的任何转换。 -
Webpack 配置和加载器: 在你的项目中,很可能有一个或多个加载器(如
svg-sprite-loader、svg-url-loader或自定义加载器)被配置来处理 SVG 文件。这些加载器会在require被调用时运行,将 SVG 文件转换成一个统一的 SVG Sprite,其中每个 SVG 都被转换成一个<symbol>元素。 -
返回
BrowserSpriteSymbol数组: 假设svg-sprite-loader或其他类似的加载器被配置为生成一个全局可访问的 SVG Sprite,并且每个 SVG 被转换为一个<symbol>。在这种情况下,requireAll(requireSvg)将返回一个数组,该数组包含对 SVG Sprite 中每个<symbol>的引用。这些引用可能以某种方式被封装为BrowserSpriteSymbol对象,使得它们可以直接在模板中使用<use>元素进行引用。 -
在模板中使用
<use>引用: 有了 SVG Sprite 和相应的<symbol>定义,你就可以在模板中使用<use>元素来引用这些<symbol>。<use>元素的xlink:href或href属性应该指向 SVG Sprite 中<symbol>的id。 - 即直接使用<svg> <use :xlink:href="symbolId" /> </svg> 加载svg图片

浙公网安备 33010602011771号