Now vibe coding, so learning hammer FE ?
标签:#前端 #React #性能优化 #虚拟滚动
链接:https://rednegra.net/blog/20260212-virtual-scroll/
总结:本文介绍了 HighTable 组件实现数十亿行数据表格渲染的五大核心技术:懒加载仅获取可见数据、表格切片仅渲染可见行、无限像素突破浏览器高度限制、双模式滚动兼顾精确与快速导航、两步随机访问支持键盘操作。这些方案完全基于原生 Web 技术,无需 Canvas 或自定义滚动条即可实现高性能大数据表格。
文章要点:
- 懒加载:通过 DataFrame 接口仅加载视口可见单元格,将 1TB 数据集的内存占用从全量降至约 3KB(30 行),数据异步获取并缓存
- 表格切片:引入 Canvas 层作为定位参考,仅渲染可见行(约 30 个 DOM 元素),而非全部数十亿行,保持渲染性能恒定
- 无限像素:针对浏览器最大高度限制(Firefox 约 1700 万像素),设置 800 万像素阈值,超过时通过缩放因子降低滚动条分辨率,实现无行数上限的导航
- 像素级精确滚动:实现局部滚动(小幅度精确移动)与全局滚动(大幅度位置跳跃)双模式,通过
- 两步随机访问:解耦垂直与水平滚动逻辑,支持键盘导航(方向键、
- 技术选型:完全基于原生 Web 平台(HTML 表格、CSS 绝对定位、JavaScript 事件),利用
链接:https://rednegra.net/blog/20260212-virtual-scroll/
总结:本文介绍了 HighTable 组件实现数十亿行数据表格渲染的五大核心技术:懒加载仅获取可见数据、表格切片仅渲染可见行、无限像素突破浏览器高度限制、双模式滚动兼顾精确与快速导航、两步随机访问支持键盘操作。这些方案完全基于原生 Web 技术,无需 Canvas 或自定义滚动条即可实现高性能大数据表格。
文章要点:
- 懒加载:通过 DataFrame 接口仅加载视口可见单元格,将 1TB 数据集的内存占用从全量降至约 3KB(30 行),数据异步获取并缓存
- 表格切片:引入 Canvas 层作为定位参考,仅渲染可见行(约 30 个 DOM 元素),而非全部数十亿行,保持渲染性能恒定
- 无限像素:针对浏览器最大高度限制(Firefox 约 1700 万像素),设置 800 万像素阈值,超过时通过缩放因子降低滚动条分辨率,实现无行数上限的导航
- 像素级精确滚动:实现局部滚动(小幅度精确移动)与全局滚动(大幅度位置跳跃)双模式,通过
globalAnchor 和 localOffset 状态管理,确保任意行可达(支持至 2 万亿行)- 两步随机访问:解耦垂直与水平滚动逻辑,支持键盘导航(方向键、
Ctrl+方向键)和程序化跳转,通过标志位控制滚动时序避免冲突- 技术选型:完全基于原生 Web 平台(HTML 表格、CSS 绝对定位、JavaScript 事件),利用
position: sticky 实现表头固定,无需 Canvas 或自定义滚动条原文链接:
https://frontendmasters.com/blog/fun-with-typescript-generics/
文章要点:
- 核心目标:通过实现一个完全类型化的
- 基础概念:回顾泛型作为"类型参数"的本质,通过
- 问题场景:初始实现使用
- 关键技术:使用函数重载(Function Overloading)定义两个签名版本,结合条件类型
- 实现细节:定义
核心总结:
本文通过一个实际的 TanStack Start 场景,深入演示了 TypeScript 泛型、条件类型和函数重载的组合应用。作者从基础的泛型约束讲起,逐步构建出能自动推断服务器函数参数类型、并根据参数存在性动态调整函数签名的类型系统,最终实现了完全类型安全的查询选项封装,展示了 TypeScript 类型系统解决复杂实际问题的强大能力。
https://frontendmasters.com/blog/fun-with-typescript-generics/
文章要点:
- 核心目标:通过实现一个完全类型化的
refetchedQueryOptions 辅助函数,展示 TypeScript 泛型与条件类型的高级用法,解决 TanStack Start 中服务器函数与 React Query 选项同步时的类型安全问题- 基础概念:回顾泛型作为"类型参数"的本质,通过
filterTyped<T extends User> 示例说明泛型约束如何保留具体类型;介绍条件类型 T extends Array<infer U> ? U : never 用于类型推断与转换- 问题场景:初始实现使用
any 导致查询数据类型丢失,需要支持两种服务器函数签名(带参数/不带参数),且要求参数类型自动推断、可选参数根据函数签名动态要求- 关键技术:使用函数重载(Function Overloading)定义两个签名版本,结合条件类型
ServerFnHasArgs、ServerFnWithArgs/ServerFnWithoutArgs 检测函数参数存在性,通过 infer 关键字提取参数类型- 实现细节:定义
AnyAsyncFn 基础类型,利用 Parameters<T>[0]["data"] 提取服务器函数参数,最终通过重载签名分别处理带参和不带参的函数调用,确保类型安全与 IDE 提示友好核心总结:
本文通过一个实际的 TanStack Start 场景,深入演示了 TypeScript 泛型、条件类型和函数重载的组合应用。作者从基础的泛型约束讲起,逐步构建出能自动推断服务器函数参数类型、并根据参数存在性动态调整函数签名的类型系统,最终实现了完全类型安全的查询选项封装,展示了 TypeScript 类型系统解决复杂实际问题的强大能力。
#AI playwright客户端(含 Skills)- 给编码 Agent 用的 Playwright CLI:用 Skills 暴露能力,比把整页塞进 MCP 更省 token。
https://github.com/microsoft/playwright-cli
https://github.com/microsoft/playwright-cli
#文章 本文深入解析了GitHub Copilot CLI三秒ASCII开机动画背后的复杂工程实现,揭示了终端动画在缺乏统一标准的环境下,如何通过自定义工具链、语义化颜色映射和无障碍优先设计,解决跨终端兼容性与可访问性挑战。
https://github.blog/engineering/from-pixels-to-characters-the-engineering-behind-github-copilot-clis-animated-ascii-banner/
https://github.blog/engineering/from-pixels-to-characters-the-engineering-behind-github-copilot-clis-animated-ascii-banner/
#文章 2026 年,Favicon 最佳实践的文章。
https://evilmartians.com/chronicles/how-to-favicon-in-2021-six-files-that-fit-most-needs
https://evilmartians.com/chronicles/how-to-favicon-in-2021-six-files-that-fit-most-needs
#文章 有开发者大胆预测,微软迟早会放弃 Windows,转战“Windows 外壳的 Linux”。大胆,确实挺有想象空间。
https://gamesbymason.com/blog/2026/microsoft/
https://gamesbymason.com/blog/2026/microsoft/
#AI 怎么结合 AI 创建应用,有些技术栈可以了解
https://medium.com/effortless-programming/how-to-learn-to-build-apps-in-2025-2293d340886b
https://medium.com/effortless-programming/how-to-learn-to-build-apps-in-2025-2293d340886b
#AI AI正重塑软件工程:初级岗位可能萎缩也可能跨行业爆发,技能要求从写代码转向“懂AI+验证AI”,角色从执行者进化为系统编排者,T型通才胜过单一专才,传统CS教育正被实战导向新路径补充——未来两年,能持续学习、善用AI放大能力、保持批判思维的工程师将主导这场变革。
https://baoyu.io/translations/2026/01/12/next-two-years-software-engineering
https://baoyu.io/translations/2026/01/12/next-two-years-software-engineering
#React
https://blog.logrocket.com/react-has-finally-solved-its-biggest-problem-useeffectevent/
useEffectEvent 让 useEffect 摆脱对状态的依赖,彻底解决过期闭包与无限循环等顽疾。https://blog.logrocket.com/react-has-finally-solved-its-biggest-problem-useeffectevent/