API入门:简化开发的神奇接口
应用程序接口, 也就是 API, 是基于编程语言构建而成的结构, 这使得开发者能够更轻易地去创建复杂的功能, 它们将复杂的代码进行了抽象处理, 并且提供了一些简单的可以直接使用的接口规则。来看一个现实当中的例子, 想想你所拥有的房子, 或者是公寓, 又或者是其他类型的住宅的供电方式, 要是你打算在自己的房子里头使用电力, 那么只要把电器对应的插头插到插座当中就能够达成, 而并非是直接将电器和电线进行, 因为这样做会显得极为低效, 并且对于那些并非是电工的人员而言, 则是一项具有难度且存在危险的行动。源自过载的插头接口的图片, 是由The Clear提供的, 它们来自于上。同样, 举例来说, 要是通过编程去显示一些 3D 图形, 那么运用以更高级语言编写而成的 API像是某些特定的 API, 相较于直接去编写那种直接控制计算机 CPU 或者其他图形功能的低级代码像 C 语言或者 C语法编写的代码来执行相关操作, 会容易很多。备注详细说明请见 API 术语条目。有很多可被使用的 API 存在于客户端之中, 这些 API 自身并非归属于语言范畴, 而是构建于核心语言之上, 其存在的目的是为使用代码赋予额外的超强能力, 并且它们一般被划分成两类。就如同上面所讲述的那样, 我们针对什么是客户端API展开了讨论, 还探讨了它们跟语言之间的关系, 让我们进行如下行为, 把它回顾一下, 以便使得它变得更为清晰, 并提及一下其它工具所适用范畴所在之处所适用在的地位:有着大量可用 API 的主流浏览器里, 你于代码当中能够做诸多事情, 参见 MDN API 索引页。格外特别地, 存在着你将会去使用的最为常见的浏览器应用程序编程接口类别, 并且这也是我们将会在本模块之中更为详细地予以介绍的, 具体有:第三方API各种各样、非常多, 下面说的是一些相对比较流行、你说不定啥时候就会用到的第三方API。有着差异的API, 其工作方式存在些许不同, 可是一般来讲, 它们具备共同的特性以及相近的主题。API 在你的代码里交互时要用一个或者多个对象, 这些对象是 API 使用的数据数据包含在对象属性里的容器, 也是由 API 提供的功能于对象方法中被包含的容器。备注如果你不熟悉对象如何工作则应在继续之前学习 模块。我们返回到Web音频API的示例, 这是个颇为复杂的API, 它由好些对象构成, 其中最为关键的涵盖了:那这些对象究竟是以怎样的方式进行交互的呢, 要是你去查看我们的, 最先会看到像下面这样的HTML代码。Play首先呢, 我们放入一个元素, 这个元素的作用是在页面里头嵌入一首MP3文件。我们并未放入任何默认的浏览器控件。紧接着, 我们放入一个, 它的用途是播放以及停止音乐, 另外还放入一个类型是range的元素, 该元素的作用是在播放期间调整音轨的音量。接下来我们来看一下这个示例的 代码。我们首先创建一个 实例用于在其中操作我们的音轨const AudioContext window.AudioContext || window.webkitAudioContext; const audioCtx new AudioContext();接下来, 我们去创建常量, 以此用来存储针对 、 和 元素的引用, 并且使用 .urce() 方法去创建一个 , 该 表示我们的音频源, 也就是那个将会进行播放的 元素:const audioElement document.querySelector(audio); const playBtn document.querySelector(button); const volumeSlider document.querySelector(.volume); const audioSource audioCtx.createMediaElementSource(audioElement);下面, 我们补添一些事件处理装置, 要来在按钮遭受按压之际于播放与暂停之间进行切换, 并且在歌曲播放完毕之时把显示再度设定回到起始之处:// 播放/暂停音频 playBtn.addEventListener(click, () { // 确认 context 在 suspended 状态自动播放策略 if (audioCtx.state suspended) { audioCtx.resume(); } // 如果音轨处于停止则开始播放 if (playBtn.getAttribute(class) paused) { audioElement.play(); playBtn.setAttribute(class, playing); playBtn.textContent Pause; // 如果音轨正在播放则停止播放 } else if (playBtn.getAttribute(class) playing) { audioElement.pause(); playBtn.setAttribute(class, paused); playBtn.textContent Play; } }); // 如果音轨结束了 audioElement.addEventListener(ended, () { playBtn.setAttribute(class, paused); playBtn.textContent Play; });声明: 存在一部分人或许会留意到, 能够将音轨进行播放操作的 play() 方法, 以及可以使音轨实现暂停情形的 pause() 方法, 二者并不囊括于 Web 音频 API这个类别当中它们归属于另一种 API, 这是一种与 Web 音频 API 有所不同然而却紧密关联的 API。紧接着, 我们运用.( )方法去构建一个对象, 该对象能够用来调控经由它的音频的音量, 并且还要创建另外一个事件处理器, 在滑块值发生改变之际去更改音频图的增益音量值。// 音量 const gainNode audioCtx.createGain(); volumeSlider.addEventListener(input, () { gainNode.gain.value volumeSlider.value; });接下来所要做的事情是, 把音频图里不一样的节点连接在一起, 而这一行为是借助于每个节点类型上能够使用的.( )方法达成的:audioSource.connect(gainNode).connect(audioCtx.destination);音频从源头起始, 接着连接至增益节点, 以此来调整音频音量。增益节点随后连接到目标节点, 使得声音能够在你电脑上播放。这里的属性代表你电脑硬件上可用的默认设备, 就像你的扬声器。当运用 API 的时候, 你得保证清楚 API 的入口点处在何方。于 Web 音频 API 范畴内, 这着实挺简单——那便是 对象, 开展任何音频操作都得借助它来进行。对于文档对象模型DOMAPI而言, 存在着一个不算复杂的入口点 , 其具备的特性常常所处位置是在 对象那里 , 或者是在你期望能够以某一种特定样式去产生影响的HTML元素实例之上 , 就好比是:const em document.createElement(em); // 创建一个新的 em 元素 const para document.querySelector(p); // 获取现存的一个 p 元素的引用 em.textContent Hello there!; // 为 em 元素设置文本内容 para.appendChild(em); // 将 em 嵌入到 para 中API依靠获取用于操纵事物的上下文对象, 虽说在此情形下, 其并非音频上下文而是图形上下文。它的上下文对象是借助获取要绘制的元素的引用, 接着调用其.( )方法创建而成的:const canvas document.querySelector(canvas); const ctx canvas.getContext(2d);之后, 经由调用内容对象xt2D 的实例的属性以及方法, 要实施我们期望针对画布开展的任何操作, 比如:Ball.prototype.draw function () { ctx.beginPath(); ctx.fillStyle this.color; ctx.arc(this.x, this.y, this.size, 0, 2 * Math.PI); ctx.fill(); };备注你可以在我们的中看到此代码也可以。此前, 我们于课程里探讨过事件, 在我们那篇事件介绍的文章中, 详细阐释了客户端Web事件究竟是什么, 以及它们于代码里的运用方式。要是你对客户端Web API事件的运作模式尚还陌生, 那么在继续下去之前, 应当去研读这篇文章。有些Web API不含事件, 而另一些则含有某些事件。运行函数的处理器属性, 是在事件触发时, 于参考资料里单独的“事件处理器”部分通常会列出的。我们已然在上述的, Web 音频 API 示例里头, 目睹了不少处于在用状态的, 事件处理器呢:// 播放/暂停音频 playBtn.addEventListener(click, () { // 确认 context 在 suspended 状态自动播放策略 if (audioCtx.state suspended) { audioCtx.resume(); } // 如果音轨处于停止则开始播放 if (playBtn.getAttribute(class) paused) { audioElement.play(); playBtn.setAttribute(class, playing); playBtn.textContent Pause; // 如果音轨正在播放则停止播放 } else if (playBtn.getAttribute(class) playing) { audioElement.pause(); playBtn.setAttribute(class, paused); playBtn.textContent Play; } }); // 如果音轨结束了 audioElement.addEventListener(ended, () { playBtn.setAttribute(class, paused); playBtn.textContent Play; });Web API特性, 受到和其他Web技术, 比如同源策略, 相同的安全考虑, 然而, 它们有时候会有额外的安全机制, 比如说, 一些更现代的Web API, 将只能在通过HTTPS提供的页面上工作, 因为它们正在传输潜在的敏感数据, 像和推送。此外, 于代码里调用某些Web API之际, 会向用户发出启用权限的请求。比如说, 该API借助弹出对话框来请求权限:一种名为的安全机制对Web音频和API加以限制, 这基本上表明在页面加载之际不能自动播放音频, 必须得让用户借助按钮等控件开启音频播放才行。之所以这样, 是由于自动播放音频常常极其烦人, 实在不应使用户去忍受它。备注: 依据浏览器的严格程度,这样的安全机制甚至于有可能会阻拦示例于本地开展运行,换句话讲,倘若你于浏览器内加载本地的示例文件,而并非从Web服务器上去运行它的话。在撰写这篇文章的时候,我们的Web音频API示例于某些浏览器上没办法在本地运行,必须上传至相应位置才可以运行。至此, 你应当对于什么是API、API怎样开展工作以及于代码里怎样去使用API有了一定程度的了解, 你或许已经按捺不住兴致勃勃地想要运用特定的API去做一些饶有趣味的事情了, 那就着手开始吧, 如果是这样的话接下来, 我们会去学习运用文档对象模型即DOM来对文档进行操作。

