大数据毕业设计之前端05:Vue中如何加载本地svg图标_前端优化svg加载(1)

BuildAdmin在src/assets/icons下存放了很多svg图片,我们要将这些svg封装到中。在BuildAdmin中,使用的是node的fs模块来读取这些svg进行的加载。

然后定义了一个svg组件(这个在后面的实现中细讲)。最后就是在vite中加载这些svg文件,在Icon中使用svg时,会指向这些文件。

svg图标实现

我没有使用上面的方式加载svg,原因是:我使用的是webpack,在编译时无法识别fs这种服务端读取文件的模块,所以就用使用webpack的svg-sprite-loader来加载svg。

1. svg-sprite-loader

先安装svg-sprite-loader

npm i svg-sprite-loader -D

vue.config.js中添加loader配置,以前webpack配置都写在webpack.config.js中,后来改了。

这里的include中指定svg的目录,test是目标svg的正则表达式,symbolId是加载的svg图标的新命名,在原本svg的name之前,加了一个 local- 前缀。

2. 加载svg文件

我们要先把svg文件引用进来,才能触发loader加载。

所以写一个方法,使用require.context()生成一个 contextmodule(上下文模块) ,将assets/icons中所有的svg文件,都require引用进来。

然后就是在main.ts中调用加载方法,完成svg文件到图标的加载。

3. 定义svg组件

在components/icon/svg目录下,实现了一个svg的component,定义html原生的svg标签。

下的 中的href属性,需要指定的是svg图标的名字,而绑定的 iconName,可以看到是引用的是props.name,即是通过父组件传过来的name属性。

至于size和color都是默认值。

4. 渲染svg

当使用时,如果Icon的name属性前缀为local- 的话,就渲染为svg组件(即3中定义的组件)。

最后,看看如果渲染svg的话,Icon是如何定义name属性。

5. 使用svg

使用了Icon,name为local-lang,这里的local-是前缀,而lang对应的是assets中的lang.svg文件。

在浏览器看一下渲染结果。

这样,这个Icon被渲染成了svg,图片右上角的图标也是svg文件加载的。

结语

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

需要这份系统化资料的朋友,可以戳这里获取

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值