大家好,我是心锁,一枚23届准毕业生。
近期ChatGPT很火,作为前端er,我思考与尝试了让它帮忙写代码、帮助我解析与研究某些国内资料较少的技术、优化代码、解释代码、优化简历——都非常棒,就是很可惜GPT的图片能力还一般,如果什么时候它可以解析图片了,或许图片生成代码就不远了。
等一下,SVG好像也是图片,就在某个时刻我灵光一闪,于是本文章就出来了。
不知道诸位读者们有没有自己找icon的经历:
- 先找到对应图片并下载
- 将文件移动到项目并改名
- 在需要使用的地方导入并通过img标签使用
私以为,第一步,第二步,第三步我都不喜欢。有没有一种合适的方式,让我可以直接通过IDE新建文件,不再需要下载,同时使用的时候不再需要导入?

这或许是有的,本文旨在完成该目标。
本步骤也可以理解成正常流程中的寻找图标与自行绘制图片
众所周知,SVG是一种矢量图形格式,可以通过代码描述出图形,而不是像普通图片一样储存像素点。这使得SVG图标具有可缩放性,适合在不同分辨率的设备上使用。同时,SVG图标可以用作网站的某些元素,例如logo、导航菜单等。

再众所周知,ChatGPT具有生成代码的能力。我们可以利用ChatGPT生成SVG代码,这样就可以省去自己绘制图标或者自己找图标的步骤。
我试着用下边的文案生成了一些icon,大家可以参考:
GPT plus 代充 只需 145


讯享网

讯享网

为了实现不需要下载和导入文件,我们可以使用SVG Symbol。使用SVG Symbol,我们可以将所有的图标放在一个单独的SVG文件中,并通过引用该文件中的Symbol元素来使用它们。
以下是一个示例SVG文件,其中定义了两个Symbol元素:
讯享网
以下是一个使用SVG Symbol的示例代码:
在上面的代码中,我们通过元素引用了SVG文件中的两个Symbol元素,并将它们放在了元素内。
为了进一步简化该流程,我们可以使用Webpack和svg-sprite-loader自动导入SVG Symbol。
以下是一个Webpack配置文件中添加的规则:
讯享网
该规则将处理所有以结尾的文件,并使用将它们转换为SVG Symbol元素。其中,选项用于生成Symbol元素的ID。这样既保留了导入svg为url的能力,又拥有了symbol导入能力。
我们可以在文件夹下新建一个文件夹,在其中存放所有的SVG图标文件。然后,我们创建一个文件,使用函数自动导入所有的SVG文件并将它们添加到页面中。

在上面的代码中,我们使用函数导入了所有以结尾的文件,并将它们添加到页面中。
在该步骤,需要注意两个点。
- 需要导入文件
务必在主文件中导入该文件:
讯享网
- 若出现和WebpackModuleApi相关错误,强烈建议使用any代替

为方便使用,我们封装一个SvgIcon组件。
在上面的代码中,我们定义了一个组件,用于渲染SVG图标。该组件使用了元素引用了SVG文件中的Symbol元素。其中,属性用于指定Symbol元素的ID。
讯享网
使用作为icon的单位,是因为是相对于当前对象内文本的字体尺寸的宽度单位,这样我们就可以通过设置fontSize的方式来调整icon的图标了。

使用方式:
在上面的代码中,我们使用了组件来渲染SVG图标,其中,属性用于指定需要渲染的图标的名称。
至此,我们已经完成了将SVG图标转换为SVG Symbol,并自动导入的流程。现在,我们可以直接在代码中使用SVG图标了,而不需要导入文件。
值得注意的是,该方法存在一定的问题。由于我们全量引用了图标,会导致在所有页面,都会导入所有icon,原因是我们在文件中做了自动化导入,我们亦可通过单行导入的方式来避免全量引入,我目前在思考有没有什么更好的方案解决该问题。
讯享网
本文主要介绍了两个方法,分别是使用ChatGPT自动生成SVG代码和使用Webpack和svg-sprite-loader自动导入SVG Symbol。这些方法可以使得在代码中使用SVG图标更加方便和高效。

综上所述,通过使用ChatGPT自动生成SVG代码和使用Webpack和svg-sprite-loader自动导入SVG Symbol,我们可以更加便捷地在代码中使用SVG图标,提高开发效率和代码质量。
本文正在参加「金石计划」
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/210338.html