记一次开源_大量SVG的高性能渲染

vscode-material-icon-theme 是一个有着广泛受众的vscode插件,用户可以给文件、目录设计图标,对属于vscode美化工具,我经常用这个工具区分架构,可以帮助理解目录结构。

不过每次我想找图标,都要去官方的仓库查看有哪些图标、对应的名称是什么,很麻烦,就开发了一个前端项目,托管在了vercel,方便随时打开搜索图标,这就是为什么开发vscode-material-icon-preview的原因。

在线使用

一个简单的项目,也打磨了一些细节:

  1. 根据用户时区判断明暗主题(用户手动设置后将不会再干预切换)
  2. 基于cookie的主题色ssr
  3. 用tanstack virtual高性能渲染大量dom节点
  4. 封装了img标签,加了缓存机制,防止多次发起网络请求读取svg
  5. 写了generator.ts构建脚本,在构建时获取svg的元信息,存到public下,每次push项目都会自动触发同步原仓库的图标更新
  6. 从svg里提取了HEX、RGB颜色,方便在前端计算颜色范围,实现了一个color filter,体验非常丝滑
  7. 图标的明暗版本切换。有的图标是有明暗版本的,在vscode中会自动切换,对于这些图标鼠标hover到图标上可以进行明暗版本切换预览

这个项目也踩到了一些坑,我本想把head做成Apple Liquid Glass的样子,但是死活都不能实现半透明,最后发现是因为我head样式无法感知到下层tanstack virtual内的图标,只能是在virtual内部做一个head,感觉会混乱职责,遂放弃。

相关推荐
NiceCloud喜云3 小时前
Opus 4.8 的 Effort Control 怎么选:Low 到 Max 五档策略
android·java·大数据·前端·c++·python·spring
wordbaby4 小时前
React Native + RNOH:跨页面数据回传的最佳实践与避坑指南
前端·react native
丷丩4 小时前
MapLibre GL JS第22课:查看本地GeoJSON
前端·javascript·map·mapbox·maplibre gl js
Front思5 小时前
AI前端工程师需要具备能力+
前端·人工智能·ai
ZC跨境爬虫7 小时前
跟着 MDN 学CSS day_29:(掌握文本与字体样式的核心艺术)
前端·css·ui·html·tensorflow
李子琪。8 小时前
网络空间安全深度实战:CSRF 漏洞原理剖析与基于 Token 的纵深防御体系构建(全栈实验报告)
前端·安全·csrf
冰暮流星8 小时前
javascript之history对象介绍
前端·笔记
IT_陈寒8 小时前
Vite热更新失灵?你可能漏了这个配置
前端·人工智能·后端
丷丩8 小时前
MapLibre GL JS第19课:实时更新要素
前端·javascript·gis·map·mapbox·maplibre gl js
Mr.Daozhi8 小时前
RAG 进阶实战:跑通 Demo 后我连续翻了 6 次车,逐一修复才真正可用(含 Gradio Web 版)
前端·数据库·langchain·大模型·gradio·rag·科研工具