导读:本期聚焦于小伙伴创作的《JavaScript中的Web API到底包含哪些常用功能模块?》,敬请观看详情。把页面上的表单数据自动存到本地,刷新后还能恢复,这种体验靠的是什么?其实是Web Storage这类浏览器接口在起作用。Web API是JavaScript调用浏览器能力的一组标准接口,覆盖DOM操作、网络请求、设备感知与数据存储等。不同于语言本身语法,它们由运行环境提供,不同内核实现略有差异。比如Fetch代替旧版XMLHttpRequest发起请求更简洁,IntersectionObserver能高效判断元素是否进入视口,省去滚动监听的性能损耗。理清这些模块边界,才能在前端开发中准确选型,避免重复造轮子或误用过时方案。

JavaScript之所以能在浏览器里完成丰富交互,核心依赖并不是语言本身,而是一套由浏览器实现的接口集合,也就是常说的Web API。这些接口让脚本可以操作页面结构、发起网络请求、读写本地数据、调用设备能力。理解它们的分类与用法,是写好前端代码的基础。

JavaScript中的Web API到底包含哪些常用功能模块?

DOM与文档操作相关API

文档对象模型(DOM)是最早被广泛使用的Web API之一。它把HTML文档表示为节点树,JavaScript通过document对象来查找、创建、修改和删除节点。比如使用document.querySelector可以按CSS选择器获取元素,比旧式的getElementById更灵活。

除了基础查询,现代DOM API还提供了更方便的方法。例如classList用来增删类名,closest可以从当前节点向上查找匹配祖先。下面代码展示如何给按钮绑定点击事件并切换状态:

// 获取按钮并绑定点击事件
const btn = document.querySelector('#toggle');
btn.addEventListener('click', () => {
  // 切换active类
  btn.classList.toggle('active');
  // 修改文本内容
  btn.textContent = btn.classList.contains('active') ? '已开启' : '已关闭';
});

这类API的优点是直观、兼容性好,几乎所有浏览器都支持。缺点是大量DOM操作会引起重排重绘,影响性能。因此实际项目中常配合虚拟DOM或批量更新策略来减少直接操作。

网络请求类API

早期前端依赖XMLHttpRequest对象发起异步请求,写法繁琐且回调嵌套严重。后来标准引入了Fetch API,基于Promise设计,代码可读性明显提升。Fetch不仅能发GET、POST,还统一通过Response对象处理返回结果。

使用Fetch时需要注意,网络错误和HTTP错误状态码处理方式不同。只有当请求无法完成时才会 reject,而404、500等会在 response 中通过 ok 属性标记。示例代码如下:

// 使用Fetch获取用户数据
fetch('https://ipipp.com/api/user/1')
  .then(res => {
    if (!res.ok) {
      throw new Error('请求失败,状态码:' + res.status);
    }
    return res.json();
  })
  .then(data => {
    console.log('用户名称:', data.name);
  })
  .catch(err => {
    console.error('发生错误:', err.message);
  });

Fetch的劣势在于默认不带Cookie,需要设置credentials选项;另外不支持请求超时原生配置,通常要配合AbortController使用。对于复杂场景,也可以选用axios等封装库,但底层仍基于这些Web API。

客户端存储API

浏览器提供了多种本地存储方案。最基础的是Web Storage,包含localStoragesessionStorage,以键值对形式存字符串,适合轻量数据。IndexedDB则是结构化数据库,能存大量对象,支持索引和事务。

下面的例子演示如何用localStorage记住用户输入,在页面加载时恢复:

// 页面加载时恢复内容
window.addEventListener('DOMContentLoaded', () => {
  const saved = localStorage.getItem('note');
  if (saved) {
    document.querySelector('#note').value = saved;
  }
});

// 输入时保存内容
document.querySelector('#note').addEventListener('input', e => {
  localStorage.setItem('note', e.target.value);
});

Web Storage写起来简单,但容量一般只有5MB左右,且只能存字符串。IndexedDB适合离线应用和缓存大量数据,不过API偏底层,常借助封装库简化操作。选择时需要根据数据规模和结构来决定。

视图与设备感知API

除了数据和网络,浏览器还开放了观察视口与设备的接口。IntersectionObserver可以异步监测元素是否进入可视区域,常用于图片懒加载和埋点曝光,比监听scroll事件更高效。

另一个常用的是ResizeObserver,能监听元素尺寸变化而不依赖全局resize。代码示例如下:

// 观察卡片尺寸变化
const card = document.querySelector('.card');
const observer = new ResizeObserver(entries => {
  for (const entry of entries) {
    console.log('卡片新宽度:', entry.contentRect.width);
  }
});
observer.observe(card);

这类观察者API把频繁计算交给浏览器内部优化,减少了主线程压力。不过在极低版本浏览器中可能需要polyfill。合理运用能显著提升复杂页面的流畅度。

总结与选型建议

Web API并非单一模块,而是分域提供能力:DOM负责结构、Fetch负责通信、Storage负责持久化、Observer负责感知。开发时先确认目标浏览器支持度,再决定用原生还是封装库。

掌握这些接口的分类和边界,既能避免重复实现基础功能,也能在性能瓶颈出现时准确找到替换方案。建议以官方标准文档为参照,结合项目实际需求做技术取舍。

JavaScriptWeb_APIbrowser_API修改时间:2026-08-03 18:57:25

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。