记录--使用率比较低的10个Web API
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助
avaScript中有些API可能使用率比较低,下面我们逐一介绍它们的用法和使用场景。
至于标题,主要是想让你进来看看,兄弟们别打我!
Blob API
Blob API 用于处理二进制数据,可以方便地将数据转换为Blob对象或从Blob对象读取数据。
// 创建一个Blob对象
const myBlob = new Blob(["Hello, world!"], { type: "text/plain" }); // 读取Blob对象的数据
const reader = new FileReader();
reader.addEventListener("loadend", () => {
console.log(reader.result);
});
reader.readAsText(myBlob);
使用场景:在Web应用中,可能需要上传或下载二进制文件,使用Blob API可以方便地处理这些数据。
WeakSet
WeakSet 类似于Set,但可以存储弱引用的对象。这意味着,如果没有其他引用指向一个对象,那么这个对象可以被垃圾回收器回收,而不需要手动从WeakSet中删除。
const myWeakSet = new WeakSet();
const obj1 = {};
const obj2 = {}; myWeakSet.add(obj1);
myWeakSet.add(obj2); console.log(myWeakSet.has(obj1)); // true obj1 = null; console.log(myWeakSet.has(obj1)); // false
使用场景:在某些情况下,可能需要存储一些临时的对象,但又不希望这些对象占用太多的内存。使用WeakSet可以方便地管理这些对象。
TextEncoder 和 TextDecoder
TextEncoder 和 TextDecoder 用于处理字符串和字节序列之间的转换。它们可以方便地将字符串编码为字节序列或将字节序列解码为字符串。
const encoder = new TextEncoder();
const decoder = new TextDecoder(); const myString = "Hello, world!";
const myBuffer = encoder.encode(myString); console.log(myBuffer); // Uint8Array(13) [72, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100, 33] const decodedString = decoder.decode(myBuffer); console.log(decodedString); // "Hello, world!"
使用场景:在Web应用中,可能需要将字符串转换为二进制数据,或将二进制数据转换为字符串。使用TextEncoder和TextDecoder可以方便地进行这些转换。
Proxy API
Proxy API 可以用于创建代理对象,可以拦截对象属性的读取、赋值等操作。这个功能可以用于实现元编程、数据劫持等功能。
const myObject = {
name: "John",
age: 30,
};
const myProxy = new Proxy(myObject, {
get(target, property) {
console.log(`Getting property ${property}`);
return target[property];
},
set(target, property, value) {
console.log(`Setting property ${property} to ${value}`);
target[property] = value;
},
});
console.log(myProxy.name); // "John"
myProxy.age = 31; // Setting property age to 31
使用场景:在某些情况下,可能需要拦截对象属性的读取、赋值等操作,以实现更高级的功能。使用Proxy API可以方便地实现这些功能。
Object.entries() 和 Object.values()
Object.entries() 用于获取对象的可枚举属性和值的数组,Object.values() 用于获取对象的可枚举属性值的数组。
const myObject = {
name: "John",
age: 30,
};
console.log(Object.entries(myObject)); // [["name", "John"], ["age", 30]]
console.log(Object.values(myObject)); // ["John", 30]
使用场景:在某些情况下,可能需要获取对象的可枚举属性或属性值。使用Object.entries()和Object.values()可以方便地实现这些功能。
IntersectionObserver
IntersectionObserver 可以用于检测元素是否进入视口,可以用于实现无限滚动、懒加载等功能。
const myObserver = new IntersectionObserver((entries, observer) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
console.log(`${entry.target.id} is now visible`);
observer.unobserve(entry.target);
}
});
});
const myElement = document.getElementById("myElement");
myObserver.observe(myElement);
使用场景:在Web应用中,可能需要实现无限滚动、懒加载等功能,使用IntersectionObserver可以方便地实现这些功能。
Symbol
Symbol 可以用于创建唯一标识符,可以用于定义对象的私有属性或方法。
const mySymbol = Symbol("mySymbol");
const myObject = {
[mySymbol]: "This is a private property",
publicProperty: "This is a public property",
};
console.log(myObject[mySymbol]); // "This is a private property"
console.log(myObject.publicProperty); // "This is a public property"
使用场景:在某些情况下,可能需要定义对象的私有属性或方法,使用Symbol可以方便地实现这些功能。
Reflect API
Reflect API 可以用于实现元编程,例如动态调用对象的方法或构造函数。
class MyClass {
constructor(value) {
this.value = value;
}
getValue() {
return this.value;
}
}
const myObject = Reflect.construct(MyClass, ["Hello, world!"]);
const myMethod = Reflect.get(myObject, "getValue");
const myValue = myMethod.call(myObject);
console.log(myValue); // "Hello, world!"
使用场景:在某些情况下,可能需要动态调用对象的方法或构造函数,使用Reflect API可以方便地实现这些功能。
Generator API
Generator API 可以用于生成迭代器,可以用于实现异步操作或惰性计算。
function* myGenerator() {
yield "Hello";
yield "world";
yield "!";
}
const myIterator = myGenerator();
console.log(myIterator.next().value); // "Hello"
console.log(myIterator.next().value); // "world"
console.log(myIterator.next().value); // "!"
使用场景:在某些情况下,可能需要实现异步操作或惰性计算,使用Generator API可以方便地实现这些功能。
Web Workers
Web Workers 可以用于在后台线程中执行JavaScript代码,可以用于提高性能或实现复杂的计算。
// main.js
const myWorker = new Worker("worker.js"); myWorker.postMessage("Hello, worker!"); myWorker.onmessage = (event) => {
console.log(`Message received from worker: ${event.data}`);
}; // worker.js
onmessage = (event) => {
console.log(`Message received in worker: ${event.data}`);
postMessage("Hello, main!");
};
使用场景:在Web应用中,可能需要处理大量计算密集型任务或执行长时间运行的操作,使用Web Workers可以提高性能或避免阻塞用户界面。
AudioContext
AudioContext 可以用于处理音频,可以用于实现音频播放、音效处理等功能。
const audioContext = new AudioContext();
fetch("https://example.com/audio.mp3")
.then((response) => response.arrayBuffer())
.then((arrayBuffer) => audioContext.decodeAudioData(arrayBuffer))
.then((audioBuffer) => {
const source = audioContext.createBufferSource();
source.buffer = audioBuffer;
source.connect(audioContext.destination);
source.start();
});
使用场景:在Web应用中,可能需要实现音频播放、音效处理等功能,使用AudioContext可以方便地实现这些功能。
总结
以上Web API和它们的使用场景,这些API可以帮助我们更方便地实现Web应用的各种功能。当然,除了这些API之外,还有很多其他有用的API和工具,建议大家多多探索,以便更好地应对Web开发的各种挑战。
本文转载于:
https://juejin.cn/post/7221813031813054501
如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

记录--使用率比较低的10个Web API的更多相关文章
- ABP开发框架前后端开发系列---(10)Web API调用类的简化处理
在较早期的随笔<ABP开发框架前后端开发系列---(5)Web API调用类在Winform项目中的使用>已经介绍了Web API调用类的封装处理,虽然这些调用类我们可以使用代码生成工具快 ...
- Web APi 2.0优点和特点?在Web APi中如何启动Session状态?
前言 曾几何时,微软基于Web服务技术给出最流行的基于XML且以扩展名为.asmx结尾的Web Service,此服务在.NET Framework中风靡一时同时也被.NET业界同仁所青睐,几年后在此 ...
- Web API和Web Service
首先,Web API是由Web Service演变而来,它们两者关系就是所有Web Service都是API,但并非所有API都是Web Service.其次,两者都有利于信息的传输,但Web API ...
- asp.net web api 的版本升级到 2.2的记录
asp.net web api 的版本 升级到 2.2的记录 asp.net web api 2.2相比1.0提升了不少 而且其中最重要的就是有了在线文档的自动字段注释的功能 再也不用写详细的字段说明 ...
- Web API使用记录系列(二)HelpPage优化与WebApiTestClient
继续使用记录的第二节,HelpPage的优化与测试工具WebApiTestClient的使用. 之前没怎么整理博客,都是记录一下笔记,真正好好整理发现没想像的那么简单.不管怎么说还是培养下写博客的习惯 ...
- 10大Web漏洞扫描工具
Web scan tool 推荐10大Web漏洞扫描程序 Nikto 这是一个开源的Web服务器扫描程序,它可以对Web服务器的多种项目(包括3500个潜在的危险文件/CGI,以及超过900个服务器版 ...
- 10 分离式web框架
10 分离式web框架 wsgiref模块: 将http请求封装成以键值对的形式封装成字典environ: "PATH_INFO"对应的值为请求文件路径, “QUERY_STRIN ...
- Web APi之异常处理(Exception)以及日志记录(NLog)(十六)
前言 上一篇文章我们介绍了关于日志记录用的是Log4net,确实也很挺强大,但是别忘了我们.NET有专属于我们的日志框架,那就是NLog,相对于Log4net而言,NLog可以说也是一个很好的记录日志 ...
- ASP.NET Web API 异常日志记录
如果在 ASP.NET MVC 应用程序中记录异常信息,我们只需要在 Global.asax 的 Application_Error 中添加代码就可以了,比如: public class MvcApp ...
- Web API删除JSON格式的文件记录
Insus.NET的系列Web Api学习文章,这篇算是计划中最后一篇了,删除JSON格式的文件记录.前一篇<Web Api其中的PUT功能演示>http://www.cnblogs.co ...
随机推荐
- Windows 10 快捷键大全|日常办公效率加倍
## 复制.粘贴及其他常规 Ctrl + X 剪切选定项. Ctrl + C(或 Ctrl + Insert) 复制选定项. Ctrl + V(或 Shift + Insert) 粘贴选定项. ...
- ASP.NET Core 配置 - 创建自定义配置提供程序
ASP.NET Core 配置 - 创建自定义配置提供程序 在本文中,我们将创建一个自定义配置提供程序,从数据库读取我们的配置.我们已经了解了默认配置提供程序的工作方式,现在我们将实现我们自己的自定义 ...
- UVA11573 Ocean Currents
题目链接 题目 见链接. 题解 知识点:BFS. 这道题显然用BFS,但发现洋流方向会破坏时间的有序性,但注意到洋流时间花费是 \(0\) ,因此只需要用双端队列即可,洋流方向扩展直接放队头,其他方向 ...
- C语言,变长数组的用法
在我的<C语言,结构体成员的地址>文章中,定义了一个demo_node结构体,其中用到变长数组char addr[0].本文以此为例,对C语言变长数组的基本用法展开介绍. typedef ...
- Ubuntu18.04 Server部署Flannel网络的Kubernetes
准备服务器 ESXi6.5安装Ubuntu18.04 Server, 使用三台主机, 计划使用hostname为 kube01, kube02, kube03, 配置为2核4G/160G, K8s要求 ...
- Stream 总结
1 前言 Stream 是 Java 8 中为方便操作集合及其元素而定制的接口,它将要处理的元素集合看作一种流,对流中的元素进行过滤.排序.映射.聚合等操作.使用 Stream API,就好像使用 S ...
- php+bootstrap+jquery+mysql实现购物车项目案例
获取源码 一键三连后,评论区留下邮箱安排发送:) 介绍 使用php,bootstrap,jquery,mysql实现的简易购物车案例. 通过本案例,你将学习到以下知识点: php 操作 mysql 实 ...
- centos7使用repo方式安装zabbix4.0
1.安装zabbix的repo源 rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbi ...
- C++字符串大写字母转小写字母
#include <iostream> #include <stdio.h> using namespace std; char* Capital_to_Small(char* ...
- Feign入门介绍
Feign入门介绍 基本概述 除Feign之外,在Java中经常使用的HTTP客户端组件主要有3个,如下: (1)HttpURLConnection,JDK自带 (2)Apache HttpClien ...
