记录--使用率比较低的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 ...
随机推荐
- CF590C Three States
题目链接 题目 见链接. 题解 知识点:BFS. 这道题求连接三个国家的最短路径长度.如果枚举每个点进行bfs,显然不可行,换种思路,从三个国家开始分别进行bfs是可以的. 注意一开始初始化两个距离数 ...
- LLaMA 2 - 你所需要的一切资源
摘录 关于 LLaMA 2 的全部资源,如何去测试.训练并部署它. LLaMA 2 是一个由 Meta 开发的大型语言模型,是 LLaMA 1 的继任者.LLaMA 2 可通过 AWS.Hugging ...
- 【Unity3D】VideoPlayer组件
1 简介 AudioSource组件中介绍了音频的播放,本文将介绍基于 VideoPlayer 组件实现视频播放. VideoPlayer 属性面板如下: Source:视频源类型,有 2 种 ...
- ERROR 1820 (HY000): You must reset your password using ALTER USER statement
新安装好的mysql5.7数据库,用root登录以后执行操作报这个错. 解决方法: mysql> alter user 'root'@'localhost' identified by 'roo ...
- websocket 监听端口问题
有用户反馈使用我们的软件时会出现 ERR_CONNECTION_CLOSED 问题 我们根据反馈排查问题发现是软件的 websocket 监听端口被另一款软件占用了,暂时的解决方法是将占用的软件关闭 ...
- 常见的问题系列--- Swagger @ApiOperationSupport忽略失效的问题
https://www.cnblogs.com/hujunwei/p/15853307.html
- render_to_string快捷函数,渲染模板字符串
# views.py from django.template.loader import render_to_string from django.http import HttpResponse ...
- Java 通过属性名称读取或者设置实体的属性值
原因 项目实战中有这个需求,数据库中配置对应的实体和属性名称,在代码中通过属性名称获取实体的对应的属性值. 解决方案 工具类,下面这个工具是辅助获取属性值 import com.alibaba.fas ...
- 名校 AI 课程|斯坦福 CS25:Transformers United 专题讲座
自 2017 年提出后,Transformer 名声大噪,不仅颠覆了自然语言处理(NLP)领域,而且在计算机视觉(CV).强化学习(RL).生成对抗网络(GANs).语音甚至是生物学等领域也大显锋芒, ...
- HashMap,TreeMap,LinkedHashMap的默认排序
简单描述 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,HashTable以及LinkedHashMap等. TreeMap:能够把它保存的记录根据键(key)排序,默 ...