相关新闻

TraeWork 和 Claude Code 怎么选:先看交付物,再看代码深度

TraeWork 和 Claude Code 怎么选:先看交付物,再看代码深度

“TRAE 和 Claude Code 哪个好用”没有脱离场景的统一答案。以文档、表格、PPT、调研报告等办公成果为主要交付物,TraeWork 更贴合任务;以代码仓库、终端命令、测试、调试和 Git 流程为核心,Claude Code 的产品定位更匹配。 如果工作同时包含…

2026/8/21 8:01:58 阅读更多 →
AI Agent核心能力构建:从实体识别、属性检索到数学推理的端到端实践

AI Agent核心能力构建:从实体识别、属性检索到数学推理的端到端实践

1. 项目概述:DRBENCHER 要解决的核心问题最近在 AI Agent 领域,一个名为 DRBENCHER 的基准测试工具开始引起不少开发者和研究者的注意。它的标题直指一个核心痛点:“你的智能体(Agent)能否识别实体、检索其属性并进行数…

2026/8/23 14:27:47 阅读更多 →
大模型面试全攻略:RLHF、LLM与Agent系统设计

大模型面试全攻略:RLHF、LLM与Agent系统设计

1. 项目背景与核心价值去年面试某大厂AI Lab时,面试官突然抛出个场景题:"如果让你设计一个基于LLM的客服系统,如何用RLHF优化对话质量?"当时我虽然知道RLHF原理,却没能系统性地把技术栈串起来讲明白。这种痛…

