<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>无障碍 | 锤子前端</title><description>Now vibe coding, so learning hammer FE ?</description><link>https://channel.meo-ai.com</link><item><title>《hucre：零依赖的电子表格引擎》</title><link>https://channel.meo-ai.com/posts/693</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/693</guid><pubDate>Sat, 15 Aug 2026 13:03:55 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《hucre：零依赖的电子表格引擎》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;br /&gt;&lt;a href=&quot;/search/result?q=%23Web%E5%BC%80%E5%8F%91&quot; title=&quot;#Web开发&quot;&gt;#Web开发&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23TypeScript&quot; title=&quot;#TypeScript&quot;&gt;#TypeScript&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E7%94%B5%E5%AD%90%E8%A1%A8%E6%A0%BC&quot; title=&quot;#电子表格&quot;&gt;#电子表格&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Xlsx&quot; title=&quot;#Xlsx&quot;&gt;#Xlsx&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Csv&quot; title=&quot;#Csv&quot;&gt;#Csv&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Ods&quot; title=&quot;#Ods&quot;&gt;#Ods&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2&quot; title=&quot;#数据转换&quot;&gt;#数据转换&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E9%9B%B6%E4%BE%9D%E8%B5%96&quot; title=&quot;#零依赖&quot;&gt;#零依赖&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%B5%81%E5%BC%8F%E5%A4%84%E7%90%86&quot; title=&quot;#流式处理&quot;&gt;#流式处理&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%95%B0%E6%8D%AE%E9%AA%8C%E8%AF%81&quot; title=&quot;#数据验证&quot;&gt;#数据验证&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%97%A0%E9%9A%9C%E7%A2%8D%E8%AE%BF%E9%97%AE&quot; title=&quot;#无障碍访问&quot;&gt;#无障碍访问&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;1. 核心定位：一个纯 TypeScript 编写的零依赖电子表格引擎，支持读写 XLSX、CSV、ODS、JSON、NDJSON、XML、HTML 等多种格式，可在 Node.js、Deno、Bun、浏览器、Cloudflare Workers 等任意平台运行&lt;br /&gt;2. 极致轻量：完全支持 Tree Shaking，按需导入，CSV 模块仅 3.7KB gzip，完整库 129KB gzip，远小于 SheetJS（300KB）和 ExcelJS（500KB）&lt;br /&gt;3. 多格式统一 API：通过 &lt;code&gt;read()&lt;/code&gt; 自动检测格式，&lt;code&gt;write()&lt;/code&gt; 支持 9 种输出格式（XLSX、ODS、CSV、TSV、JSON、NDJSON、XML、HTML、Markdown），大幅降低多格式处理的心智负担&lt;br /&gt;4. 流式处理：支持 XLSX、CSV、NDJSON、ODS、XML 的流式读写，可处理百万级数据而不爆内存；300万行 XLSX 流式写入峰值内存仅 70MB，而增量写入器需要 1GB+&lt;br /&gt;5. 功能全面：支持单元格样式、条件格式（13 种）、数据验证、超链接、图片（含 SVG）、图表（柱状/折线/饼图等）、数据透视表、迷你图、冻结窗格、密码保护、Excel 2024 原生复选框、模板引擎等&lt;br /&gt;6. 往返保真：&lt;code&gt;openXlsx&lt;/code&gt;/&lt;code&gt;saveXlsx&lt;/code&gt; 路径可保留图表、VBA 宏、切片器、时间线过滤器等 hucre 不原生建模的部分，实现无损编辑他人文件&lt;br /&gt;7. 数据验证与无障碍：内置 Schema 验证（类型强制、正则、枚举、范围），以及 WCAG 2.1 AA 无障碍审计（对比度检查、缺失替代文本、表头检测等）&lt;br /&gt;8. 遗留格式支持：可读取 XLS（Excel 97-2003）和 XLSB（二进制 Excel）文件，自动检测格式&lt;br /&gt;9. 开发体验友好：提供 Builder API 链式调用、对象简写读写（&lt;code&gt;readObjects&lt;/code&gt;/&lt;code&gt;writeObjects&lt;/code&gt;）、CLI 工具（格式转换、检查、验证）、单元格工具函数（行列转换、范围解析）&lt;br /&gt;10. 明确的能力边界：不实现公式计算引擎、不支持 XLS/XLSB 写入、部分高级图表类型（气泡图/雷达图等）仅支持读取和往返、流式 ODS 写入不带样式&lt;br /&gt;&lt;br /&gt;URL：&lt;a href=&quot;https://github.com/productdevbook/hucre&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://github.com/productdevbook/hucre&quot;&gt;https://github.com/productdevbook/hucre&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://github.com/productdevbook/hucre&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Zero-dependency spreadsheet engine. Read &amp;amp; write XLSX, CSV, ODS. Pure TypeScript, works everywhere. - productdevbook/hucre&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;GitHub&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;GitHub - productdevbook/hucre: Zero-dependency spreadsheet engine. Read &amp;amp; write XLSX, CSV, ODS. Pure TypeScript, works everywhere.&quot; src=&quot;/static/https://cdn4.telesco.pe/file/MJcnXpxpA3YeVtM-Tm5vhddBRePR-Iiy7xQfjh0W5GjjXgCWMvURyaufUW9XrSUFu02S0RODegcGhxzJ8HSISdwFSgv4a3ZhHWQJuOCC0qQuH0EdyatC4ZEy9_nZr6TzfooahohpRRD0QcWrIVL9EWMiCMDY0Cpm3XNUlGuaMc8u5o_98ecZ4Q7GsDla-h9Up2ChebVJ1WQy-Vq7GbaRMHNkCHX5q7_j_U4iwkdmPXJQvtJ1kyKJR7WBdVWyhk8tHITkfV5Xbmqyx6yhd-hXxyunomCEXs7BP3-HQw1s58YG6x6X-G47h9t2AxaRD-TviTPWDoEAMjETvPLU2YOtQA.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;GitHub - productdevbook/hucre: Zero-dependency spreadsheet engine. Read &amp;amp; write XLSX, CSV, ODS. Pure TypeScript, works everywhere.&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Zero-dependency spreadsheet engine. Read &amp;amp; write XLSX, CSV, ODS. Pure TypeScript, works everywhere. - productdevbook/hucre&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《Microcharts：一句话里就能塞下的React微图表库》</title><link>https://channel.meo-ai.com/posts/688</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/688</guid><pubDate>Sat, 01 Aug 2026 09:20:15 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《Microcharts：一句话里就能塞下的React微图表库》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23%E5%89%8D%E7%AB%AF&quot; title=&quot;#前端&quot;&gt;#前端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23React&quot; title=&quot;#React&quot;&gt;#React&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96&quot; title=&quot;#数据可视化&quot;&gt;#数据可视化&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%9B%BE%E8%A1%A8%E5%BA%93&quot; title=&quot;#图表库&quot;&gt;#图表库&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96&quot; title=&quot;#性能优化&quot;&gt;#性能优化&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%97%A0%E9%9A%9C%E7%A2%8D&quot; title=&quot;#无障碍&quot;&gt;#无障碍&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23ServerComponents&quot; title=&quot;#ServerComponents&quot;&gt;#ServerComponents&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;Microcharts是一个专为React设计的微图表库，提供106种图表类型，单个图表gzip后仅2.18-7KB（中位数5.25KB），零依赖。它主打&quot;词级图表&quot;理念——图表小到可以嵌入句子、表格单元格和KPI卡片中，无需坐标轴和图例，由上下文文字承载含义。支持服务端组件静态渲染（0KB客户端JS）、自动生成无障碍alt文本、单色系主题系统，并能在错误数据下优雅降级。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;1. 小到离谱：中位数图表仅5.25KB gzip，最大7KB，零运行时依赖，React只是peer dependency，比通用图表库（如Recharts 106KB共享内核）轻了整整101KB&lt;br /&gt;2. 一句话装得下：图表设计为&quot;词级尺寸&quot;，可以直接嵌入正文、表格单元格、KPI卡片甚至打印报告，读者不用离开句子就能理解数字&lt;br /&gt;3. 106种图表统一API：传一个data数组就搞定，domain、color、title在每个图表里含义一致，TypeScript类型完备，编辑器能自动补全&lt;br /&gt;4. 静态渲染零负担：在Server Component里渲染时完全不产生客户端JS，hydrate成本为0，对性能敏感场景极其友好&lt;br /&gt;5. 坏数据也能优雅处理：NaN、空数组、单一数值都不会报错，会自动渲染成点、空白或水平线，不用写try/catch兜底&lt;br /&gt;6. 无障碍开箱即用：自动生成alt文本（如&quot;趋势上升27%，范围128到163&quot;），每个图表一个tab焦点，支持方向键浏览，色盲安全配色和RTL都内置&lt;br /&gt;7. 单色系主题系统：给一个accent主色就能自动推导出完整配色（包括正负色、分类色、暗色模式），整个页面一键换肤&lt;br /&gt;&lt;br /&gt;URL：&lt;a href=&quot;https://microcharts.dev/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://microcharts.dev/&quot;&gt;https://microcharts.dev/&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://microcharts.dev/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Word-sized React charts — tiny sparklines, micro charts &amp;amp; inline SVG trend lines. Zero runtime deps, ~2–7 kB interactive · ~1–4 kB static, accessible by default, RSC-safe. Sit in a sentence, table cell, KPI card, or AI reply.&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;microcharts&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;microcharts — Word-sized charts for React.&quot; src=&quot;/static/https://cdn4.telesco.pe/file/HL18sZBYJ6CmXzfv4FiWPiCXLBU9IBJLeT2-o3a8_fvGEka3eFREc06UBbL3YE3_HEyaiShzH4bZ0qgcAuh_QGGoHiZraOY1QiXTwFno5Ts5hgTfpph-wxi5-ETIdnLizAKWXjxaHGFpxsh-8a1bFrHytH-9_TQ5P9xB_cIvzokDamofEFCg03eK-Ay8zVNrTmNZCWZ9RH2Z7cTaFvsakImItcQNQGMWvUauWUBqEshnp2TubuiPUebSqvV77UQxPcsA8NhOzgld7JB-GmY4ibFVO9zd6hEgaLwrfS3MtyAbJ7gjM9XUdmHQiqU5-rX1thQU1laoQaLMSvc087RLTw.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;microcharts — Word-sized charts for React.&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Word-sized React charts — tiny sparklines, micro charts &amp;amp; inline SVG trend lines. Zero runtime deps, ~2–7 kB interactive · ~1–4 kB static, accessible by default, RSC-safe. Sit in a sentence, table cell, KPI card, or AI reply.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《用 Web Components 构建框架无关的设计系统（实践指南）》</title><link>https://channel.meo-ai.com/posts/650</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/650</guid><pubDate>Sat, 30 May 2026 00:08:24 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《用 Web Components 构建框架无关的设计系统（实践指南）》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23%E5%89%8D%E7%AB%AF&quot; title=&quot;#前端&quot;&gt;#前端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23WebComponents&quot; title=&quot;#WebComponents&quot;&gt;#WebComponents&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E8%AE%BE%E8%AE%A1%E7%B3%BB%E7%BB%9F&quot; title=&quot;#设计系统&quot;&gt;#设计系统&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Elena&quot; title=&quot;#Elena&quot;&gt;#Elena&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23VitePress&quot; title=&quot;#VitePress&quot;&gt;#VitePress&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23CSS&quot; title=&quot;#CSS&quot;&gt;#CSS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%97%A0%E9%9A%9C%E7%A2%8D&quot; title=&quot;#无障碍&quot;&gt;#无障碍&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;本文是一份超详细的实战教程，手把手教你用 Web Components（通过 Elena 库）和 VitePress 搭建一个框架无关、可发布的设计系统。核心思路是&quot;最低可行层级&quot;——用 web 标准直接写原子组件，避免框架锁定；组件保持&quot;最笨&quot;状态，把复杂业务逻辑留给应用层。文章涵盖 monorepo 结构搭建、Elena 组件脚手架、条件渲染、&lt;a href=&quot;https://t.me/scope&quot; target=&quot;_blank&quot; title=&quot;@scope&quot;&gt;@scope&lt;/a&gt; 样式隔离、CSS 自定义属性主题化，以及通过 JSDoc + Custom Elements Manifest 自动生成 Props 表格的文档工作流。最终产出的是一个可独立发布的组件包 + 可部署的静态文档站。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;1. 设计系统从第一天就绑定特定框架（如 React）是&quot;令人费解的&quot;——web 标准组件才是可移植、可组合、经得起时间考验的选择&lt;br /&gt;2. Elena 是&quot;刚好够用的抽象&quot;：处理跨框架的 prop/attribute 同步、事件委托等脏活，但不掩盖 web 标准本质&lt;br /&gt;3. 组件应保持&quot;最笨&quot;——被告知显式状态和内容的声明式组件，比内置复杂状态管理的&quot;聪明&quot;组件更健康&lt;br /&gt;4. 设计决策应该在代码中而非 Figma 中完成：现代色彩空间、相对单位、对数排版比例等，设计工具只能模拟浏览器的很小一部分能力&lt;br /&gt;5. 用 &lt;a href=&quot;https://t.me/scope&quot; target=&quot;_blank&quot; title=&quot;@scope&quot;&gt;@scope&lt;/a&gt; 实现样式隔离 + 组件级 CSS 自定义属性作为&quot;最终层 token&quot;，既保证封装又有主题化回退&lt;br /&gt;6. JSDoc 注释即文档：Elena 自动生成 custom-elements.json，VitePress 通过 data loader 直接渲染 PropsTable 和 ComponentHeader&lt;br /&gt;7. 文档即测试场：在 VitePress 中实时预览组件，确保跨框架可移植性；开发时 concurrent 运行 watch + docs:dev 实现热更新&lt;br /&gt;8. 条件渲染示例：同一个组件通过 href prop 自动切换 button/a 标签，CTA 链接按钮的常见需求也能语义化实现&lt;br /&gt;&lt;br /&gt;URL：&lt;a href=&quot;https://piccalil.li/blog/framework-agnostic-design-systems-part-1/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://piccalil.li/blog/framework-agnostic-design-systems-part-1/&quot;&gt;https://piccalil.li/blog/framework-agnostic-design-systems-part-1/&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://piccalil.li/blog/framework-agnostic-design-systems-part-1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Baking framework lock-in into your design system from day one is a recipe for obsolescence. Component documentation is often tedious and out-of-sync with development. Let’s build a documentation-first, framework-agnostic component library using web standards…&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;Piccalilli&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;Framework-agnostic design systems: a practical approach to web components&quot; src=&quot;/static/https://cdn4.telesco.pe/file/c5MKnRW_4RxCmUAd723zvjHh4L-nLO0G5lNM1Rh-VVrBb9er230bEw9ZYF4VsuuvxN0BVi0YyOXkUFWq_AH9w49QAI6VMwvxXkDpdbB0gIDD7JCyX5AuJ-Ny1v7brQ_shLRPNX7gf8Ay5l_SATf0p3zFlSNh8IGQdLmviOU5QsWPjJRhu8kA0x5HjeMOkTFPFRTGasUhlk6IDbOVvfbHOqbHmEPWU6n08YbW6SS-PHyBD2nmeqUrbZ2UZL9gZQztNv7Dn7GUuYzet9bvQl3-ds-AwqZZkw1-Bv37QOg9VeUCezZYVhY90R8b3s7XeNV8n08Fs1UfIk9tOVbATrIxUQ.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;Framework-agnostic design systems: a practical approach to web components&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Baking framework lock-in into your design system from day one is a recipe for obsolescence. Component documentation is often tedious and out-of-sync with development. Let’s build a documentation-first, framework-agnostic component library using web standards…&lt;/div&gt;
&lt;/a&gt;</content:encoded></item></channel></rss>