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 浏览
`insertAdjacentElement()` 是高效原生JS DOM方法,通过位置字符串(如`beforebegin`、`afterbegin`等)精确插入元素节点。解决`appendChild`灵活性差、`insertBefore`语法繁琐、`innerHTML`性能差问题,直接操作节点,避免事件丢失。衍生:`insertAdjacentHTML`、`insertAdjacentText`。
Elliot Yang·
17 浏览
JavaScript单线程事件循环下,利用Promise/async/await实现并发控制。主要方案:1. Scheduler类(推荐),基于队列+计数器,add任务自动调度max并发;2. asyncPool函数,Set跟踪执行任务+Promise.race限流批处理。核心:闭包劫持、递归触发、错误处理防死锁。
Elliot Yang·
32 浏览