2026/8/22 16:12:41 阅读更多 →

最新新闻

智能体预测新范式:自适应因子记忆如何让AI动态导航未来

智能体预测新范式:自适应因子记忆如何让AI动态导航未来

1. 项目概述:当智能体需要“预测未来”时,我们缺了什么? 在AI代理(Agent)技术日益成为自动化决策核心的今天,我们赋予它们的能力越来越复杂:从执行预设指令,到理解自然语言&#xff…

2026/8/23 20:18:33 阅读更多 →
JavaScript迭代器协议深度解析:从for...of到异步迭代与生成器实战

JavaScript迭代器协议深度解析:从for...of到异步迭代与生成器实战

1. 从“迭代”到“迭代器”:一个被误解的核心概念很多刚接触编程的朋友,一听到“迭代器”(Iterator),第一反应可能就是“哦,循环嘛”。我以前也这么想,直到在项目里踩了几个大坑才明白&#xff…

2026/8/23 20:18:33 阅读更多 →
大模型核心技术解析与AI求职实战指南

大模型核心技术解析与AI求职实战指南

1. 大模型时代的行业变革与机遇 2023年被称为"大模型元年",全球科技巨头和创业公司纷纷投入这场AI军备竞赛。根据斯坦福AI指数报告,大模型相关投资在过去一年增长了近300%,而头部企业的相关岗位薪资涨幅达到45%。这个领域正在经历从…

2026/8/23 20:18:33 阅读更多 →
让AI学会物理规律:视频世界模型的外推能力与实现方法

让AI学会物理规律:视频世界模型的外推能力与实现方法

最近在跟进计算机视觉领域的前沿研究时,发现一个很有意思的挑战:很多视频预测模型在训练集上表现惊艳,但一旦遇到训练时没见过的场景或物体运动,预测结果就变得“反物理”,比如物体凭空消失、穿透墙壁或者违反能量守恒…

2026/8/23 20:18:33 阅读更多 →
美赛论文算法总结:从逻辑构建到可视化呈现的实战指南

美赛论文算法总结:从逻辑构建到可视化呈现的实战指南

1. 从“交作业”到“拿奖”:美赛论文算法总结的核心价值每年一月底到二月初,全球数万支队伍都会经历一场为期四天四夜的“头脑风暴”——美国大学生数学建模竞赛。对于很多同学来说,美赛的挑战不仅在于解题,更在于如何将复杂的思路…

2026/8/23 20:18:33 阅读更多 →
蒙特卡罗模拟:从核心原理到数学建模实战

蒙特卡罗模拟:从核心原理到数学建模实战

1. 从“赌场”到“实验室”:蒙特卡罗模拟的起源与核心思想我第一次接触蒙特卡罗模拟,是在一个关于核反应堆中子扩散的经典案例里。当时我就在想,这么高大上的物理问题,怎么就用上了以赌城命名的数学方法?后来才明白&am…

2026/8/23 20:17:32 阅读更多 →

日新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →