新書推薦:

《
性格解码:解锁你的职业天赋(第6版)
》
售價:HK$
96.8

《
走出情绪风暴,做从容引领的父母
》
售價:HK$
65.8

《
仰望星空:观测火星
》
售價:HK$
68.2

《
费曼学习法:高效学习的实用策略和技巧
》
售價:HK$
64.9

《
风俗论(上册)(汉译名著本)
》
售價:HK$
105.6

《
ACT一学就会:接纳承诺疗法入门指南
》
售價:HK$
152.9

《
壹卷YeBook 地域文化与国家认同:晚清以来“广东文化”观的形成 广东历史文化研究
》
售價:HK$
86.9

《
漫步上海老房子(修订版)
》
售價:HK$
63.8
|
編輯推薦: |
JavaScript应用程序进阶之路。
编辑推荐
JavaScript赋予Web开发者强大的能力,使其能够创造丰富的浏览器交互体验。在现代Web开发领域,这些能力已不再依赖传统插件,而是由浏览器本生提供核心支持。现代Web API正在彻底革新网页应用的构建方式,其功能覆盖范围已超越早期需要浏览器插件才能实现的场景。尽管部分API尚处实验阶段,但多数已进入生产可用状态。
本书作为实战指南,作者将带领开发者深入探索现代浏览器中的强大API体系,并通过具体任务场景演示其应用模式。由于这些特性均属Web标准规范,开发者可通过权C威资源(如MDN Web文档)获取完整技术资料。更重要的是,此类知识具备高度通用性,其设计理念与实践经验可在不同企业及项目间无缝迁移。
专家推荐
“本书全面覆盖浏览器原生API技术栈,从基础到进阶为不同阶段的开发者提供实用代码示例。作者深入浅出的讲解风格结合清晰的代码示例,将枯燥的API学习转化为愉悦的探索之旅。对于Web开发者来说,本书都将是技术升级的必B备指南!”
——Sarah Shook
Software developer/owner,Shoo
|
內容簡介: |
本书的主要内容有:通过浏览器原生能力提升Web应用体验。系统学习现代浏览器API所提供的广泛功能。深入探索实验性阶段的前瞻性API。摆脱第三方库依赖,发掘如原生对话框组件等新元素。依赖原生硬件设备能力,构建更高功能和交互性的Web应用。深刻理解浏览器权限模型,解锁地理位置信息和通知推送等核心功能。
|
關於作者: |
Joe Attardi拥有超过20年的前端软件开发经验,并开发了许多基于浏览器的应用程序。他还为Nortel、Dell、Constant Contact、Salesforce和Synopsys打造过丰富的前端体验,并专注于JavaScript和TypeScript开发。
|
目錄:
|
目录
前言 1
第1 章 异步API 9
1.0 引言 9
1.1 Promise 的使用 11
1.2 有备用方案的图片加载 .12
1.3 链式调用Promises15
1.4 使用async 和await 关键词 .16
1.5 并行使用Promises17
1.6 使用requestAnimationFrame 为元素添加动画效果 19
1.7 用Promise 封装事件API .22
第2 章 使用Web Storage API 实现简单的数据持久化 . 25
2.0 引言 .25
2.1 检查Web Storage 支持状态 .27
2.2 持久化字符串数据 28
2.3 持久化简单对象 29
2.4 持久化复杂对象 31
2.5 监听存储变化 .36
2.6 查找所有已知键 37
2.7 移除数据38
第3 章 URL 和路由 .41
3.0 引言 .41
3.1 解析相对路径URL 43
3.2 移除URL 中的查询参数 44
3.3 向URL 中添加查询参数 46
3.4 读取查询参数 .49
3.5 创建一个简单的客户端路由 50
3.6 匹配URL 到模式 .53
第4 章 网络请求 57
4.0 引言 .57
4.1 使用XMLHttpRequest 发送请求 58
4.2 使用Fetch API 发送GET 请求 59
4.3 使用Fetch API 发送POST 请求 61
4.4 使用Fetch API 上传文件 63
4.5 使用Beacon 发送数据 64
4.6 使用服务器发送的事件监听远程事件 65
4.7 使用WebSockets 实时交换数据 67
第5 章 IndexedDB 71
5.0 引言 .71
5.1 在数据库中创建、读取和删除对象.73
5.2 升级现有数据库 80
5.3 使用索引进行查询 82
5.4 使用游标搜索字符串值 .85
5.5 对大型数据集进行分页 .87
5.6 在IndexedDB API 中使用Promises 89
第6 章 观察DOM 元素 93
6.0 引言 .93
6.1 滚动视图中图像的延迟加载 95
6.2 使用Promise 封装IntersectionObserver 97
6.3 自动暂停和播放视频 98
6.4 高度变化的动画效果 99
6.5 根据元素的大小改变内容 .102
6.6 当元素进入视窗时添加一个过渡 103
6.7 无限滚动.105
第7 章 表单 . 107
7.0 引言 107
7.1 用本地存储数据填充表单字段 109
7.2 使用Fetch 和FormData API 提交表单 110
7.3 使用JSON 提交表单 112
7.4 标识一个字段是必填的 114
7.5 数字输入的约束 . 115
7.6 指定验证模式 116
7.7 表单验证. 116
7.8 采用自定义验证逻辑 120
7.9 验证一组复选框 .122
7.10 异步地验证字段 125
第8 章 Web 动画API 129
8.0 引言 129
8.1 在点击时应用“涟漪”效果 .131
8.2 启动和停止动画 .134
8.3 动画化添加和移除DOM 元素 .135
8.4 反转动画.137
8.5 显示滚动进度指示器 140
8.6 让元素弹跳 142
8.7 同时运行多个动画 .144
8.8 显示加载动画 145
8.9 尊重用户的动画偏好 148
第9 章 Web Speech API 151
9.0 引言 151
9.1 向文本字段添加口述功能 .153
9.2 用Promise 封装语音识别 156
9.3 获取可用的语音 .158
9.4 语音合成.159
9.5 自定义语音合成参数 160
9.6 自动暂停语音 161
第10 章 文件处理 163
10.0 引言 163
10.1 从文件中加载文本 164
10.2 将图像作为数据URL 加载 .166
10.3 像URL 对象一样加载本地视频 168
10.4 使用拖放功能加载图像 170
10.5 检查并申请权限 172
10.6 将API 数据导出到文件 174
10.7 通过下载链接导出API 数据 .176
10.8 通过拖放上传文件 178
第11 章 国际化 181
11.0 引言 181
11.1 日期的格式化 182
11.2 获取格式化日期的各个部分 183
11.3 格式化相对日期 184
11.4 数字格式化 .185
11.5 四舍五入小数位 187
11.6 格式化价格范围 187
11.7 格式化计量单位 188
11.8 应用复数规则 189
11.9 统计字符、单词和句子 191
11.10 格式化列表 192
11.11 对名称数组进行排序 194
第12 章 Web 组件 . 197
12.0 引言 197
12.1 创建一个组件来显示今天的日期 200
12.2 创建一个组件格式化一个自定义日期 201
12.3 创建一个反馈组件 204
12.4 创建个人信息卡组件 .207
12.5 创建一个懒加载图像组件209
12.6 创建一个隐藏/ 显示组件 211
12.7 创建带样式的按钮组件 214
第13 章 UI 元素 . 219
13.0 引言 219
13.1 创建一个警告对话框 .220
13.2 创建Confirmation 对话框 223
13.3 创建Confirmation 对话框的Web 组件.225
13.4 使用显示/ 隐藏元素 228
13.5 显示弹出框 .230
13.6 手动控制弹出框 231
13.7 弹出框与元素的相对定位232
13.8 显示工具栏 .235
13.9 显示通知 237
第14 章 设备集成 241
14.0 引言 241
14.1 读取电池状态 242
14.2 读取网络状态 244
14.3 获取设备位置 246
14.4 在地图上显示设备位置 248
14.5 复制和粘贴文本 250
14.6 使用Web Share API 分享内容 252
14.7 设备震动 254
14.8 获取设备方向 255
第15 章 性能测量 257
15.0 引言 257
15.1 测量页面加载性能 258
15.2 测量资源性能 259
15.3 找到最慢的资源 260
15.4 找到特定资源的耗时 .261
15.5 分析渲染性能 262
15.6 分析多步骤任务 264
15.7 监听性能条目 265
第16 章 控制台的使用 . 269
16.0 引言 269
16.1 控制台输出的样式设置 269
16.2 日志等级的使用 270
16.3 创建命名日志器 271
16.4 在表格中显示对象数组 272
16.5 使用控制台计时器 275
16.6 使用控制台组 276
16.7 使用计数器 .278
16.8 记录变量及其值 279
16.9 记录堆栈跟踪 280
16.10 验证预期值 281
16.11 检查对象的属性 .282
第17 章 CSS 285
17.0 引言 285
17.1 高亮文本范围 285
17.2 防止无样式文本闪烁 .289
17.3 动画化DOM 转换 291
17.4 在运行时修改样式表 .293
17.5 有条件的设置CSS 类 293
17.6 匹配媒体查询 294
17.7 获取元素的计算样式 .295
第18 章 媒体 299
18.0 引言 299
18.1 录屏 299
18.2 使用用户的相机采集图像302
18.3 通过用户的相机采集视频305
18.4 检测系统媒体功能 307
18.5 添加视频滤镜 308
第19 章 结语 311
19.0 引言 311
19.1 为第三方库辩护 311
19.2 检测功能,而非浏览器版本 311
19.3 polyfill 312
19.4 展望未来 312
|
內容試閱:
|
前言自1995 年底推行以来,JavaScript 已经走过了一段漫长的道路。早期的Web 浏览器内核提供的API 非常有限,很多高级的功能通常要依赖第三方JavaScript库,甚至在特殊情况下需要浏览器插件来完成。Web API 是浏览器提供的一系列全局对象和函数。通过这些对象和函数,可以运行JavaScript 代码与文档对象模型(DOM)交互、执行网络通信、并与本机设备集成等。现代浏览器的强大功能现代Web API 对于Web 平台有两个主要优势:无需更多插件之前,很多浏览器功能要借助本机应用程序或笨重的浏览器插件才能使用(还记得ActiveX 和Flash 吗)。减少第三方依赖过去需要第三方JavaScript 库才能实现的许多功能,现代浏览器都已提供了。因此,像jQuery、Lodash 和Moment 这样的曾经流行的库通常不再需要了。第三方库的弊端第三方库对于支持老旧浏览器或新功能非常有用,但也存在一些弊端:更多的代码下载使用第三方库会增加浏览器需要加载的JavaScript 代码量。无论是与应用程序打包在一起,还是从内容分发网络(CDN)单独加载,浏览器都仍然需要下载它。这可能会导致加载时间变长,并增加移动设备上的电池消耗。风险增加开源的库,即使是流行的库,也可能停止维护。当发现漏洞或安全问题时,无法保证会有更新。相比之下,浏览器由大型公司(主要浏览器来自Google、Mozilla、Apple 和Microsoft)支持,因此更有可能修复这些问题。这并不是说使用第三方库就一定是不好的。如果需要支持旧版浏览器,使用第三方库则有很多好处。就像软件开发一样,库的使用需要权衡利弊。本书的目标读者本书非常适合对JavaScript 有一定了解并想要充分利用网络平台的软件开发人员。本书假设你已经具备JavaScript 语言的基础知识,包括语法、特性和标准库函数,同时也了解构建交互式浏览器端JavaScript 应用程序的DOM 接口。本书涵盖了各种各样的内容,适合各个技术水平的开发者。即使是刚入门的新手也能找到适合自己的部分。示例代码本书每章都包含一些的样例(完成指定任务的代码示例)。每个样例由三个部分组成:问题描述样例需要解决的问题。方案具体的解决方案,包括代码和注解。讨论对主题的深入讨论。可能包含其他代码示例以及与其他技术的比较。本书所有的代码示例和在线演示均可以在配套网站https://WebAPIs.info 上找到。其他资源本质上讲,Web 无时不在改变。将会有很多优秀的在线资源出现来解答或澄清新的问题。CanIUse.com本书写作之时,书中的一些API 仍在开发中或“实验”阶段。使用这些API 时注意样例中的兼容性说明。大多数功能,可以通过https://CanIUse.com 查看最新的兼容性数据。也可以按功能名称搜索,并查看有关浏览器版本支持以及API 对浏览器版本的任何限制或警告。MDN Web 文档MDN Web 文档(https://oreil.ly/rLxi7)是包含所有Web API 的权威文档。它涵盖了本书中的所有API 详细信息以及其他主题,例如CSS 和HTML。同时也包含一些深入的文章和教程以及API 规范。API 规范有任何疑问,相关功能或API 的规范是最权威的资源。这些规范虽然读起来比较枯燥,但它详细地记录了各种特殊情况和预期行为。虽然不同的API 有着不一样的标准,但都能在超文本应用程序技术工作组(WHATWG)(https://oreil.ly/PR0x7)或者万维网联盟(W3C)(https://oreil.ly/dFokl)上找到对应的规范。维护和制定ECMAScript 标准(也是JavaScript 语言标准)的是Ecma 国际39技术委员会,即大名鼎鼎的TC39(https://tc39.es)。排版约定本书采用以下排版约定。斜体(Italic)表示新术语、URL、电子邮件地址、文件名和文件扩展名。等宽字体(Constant width)表示程序清单,在段落内表示程序元素,例如变量、函数名称、数据库、数据类型、环境变量、语句和关键字。粗体等宽字体(Constant width bold)表示应由用户原封不动输入的命令或其他文本。斜体等宽字体(Constant width italic)表示应该替换成用户提供值的文本,或者由上下文决定的值。使用示例代码本书资料(包括示例代码,练习等)均可在https://github.com/joeattardi/webapicookbook 下载,也可查看网站(https://WebAPIs.info),本书中的大多示例已开发为完整的,可工作的在线示例。有任何技术疑问, 或者代码示例运行的问题, 请随时发送email 到bookquestions@oreilly.com。本书旨在帮助您完成工作。通常情况下,本书提供的示例代码,可以在自己个人的程序和文档中使用它。除非使用大量的代码,否则无需联系我们获得许可。例如,编写一个使用本书多个代码片段的程序不需要许可。销售或分发来自O’Reilly 图书的示例需要许可。引用本书并引用示例代码来回答问题不需要许可。将本书大量示例代码纳入产品文档需要许可。我们很希望但并不强制要求你在引用书中内容时加上引用说明。引用说明通常包括标题、作者、出版商和ISBN。例如,“Web API Cookbook by Joseph Attardi (O’Reilly). Copyright 2024 Joe Attardi, 978-1-098-15069-3”。如果你觉得自己对示例代码的用法超出了上述许可的范围, 请随时通过permissions@oreilly.com 联系我们。O’Reilly 在线学习平台(O’Reilly Online Learning)近40 年来,O’Reilly Media 致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。公司独有的专家和改革创新者网络通过O’Reilly 书籍、文章以及在线学习平台,分享他们的专业知识和实践经验。O’Reilly 在线学习平台按照您的需要提供实时培训课程、深入学习渠道、交互式编程环境以及来自O’Reilly 和其他200 多家出版商的大量书籍与视频资料。更多信息,请访问网站:https://www.oreilly.com/。联系我们任何有关本书的意见或疑问,请按照以下地址联系出版社。美国:O’Reilly Media, Inc.1005 Gravenstein Highway NorthSebastopol, CA 95472中国:北京市西城区西直门南大街2 号成铭大厦C 座807 室(100035)奥莱利技术咨询(北京)有限公司勘误、示例和其他信息可访问https://oreil.ly/web-api-cookbook 获取。对本书中文版的勘误可以发电子邮件到errata@oreilly.com.cn。欲了解本社图书和课程的新闻和信息,请访问我们的网站http://oreilly.com。我们的Facebook:http://facebook.com/oreilly。我们的YouTube:http://youtube.com/oreillymedia。致谢首先,我要衷心感谢我的家人和朋友对我的支持,尤其是我的妻子Liz 和儿子Benjamin,一直容忍我日夜不停地敲打键盘。我在写这本书时,打字往往非常快而且声音很大。我要特别感谢高级策划编辑Amanda Quinn,是她给了我成为一名O’Reilly 作者的机会。多年来,我阅读了无数O’Reilly 出版的书籍,从未想过有一天自己也能成为其中一员。还要感谢Louise Corrigan 将我介绍给Amanda,让我开始写书(几年前与我合作出版了我的第一本书)!特别感谢高级开发编辑Virginia Wilson,她在写作和编辑的整个过程中对我进行了细致的指导,并定期跟进进度,确保项目顺利进行。我还要感谢本书的优秀技术审稿人:Martine Dowden、Schalk Neethling、Sarah Shook 和Adam Scott。他们的宝贵意见使本书的质量得到了很大提升。最后,我要感谢所有设计和开发这些现代Web API 的人。没有他们的辛勤工作,这本书就不可能存在!
|
|