<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>PerformanceOptimization | 锤子前端</title><description>Now vibe coding, so learning hammer FE ?</description><link>https://channel.meo-ai.com</link><item><title>《为特定场景&quot;投影&quot;React：从60KB到7KB的极致裁剪实验》</title><link>https://channel.meo-ai.com/posts/630</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/630</guid><pubDate>Sat, 09 May 2026 01:12:57 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《为特定场景&quot;投影&quot;React：从60KB到7KB的极致裁剪实验》&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=%23%E5%B7%A5%E7%A8%8B%E5%8C%96&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=%23TanStackStart&quot; title=&quot;#TanStackStart&quot;&gt;#TanStackStart&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23AICoding&quot; title=&quot;#AICoding&quot;&gt;#AICoding&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23PerformanceOptimization&quot; title=&quot;#PerformanceOptimization&quot;&gt;#PerformanceOptimization&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Vite&quot; title=&quot;#Vite&quot;&gt;#Vite&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23RSC&quot; title=&quot;#RSC&quot;&gt;#RSC&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23BundleSize&quot; title=&quot;#BundleSize&quot;&gt;#BundleSize&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;TanStack作者Tanner Linsley发现React 19在Vite打包后仍占约60KB gzip，远大于TanStack全家桶总和。受&quot;代码即物化视图&quot;理念启发，他借助AI代理在一天内生成了一个针对TanStack Start需求定制的React&quot;投影&quot;——保留完整公共API，但移除并发调度、时间切片等不需要的功能，核心仅7.08KB gzip。该项目已在其个人博客和tanstack.com生产环境运行，JS体积减少33%至85%，渲染性能提升2到3倍，验证了当代码生成成本骤降时，为特定场景定制依赖库投影的可行性。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;- 作者发现React打包后仍有约60KB，比TanStack全家桶加起来还&quot;胖&quot;，成了整个技术栈里&quot;最不能删却又最大块头&quot;的存在&lt;br /&gt;- 本想用Preact&quot;瘦身&quot;，但它和React 19在use()、服务端动作、hydration等边缘地带已经&quot;渐行渐远&quot;，补丁叠补丁让人望而却步&lt;br /&gt;- 一个超酷的观点启发了他：如果写代码能像查数据库一样&quot;按需生成&quot;，那代码本身只是&quot;理念&quot;的一种展示形式，我们完全可以为不同场景生成不同版本的React&lt;br /&gt;- 借助AI代理，只用一天就&quot;捏&quot;出了一个迷你版React，保留了你熟悉的hooks、JSX、Suspense和SSR，但扔掉了并发调度、时间切片这些TanStack Start用不上的&quot;重型装备&quot;&lt;br /&gt;- 设计得像乐高一样：7KB核心底座 + 8个可插拔功能（context、suspense、portal等），不需要的模块在构建时直接替换成空实现，不会混进最终包&lt;br /&gt;- 真刀真枪上了生产环境：个人博客JS少了三分之一，首屏快了近两成；tanstack.com这种&quot;重火力&quot;站点也成功扛住，客户端JS砍掉近1MB&lt;br /&gt;- 作者抛出思考题：当定制一个库的成本从几个月降到几天，继续默认 shipped 全套通用库，反而成了一种需要掂量的选择&lt;br /&gt;- 他强调这不是要&quot;取代React&quot;，更像是Linux发行版或歌曲混音——同一个内核，根据不同听众的口味调出不同版本&lt;br /&gt;&lt;br /&gt;文章URL：&lt;a href=&quot;https://tannerlinsley.com/posts/projecting-react&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://tannerlinsley.com/posts/projecting-react&quot;&gt;https://tannerlinsley.com/posts/projecting-react&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://tannerlinsley.com/posts/projecting-react&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;An AI-generated projection of React&apos;s public API, shaped around what a TanStack Start app needs. ~9KB client, 2–3× faster on our workloads. Powers this blog today; capable of running tanstack.com end-to-end with no known regressions. An experiment, not a…&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;Tanner Linsley&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;Projecting React&quot; src=&quot;/static/https://cdn4.telesco.pe/file/SsFAf4E2TprdTpMP5Rd_ZGw2-HZ4LcLCknxUmDYKJ4LYLcLrv6CJysVhiildIDAJbDkB_kdKG3AtJozpeMmC8yX0nhoQ0O431qPYTV1BQEr3giqvHeNzif0CNYrvd9i28vaT34-2mXibKCFK0c10_q0OQGpMDV5EQ70Qwszl_6e1VwYNZrHLwzUoKwRNIsAewSIvHL2NCgHVpo_UVcEJ2mxd0q4eJQ42VQ8VB5LRe7BC8zT6WVMmuhWQCXk5uv1tRRLFNzJR6Ov089dlGpE6gplrdImjNHb_wEMS7uNDAEKDuey2dSW-o_sWaUTa7a-_2W3v-4qswNFEsWr5n6my1A.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;Projecting React&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;An AI-generated projection of React&apos;s public API, shaped around what a TanStack Start app needs. ~9KB client, 2–3× faster on our workloads. Powers this blog today; capable of running tanstack.com end-to-end with no known regressions. An experiment, not a…&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《probe-image-size：无需完整下载即可获取图片尺寸》</title><link>https://channel.meo-ai.com/posts/628</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/628</guid><pubDate>Fri, 08 May 2026 03:02:30 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《probe-image-size：无需完整下载即可获取图片尺寸》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23NodeJS&quot; title=&quot;#NodeJS&quot;&gt;#NodeJS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23ImageProcessing&quot; title=&quot;#ImageProcessing&quot;&gt;#ImageProcessing&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23ProbeImageSize&quot; title=&quot;#ProbeImageSize&quot;&gt;#ProbeImageSize&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23StreamParsing&quot; title=&quot;#StreamParsing&quot;&gt;#StreamParsing&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23ImageMetadata&quot; title=&quot;#ImageMetadata&quot;&gt;#ImageMetadata&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23PerformanceOptimization&quot; title=&quot;#PerformanceOptimization&quot;&gt;#PerformanceOptimization&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;probe-image-size 是一款轻量级 Node.js 库，能在不下载完整图片的情况下快速探测图片尺寸与类型。它支持 URL、Stream 和 Buffer 三种输入方式，覆盖 JPG/PNG/WebP/AVIF/HEIC 等主流格式，通过流式解析仅读取文件头部信息，对大图和远程资源特别省内存、省带宽，是图片预处理场景的理想选择。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;- 支持超多种格式：JPG、GIF、PNG、WebP、BMP、TIFF、SVG、PSD、ICO、AVIF、HEIC、HEIF 统统能读，覆盖面很广&lt;br /&gt;- 流式探测超省资源：不需要把整张大图拉下来，只读取文件头部就能算出宽高，远程大图也能秒开，内存和带宽都友好&lt;br /&gt;- 三种输入方式任选：可以直接传网址自动下载探测，也可以丢文件流或 Buffer 进去，同步异步 API 都有，接入很灵活&lt;br /&gt;- 额外信息一并返回：除了宽高，还会带回图片类型、MIME、方向角（Orientation），ICO 和 AVIF 还能拿到多尺寸变体列表&lt;br /&gt;- 安全提示要记牢：对于不可信来源的图片，返回的宽高值别直接信任，建议在自己的业务里再加一层范围校验&lt;br /&gt;&lt;br /&gt;文章URL：&lt;a href=&quot;https://github.com/nodeca/probe-image-size&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://github.com/nodeca/probe-image-size&quot;&gt;https://github.com/nodeca/probe-image-size&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://github.com/nodeca/probe-image-size&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Get image size without full download. Supported image types: JPG, GIF, PNG, WebP, BMP, TIFF, SVG, PSD, ICO. - nodeca/probe-image-size&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 - nodeca/probe-image-size: Get image size without full download. Supported image types: JPG, GIF, PNG, WebP, BMP, TIFF,…&quot; src=&quot;/static/https://cdn4.telesco.pe/file/Xx0leOWVoTq_hWL_TJzylhifEcVCOXdqLgM0W_zZLQdfr2OQv_r7aCxmq61aKsXZZSbTX5VGfm2H-qixYla9nimeYn0NorcLFlSu58h5IMB5EnZ6rP0O32fICa7m93VGxRhBVchfvLUZDI287-vZMORxWhKXZGhT6fdV_ztm-IBh9Ep0Ay1eiB4jyqih2XnbkogKlKWt6pNKE5uNBRnressnIq1J8oJCJBcpdaC4ECFb850jaZuFe0ksdvip6phx3olSpLmoCh37iTdhFcPp84pj6--rMsR9x2WFdiUmWjjJze-SRcaa9NCLHeLaHIe3QRyVm3Qe7Txi_W_hsS7sOg.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 - nodeca/probe-image-size: Get image size without full download. Supported image types: JPG, GIF, PNG, WebP, BMP, TIFF,…&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Get image size without full download. Supported image types: JPG, GIF, PNG, WebP, BMP, TIFF, SVG, PSD, ICO. - nodeca/probe-image-size&lt;/div&gt;
&lt;/a&gt;</content:encoded></item></channel></rss>