MDN-Web APIs
参考资料
文章目录
- 简介
- DOM API
- XMLHttpRequest
- Web Storage API
- Websockets API
简介
Web APIs(Application Programming Interfaces)是用于与浏览器环境中的 Web 功能进行交互的一组接口和方法集合。通过 Web APIs,开发人员可以访问浏览器提供的功能,如操作 DOM、发送网络请求、处理用户输入等。这些 APIs 是用来构建交互性、动态性和丰富性的 Web 应用程序的重要工具。
以下是一些常见的 Web APIs:
- DOM API:Document Object Model(DOM) API 允许开发人员操作 HTML 和 XML
文档的结构和内容。通过 DOM,可以增删修改文档中的元素、属性和文本内容。 - Fetch API:用于发送和接收网络请求的 Fetch API。它提供了一种现代化的方式来执行网络请求,取代了传统的XMLHttpRequest。
- XMLHttpRequest:虽然被 Fetch API 取代,但仍然可以用来发送异步网络请求。
- Web Storage API:用于在客户端浏览器中存储数据,包括 localStorage(持久性存储)和
sessionStorage(会话级存储)。 - IndexedDB API:提供了一个客户端数据库,用于在浏览器中存储大量结构化数据。
- Geolocation API:用于获取用户设备的地理位置信息。
- Canvas API:允许通过 JavaScript 绘制图形和图像,创建各种图形效果和动画。
- Web Audio API:用于操作和控制音频,实现音频处理、合成和分析等功能。
- Web Speech API:提供了语音识别和合成功能,使得浏览器可以进行语音交互。
- Web Notifications API:用于在用户的操作系统中显示通知,用于向用户显示信息和提醒。
- Web Workers API:允许在后台线程中执行 JavaScript 代码,提高了多线程处理的能力,从而不影响主 UI
线程的响应性。 - Websockets API:提供了在浏览器和服务器之间建立双向通信的方式,用于实时数据传输。
这些只是众多 Web APIs 中的一部分。使用这些 APIs,开发人员可以创建出各种各样功能丰富的 Web 应用程序,提供更好的用户体验和交互性。不同的 Web APIs 针对不同的场景和需求,开发人员可以根据自己的项目选择适合的 API 进行开发。
DOM API
DOM API(Document Object Model API)是用于操作网页文档结构和内容的一组接口和方法。通过 DOM API,开发人员可以使用 JavaScript 动态地修改、添加、删除网页元素和内容,实现交互性和动态性的网页效果。
DOM 将整个网页文档表示为一个树状结构,每个节点代表文档中的一个元素、属性、文本等。DOM API 允许开发人员访问和操作这些节点,从而实现各种操作。
以下是一些常见的 DOM API 操作示例:
- 选择元素
const element = document.getElementById("myElement"); // 通过 ID 获取元素
const elements = document.querySelectorAll(".myClass"); // 通过类名获取元素集合
const element = document.querySelector("p"); // 通过标签名获取第一个元素
- 修改内容和属性
element.textContent = "New text content"; // 修改文本内容
element.innerHTML = "<strong>Strong text</strong>"; // 修改 HTML 内容
element.setAttribute("data-id", 123); // 设置属性
- 创建和插入元素
const newElement = document.createElement("div"); // 创建新元素
element.appendChild(newElement); // 将新元素插入到父元素末尾
element.insertBefore(newElement, referenceElement); // 在指定元素之前插入新元素
- 删除元素
element.parentNode.removeChild(element); // 从父元素中移除
- 事件处理
element.addEventListener("click", function() {// 处理点击事件
});
- 样式操作
element.style.color = "red"; // 修改元素样式
element.classList.add("highlight"); // 添加 CSS 类名
XMLHttpRequest
XMLHttpRequest(XHR)是一种用于发送 HTTP 请求和接收服务器响应的 Web API。它是早期 Web 开发中主要用于进行异步通信的工具,虽然现在已被 Fetch API 替代,但了解它仍然是有益的。
使用 XMLHttpRequest,您可以在不刷新页面的情况下从服务器获取数据并更新网页内容。以下是一个简单的使用 XMLHttpRequest 发送 GET 请求的示例:
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://api.example.com/data", true); // 创建一个 GET 请求
xhr.onreadystatechange = function() {if (xhr.readyState === XMLHttpRequest.DONE) { // 请求完成if (xhr.status === 200) { // 响应成功var responseData = JSON.parse(xhr.responseText);console.log(responseData);} else {console.error("Request failed with status:", xhr.status);}}
};
xhr.send(); // 发送请求
在上面的示例中,我们创建了一个 XMLHttpRequest 实例,指定了请求方法和 URL,然后设置了 onreadystatechange 事件处理程序来监听请求状态的变化。一旦请求状态变为 DONE,我们检查响应状态码以确定请求是否成功,并处理响应数据。
XMLHttpRequest 可以用于发送各种类型的 HTTP 请求,包括 GET、POST、PUT、DELETE 等,并且可以设置请求头、处理响应数据等。然而,与 Fetch API 相比,XMLHttpRequest 在使用上更繁琐,需要手动处理状态和错误,而 Fetch API 基于 Promise 更加简洁和易于使用。如果您在现代 Web 开发中进行网络通信,建议使用 Fetch API。
Web Storage API
Web Storage API 是一组用于在客户端浏览器中存储数据的 Web API,它提供了一种在浏览器中持久性地存储键值对数据的方式,以便在不同页面和会话之间共享数据。
Web Storage API 分为两种存储方式:
- localStorage:提供了持久性的本地存储,数据会一直保存在客户端,即使浏览器关闭也不会丢失。适用于需要在多个页面之间共享数据的场景。
- sessionStorage:提供了会话级别的本地存储,数据仅在当前会话中有效,当浏览器窗口关闭时数据将被清除。适用于在同一页面的不同部分之间共享数据。
以下是 Web Storage API 的基本用法:
// 使用localStorage存储数据
localStorage.setItem("username", "john");
const storedUsername = localStorage.getItem("username");
console.log(storedUsername); // 输出:john// 使用sessionStorage存储数据
sessionStorage.setItem("token", "abc123");
const storedToken = sessionStorage.getItem("token");
console.log(storedToken); // 输出:abc123// 移除数据
localStorage.removeItem("username");
sessionStorage.clear(); // 清空所有sessionStorage数据
需要注意的是,Web Storage API 存储的数据是以字符串形式存储的,如果需要存储对象或其他数据类型,需要进行适当的序列化和反序列化操作。
虽然 Web Storage API 提供了方便的方式来存储数据,但也要注意存储容量限制(通常为几MB)以及可能的安全性问题。敏感信息不应存储在本地存储中,以免被恶意访问。
在现代 Web 开发中,随着更多高级的数据管理工具的出现,如== IndexedDB 和客户端数据库==,您可能会根据具体需求选择更适合的数据存储方式。
Websockets API
WebSocket API 是一种在 Web 应用程序中实现双向通信的技术,允许浏览器和服务器之间建立持久的、全双工的通信连接。与传统的 HTTP 请求-响应模型不同,WebSocket 允许实时交换数据,适用于实时聊天、实时数据更新和多人协作等应用场景。
WebSocket API 提供了一种在浏览器和服务器之间传递数据的方法,数据可以是文本或二进制格式。与 HTTP 请求不同,WebSocket 连接在初始握手后保持打开状态,使得服务器和客户端可以随时向对方发送数据。
以下是一个简单的使用 WebSocket API 的示例:
// 创建 WebSocket 连接
const socket = new WebSocket("wss://example.com/socket");// 连接成功时触发
socket.onopen = function(event) {console.log("WebSocket connection opened.");socket.send("Hello, server!");
};// 接收到消息时触发
socket.onmessage = function(event) {console.log("Received message from server:", event.data);
};// 连接关闭时触发
socket.onclose = function(event) {if (event.wasClean) {console.log("WebSocket connection closed cleanly.");} else {console.error("WebSocket connection closed with error:", event.code, event.reason);}
};// 发生错误时触发
socket.onerror = function(event) {console.error("WebSocket error:", event);
};
在上面的示例中,我们首先创建了一个 WebSocket 连接,然后监听不同的事件来处理连接的状态和数据交换。当连接建立后,我们通过 send 方法向服务器发送数据,通过 onmessage 处理接收到的数据。
WebSocket API 适用于需要实时通信的应用场景,它可以在不同浏览器和服务器之间实现实时的双向数据传输。与传统的轮询或长轮询相比,WebSocket 提供了更高效、实时和低延迟的通信方式。然而,您需要注意处理连接中断、错误和安全性等问题。
相关文章:
MDN-Web APIs
参考资料 文章目录 简介DOM APIXMLHttpRequestWeb Storage APIWebsockets API 简介 Web APIs(Application Programming Interfaces)是用于与浏览器环境中的 Web 功能进行交互的一组接口和方法集合。通过 Web APIs,开发人员可以访问浏览器提…...
2023国赛数学建模C题思路分析
文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 全国大学生数学建模…...
暑假集训笔记
刷题刷的好累啊...不想刷题了...然后就来写题解了... 昨天晚上打了场div2..2000来名,加了155分....现在rating1281...我是菜鸡..暑假之前就打到了1200分以上了,结果暑假一掉再掉,直接掉到1100了...然后我就一直压力很大....... 昨天在机房打…...
【枚举+推式子】牛客小白月赛 63 E
登录—专业IT笔试面试备考平台_牛客网 题意: 思路: 首先是个计数问题,考虑组合数学 组合数学就是在考虑枚举所有包含1和n的区间 这个典中典就是枚举1和n的位置然后算贡献 双指针超时,考虑推式子: Code:…...
Android多屏幕支持-Android12
Android多屏幕支持-Android12 1、概览及相关文章2、屏幕窗口配置2.1 配置xml文件2.2 DisplayInfo#uniqueId 屏幕标识2.3 adb查看信息 3、配置文件解析3.1 xml字段读取3.2 简要时序图 4、每屏幕焦点 android12-release 1、概览及相关文章 AOSP > 文档 > 心主题 > 多屏…...
python环境下载安装教程,python运行环境怎么下载
本篇文章给大家谈谈python安装步骤以及环境变量配置,以及下载python需要设置环境变量吗,希望对各位有所帮助,不要忘了收藏本站喔。 1.https://www.python.org/downloads/windows/ 下载适合自己电脑的python安装包 2.下载后安装即可 3.配置环…...
【0.2】lubancat鲁班猫4远程ubuntu22.04.2 无需任何安装
环境 lubancat4鲁班猫4 (4G0)不带emmc 系统镜像ubuntu-22.04.2-desktop-arm64-lubancat-4.img 网络环境:有线网络与本win10电脑同意环境 操作步骤ubuntu正常开机登陆用户,连接好网络进入设置>网络查看设备当前局域网IP 如192.168.199.159进入设置>共享>远程…...
Flutter 状态管理 Provider
状态管理必要性 Flutter基于声明式构建UI,原生则是命令式,状态管理是用于解决声明式开发带来的问题。 例:命令式的原生,数据更新需要拿到对应控件并更改其显示值;而声明式则需要更改数据值并通过setstate更新状态&am…...
【设计模式】观察者模式
什么是观察者模式? 观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态…...
ORCA优化器浅析——CDXLOperator Base class for operators in a DXL tree
如上图所示,CDXLOperator作为Base class for operators in a DXL tree,其子类CDXLLogical、CDXLScalar、CDXLPhysical作为逻辑节点、物理节点和Scalar节点的DXL表示类,因此其包含了这些类的共同部分特性,比如获取其DXL节点表示的函…...
go入门实践四-go实现一个简单的tcp-socks5代理服务
文章目录 前言socks协议简介go实现一个简单的socks5代理运行与压测抓包验证 前言 SOCKS是一种网络传输协议,主要用于客户端与外网服务器之间通讯的中间传递。协议在应用层和传输层之间。 本文使用先了解socks协议。然后实现一个socks5的tcp代理服务端。最后&#…...
div 中元素居中的N种常用方法
本文主要记录几种常用的div盒子水平垂直都居中的方法。本文主要参考了该篇博文并实践加以记录说明以加深理解记忆 css之div盒子居中常用方法大全 本文例子使用的 html body结构下的div 盒子模型如下: <body><div class"container"><div c…...
Java获取指定文件夹下目录下所有视频并复制到另一个地方
import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.StandardCopyOption;public class VideoCopier {public static void main(String[] args) {// 指定源文件夹路径和目标文件夹路径String sourceFolderPath "path/to…...
windows server 2016 搭建使用 svn 服务器教程
参考教程: https://zhuanlan.zhihu.com/p/428552058 https://blog.csdn.net/weixin_33897722/article/details/85602029 配置环境 windows server 2016 远程服务器公网 ip 安装 SVN 服务端 下载 svn 服务端安装包:https://www.visualsvn.com/download…...
【Python】如何判断时间序列数据是否为平稳时间序列或非平稳时间序列?
判断时间序列数据是否为平稳时间序列或非平稳时间序列,通常可以通过以下方法: (1)观察时间序列数据的均值和方差是否随时间变化而发生明显的改变。若均值和方差变化明显,则该时间序列数据可能为非平稳时间序列&#x…...
Labview控制APx(Audio Precision)进行测试测量(六)
用 LabVIEW 驱动 VIs生成任意波形 在 APx500 应用程序中,默认波形类型为正弦。这是指 APx 内置的正弦发生器,根据信号路径设置,许多测量还允许其他内置波形,如方波,分裂正弦波或分裂相位,以及使用导入的。w…...
【Linux】网络协议总结
目录 网络协议总结 应用层 传输层 网络层 数据链路层 网络协议总结 应用层 应用层的作用:负责应用程序间沟通,完成一系列业务处理所需服务。能够根据自己的需求,设计对应的应用层协议。了解HTTP协议。理解DNS的原理和工作流程。 传…...
如何轻松注册企业邮箱?快速掌握超简单的注册技巧!
随着互联网的发展,越来越多的企业开始使用电子邮件作为通信工具。企业邮箱不仅可以提高企业的工作效率,还可以使企业通信更加便捷、保密性更高。那么,企业邮箱怎么注册申请呢?下面我们来详细介绍一下。 第一步:选择邮箱…...
【行为型设计模式】C#设计模式之观察者模式
题目:假设你正在开发一个简单的新闻发布系统,该系统允许用户订阅不同的新闻频道,并在有新闻发布时向订阅者发送通知。使用观察者模式设计和实现该系统。观察者模式的相关概念和定义: 观察者模式是一种行为设计模式,它定…...
《Java面向对象程序设计》学习笔记——第 8 章 设计模式
专栏:《Java面向对象程序设计》学习笔记 第 8 章 设计模式 一个好的设计系统往往是易维护、易扩展、易复用的。 8.1 设计模式简介 8.1.1 什么是设计模式 一个设计模式 (pattern) 是针对某一类问题的最佳解决方案,而且己经被成功应用于许多系统的设…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
