这20 个零依赖浏览器原生能力 90% 前端都不知道

AI 概述
1. ResizeObserver2. IntersectionObserver3. Page Visibility4. Web Share5. Wake Lock6. Broadcast Channel7. PerformanceObserver8. requestIdleCallback9. scheduler.postTask10. AbortController11. ReadableStream12. WritableStream13. Background Fetch14. File System Access15. Clipboard16....
目录
文章目录隐藏
  1. 1. ResizeObserver
  2. 2. IntersectionObserver
  3. 3. Page Visibility
  4. 4. Web Share
  5. 5. Wake Lock
  6. 6. Broadcast Channel
  7. 7. PerformanceObserver
  8. 8. requestIdleCallback
  9. 9. scheduler.postTask
  10. 10. AbortController
  11. 11. ReadableStream
  12. 12. WritableStream
  13. 13. Background Fetch
  14. 14. File System Access
  15. 15. Clipboard
  16. 16. URLSearchParams
  17. 17. structuredClone
  18. 18. Intl.NumberFormat
  19. 19. EyeDropper
  20. 20. WebCodecs

这 20 个零依赖浏览器原生能力 90% 前端都不知道

今天分享 20 个 2025 年依旧「少人知道、却能立竿见影」的原生 API。收藏让你少写 100 行代码!

1. ResizeObserver

精准监听任意 DOM 宽高变化,图表自适应、虚拟滚动必备。

new ResizeObserver(([e]) => chart.resize(e.contentRect.width))
  .observe(chartDom);

2. IntersectionObserver

检测元素进出视口,一次搞定懒加载 + 曝光埋点,性能零损耗。

new IntersectionObserver(entrieList =>
  entrieList.forEach(e => e.isIntersecting && loadImg(e.target))
).observe(img);

3. Page Visibility

侦测标签页隐藏,自动暂停视频、停止轮询,移动端省电神器。

document.addEventListener('visibilitychange', () =>
  document.hidden ? video.pause() : video.play()
);

4. Web Share

一键唤起系统分享面板,直达微信、微博、Telegram,需 HTTPS

navigator.share?.({ title: '好文', url: location.href });

5. Wake Lock

锁定屏幕常亮,直播、PPT、阅读器不再自动息屏。

await navigator.wakeLock.request('screen');

6. Broadcast Channel

同域标签实时广播消息,登录态秒同步,告别 localStorage 轮询。

const bc = new BroadcastChannel('auth');
bc.onmessage = () => location.reload();

7. PerformanceObserver

无侵入采集 FCPLCPFID,一行代码完成前端性能监控。

new PerformanceObserver(list =>
  list.getEntries().forEach(sendMetric)
).observe({ type: 'largest-contentful-paint', buffered: true });

8. requestIdleCallback

埋点日志丢进浏览器空闲时间,首帧零阻塞。
<pre”>requestIdleCallback(() => sendBeacon(‘/log’, data));

9. scheduler.postTask

原生优先级任务队列,低优任务后台跑,主线程丝滑。

scheduler.postTask(() => sendBeacon('/log', data), { priority: 'background' });

10. AbortController

随时取消 fetch,路由切换不再旧请求竞态,兼容 100%

const ac = new AbortController();
fetch(url, { signal: ac.signal });
ac.abort();

11. ReadableStream

分段读取响应流,边下载边渲染,大文件内存零爆涨。

const reader = response.body.getReader();
while (true) {
  const { done, value } = await reader.read();
  if (done) break;
  appendChunk(value);
}

12. WritableStream

逐块写入磁盘或网络,实时保存草稿、上传大文件更稳。

const writer = stream.writable.getWriter();
await writer.write(chunk);

13. Background Fetch

PWA 后台静默下载,断网恢复继续,课程视频提前缓存。

await registration.backgroundFetch.fetch('video', ['/course.mp4']);

14. File System Access

读写本地真实文件,需用户授权,Web IDE 即开即用。

const [fh] = await showOpenFilePicker();
editor.value = await (await fh.getFile()).text();

15. Clipboard

异步读写剪贴板,无需第三方库,HTTPS 环境安全复制。

await navigator.clipboard.writeText('邀请码 9527');

16. URLSearchParams

解析、修改、构造 URL 查询串,告别手写正则。

const p = new URLSearchParams(location.search);
p.set('page', 2);
history.replaceState({}, '', `?${p}`);

17. structuredClone

深拷贝对象、数组、Map、Date,循环引用也能完美复制。

const copy = structuredClone(state);

18. Intl.NumberFormat

千分位货币百分比一次格式化,国际化零配置。

new Intl.NumberFormat('zh-CN', { style: 'currency', currency: 'CNY' })
  .format(1234567); // ¥1,234,567.00

19. EyeDropper

浏览器级吸管工具,像素级取色,设计系统直接调用。

const { sRGBHex } = await new EyeDropper().open();

20. WebCodecs

原生硬解码音视频,4K 60 帧流畅播放,CPU 占用直降。

const decoder = new VideoDecoder({
  output: frame => ctx.drawImage(frame, 0, 0),
  error: console.error
});
decoder.configure({ codec: 'vp09.00.10.08' });

以上关于这20 个零依赖浏览器原生能力 90% 前端都不知道的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

1

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 这20 个零依赖浏览器原生能力 90% 前端都不知道

发表回复