笔记本

记录灵感与思考的地方

Fuse.js是一个轻量级、无依赖的JavaScript模糊搜索库,解决传统精确匹配(如indexOf)无法处理拼写错误、字符易位、不完整输入的问题。基于Bitap算法,支持多字段搜索、权重分配、阈值控制和结果排序,适用于前端列表过滤与静态网站搜索。

Elliot Yang·
1 浏览

前端弹窗设置`body overflow: hidden`导致页面抖动(滚动条宽度释放)。文章提供四方案:1.动态计算滚动条宽补偿`padding-right`(推荐);2.CSS `scrollbar-gutter: stable`;3.移动端fixed定位防穿透;4.OverlayScrollbars库替换原生滚动条。按场景选优。

Elliot Yang·
3 浏览

在Next.js中设置COOP/COEP进入跨源隔离模式后,跨域资源(如图片、脚本、API)加载受阻。为启用SharedArrayBuffer等特性,主要方案:HTML标签加`crossorigin="anonymous"`;第三方服务器设CORP: cross-origin;API配CORS;COEP改`credentialless`;或后端代理。

Elliot Yang·
18 浏览

`insertAdjacentElement()` 是高效原生JS DOM方法,通过位置字符串(如`beforebegin`、`afterbegin`等)精确插入元素节点。解决`appendChild`灵活性差、`insertBefore`语法繁琐、`innerHTML`性能差问题,直接操作节点,避免事件丢失。衍生:`insertAdjacentHTML`、`insertAdjacentText`。

Elliot Yang·
17 浏览

`requestVideoFrameCallback` (rVFC) 是 Web API,用于视频新帧渲染前精确触发 JS 回调。解决 `requestAnimationFrame` 与视频帧率不同步导致重复帧浪费性能的问题,实现完美帧同步。支持视频特效、AI 分析、字幕同步,提供 metadata 如 `mediaTime`、`presentedFrames`。

Elliot Yang·
18 浏览

React Fiber(React 16+核心算法)解决 React 15 栈协调器同步递归渲染导致主线程阻塞、卡顿问题。主要方案:Fiber 节点链表树支持可中断工作单元;时间切片拆分任务;Render 阶段(内存 Diff,可中断)+ Commit 阶段(DOM 更新,不可中断);双缓存树高效切换。(148字符)

Elliot Yang·
19 浏览

YouTube采用DASH技术实现音画分离传输,分别请求音频/视频轨道。解决痛点:自适应码率(网络差时降视频质保音频)、节省存储、多语言切换。主要方案:下载manifest文件,分段获取轨道,经MSE本地合成播放。

Elliot Yang·
24 浏览

JavaScript单线程事件循环下,利用Promise/async/await实现并发控制。主要方案:1. Scheduler类(推荐),基于队列+计数器,add任务自动调度max并发;2. asyncPool函数,Set跟踪执行任务+Promise.race限流批处理。核心:闭包劫持、递归触发、错误处理防死锁。

Elliot Yang·
32 浏览

Chrome浏览器实验功能“并行下载”(chrome://flags/#enable-parallel-downloading)针对单连接下载限速问题,将大文件分割成块,通过多线程多连接并行下载后自动合并,提升速度。启用:设为Enabled并重启。附JS Range请求模拟实现。(128字符)

Elliot Yang·
25 浏览