首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
高性能Javascript
ErpanOmer
创建于2024-12-31
订阅专栏
学一学优雅的javascirpt
等 171 人订阅
共67篇文章
创建于2024-12-31
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
React Concurrent Mode 到底解决了什么问题?
01. 页面卡顿的问题到底出在哪? 我们先抛开 Concurrent Mode,看一个大家都见过的 React 性能问题: 你输入一个字母,页面就卡顿 300ms,CPU 一直飙高。这并不是 Reac
为什么 React 页面依然卡顿?从主线程调度看本质
在 React 的世界里,我们享受着组件化开发、声明式 UI、Hooks 的优雅设计。但当项目日益复杂,用户量暴增时,很多开发者会发现:明明用了 React 18,性能优化也做了,但页面依旧卡顿,交互
现代 React 应用的数据分发模型:全局 Store vs Context vs Server Component,谁才是你的最优解?
从 Redux 到 Zustand,从 React Context 到 React Server Component,前端开发者在过去五年中见证了一场「数据分发机制」的革命。如果说过去我们用 Redu
大型 React 应用的性能瓶颈:重构 useEffect、缓存策略、调度优先级
前言:90% 的性能问题,都不是代码写得不优雅,而是机制没理解透 很多人写 React 写了几年,一看项目性能拉垮就开骂“React 慢”、“虚拟 DOM 垃圾”。但其实问题大多数出在下面几个地方:
Web Worker + OffscreenCanvas,实现真正多线程渲染体验
前端开发常说“JavaScript 是单线程的”,但如果你正在做动画、数据可视化、图像处理、游戏开发、或任何基于 Canvas 的复杂渲染,你一定体会过——主线程的“卡顿地狱” 。 这种时候,Web
如何优雅打断 JS 任务?AbortController 正确使用方式
前端开发者常常需要处理“取消任务”的场景:接口请求发出后用户快速切换页面、组件卸载、搜索防抖中断上一次请求等等。这种需求本质上就是**“任务中断”**。 但在过去,JavaScript 没有原生取消异
滚动加载还在绑 scroll?你可能忽略了浏览器内置的“观察者”
在现代前端开发中,页面中某些元素是否出现在视口内,决定了懒加载、广告曝光、内容触发等一系列行为。最常见的做法当然是监听 scroll 事件,然后手动计算 getBoundingClientRect()
为什么你的输入总是卡顿?从 input 到响应的浏览器事件链 + requestIdleCallback 提速实践
在构建交互丰富的 Web 应用时,input 输入框的实时响应性能看似简单,实则暗藏玄机。你是否遇到过这种场景: 表单字段绑定了输入联想或校验逻辑; 代码看起来很基础,却总是感到输入“卡了一下”; d
为什么 async/await 并不是真正的同步写法?微任务队列的欺骗性同步
我们来深入剖析这个极具迷惑性的现象——async/await 到底是不是“同步写法”? 很多人会说: 但真相是, “像同步” ≠ 同步。async/await 只是一场语法幻觉,它在执行机制上仍然根植
为什么 `setTimeout(fn, 0)` 并不会立即执行?一次事件循环背后的真相
很多 JavaScript 开发者第一次接触 setTimeout(fn, 0) 时,都会产生这样的疑问: 更让人困惑的是,把它放在某些异步场景中,它执行得“似乎又慢了一拍”。如果你曾尝试用 setT
用纯 CSS 实现丝滑的动态宽度动画,你真的掌握了吗?
在日常开发中,我们经常需要让元素的宽度根据内容变化而产生动画效果,例如按钮文字变长、提示框内容更新等。你可能第一反应是加个 transition: width 0.3s,看起来的确能动。但细节打脸的时
深入解析 View Transitions API 的 DOM 快照差分算法
现代 Web UI 越来越强调流畅、连贯的用户体验。然而传统的 DOM 操作导致内容切换生硬,缺乏过渡动画。为此,Chrome 团队提出了一项划时代的标准草案 —— View Transitions
浏览器预加载扫描器的词法分析器实现
这篇文章深入讲解浏览器内部在预加载(Preload Scanner)阶段是如何通过一个轻量级的词法分析器(Lexer) ,以超快速度提取 <link>、<script>、<img> 等关键资源标签,从
🚀如何把 Wasm 模块部署到 CDN + 动态懒加载?性能和体验双赢的实战指南
在构建现代 Web 应用时,WebAssembly(Wasm)已成为性能关键路径上的“加速器”。但与此同时,Wasm 模块往往体积不小,如果直接随页面加载,很容易拖慢首屏速度,破坏用户体验。 于是一个
🚀JavaScript 如何实现 Wasm 多线程图像处理?一场性能与线程的较量
在浏览器中做高性能图像处理,很多开发者的第一反应是:“这不是前端能干的事。”然而,随着 WebAssembly(Wasm)+ 多线程的支持逐步成熟,我们终于有了打破传统 JS 单线程天花板的钥匙。 本
Wasm 模块与前端框架的资源共享机制:架构整合与性能协同
WebAssembly(Wasm)带来了前端性能的一次跃迁,允许我们在浏览器中运行接近原生速度的 C/C++/Rust 代码。但如果你是一位 Vue、React、或者 Vite 用户,真正将 Wasm
深入 WebAssembly:线性内存的页式管理机制与实战解析
在学习 WebAssembly(简称 Wasm)的过程中,有一个绕不开的核心概念就是 线性内存(Linear Memory) 。它是 Wasm 与 JavaScript 交互数据的桥梁,也是模块间通信
JavaScript WeakRef与FinalizationRegistry的GC触发条件
WeakRef 与 FinalizationRegistry 是 JavaScript 中用于与垃圾回收器(GC)协同工作的两个高级 API,它们不干预 GC 行为,但允许我们在 GC 发生之后获取“
💻ArrayBuffer 与 SharedArrayBuffer 的内存隔离机制:共享,并不意味着混乱
引言 如果你曾在浏览器中使用 Web Worker 或 Node.js 的 Worker Thread 编写多线程代码,那么你一定遇到过这两个概念: ArrayBuffer SharedArrayBu
CSS Houdini Paint API的位图合成原理
CSS Houdini Paint API 的位图合成原理,乍看之下像是前端领域的黑科技,其实背后是一套高度工程化的绘图接口与浏览器渲染系统的深度融合。它不是另起炉灶,而是嵌入浏览器的图形渲染流水线之
下一页