Node.js 可以和 Web 实现 HTTP 请求的跨平台兼容了!

大家好,我是若川。持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列

大家好,我是 ConardLi ,今天给大家带来一个令人兴奋的好消息:Node.js 支持 Fetch API 啦!

7d24dbe21355dd57c17a110d2db9e02c.png

在以前,使用原生的 Node.js API 发送一个 HTTP 请求非常麻烦,你可能要写下面的代码:

const https = require('https')
const options = {hostname: 'nodejs.cn',port: 443,path: '/todos',method: 'GET'
}const req = https.request(options, res => {console.log(`状态码: ${res.statusCode}`)res.on('data', d => {process.stdout.write(d)})
})req.on('error', error => {console.error(error)
})req.end()

所以通常,我们可能会引入一些第三方的 NPM 包,比如 axios、needle、node-fetch、request 这些。

1302634f6bd84aedc4802552d11e7a38.png

在最新的 Node.js v17.5 版本中,增加了对 Fetch API 的支持,所以无需借助这些第三方 HTTP 请求库啦。

Fetch API 可能大家都比较熟悉了,他是当前最流行的跨平台 HTTP Client API ,目前已经可以在浏览器和 Web/Service Workers 中运行,当前 Web 环境里用到最多的请求方式应该就是它了。

Node.js 中的Fetch API 基于 Undici 实现,它提供了一个 WHATWG 标准接口来获取资源,并且也是基于 Promise 的,使用方式基本和浏览器中一致,包括四个核心模块:

  • fetch() - 用于发起请求的函数

  • Headers 类 - 用于处理请求头和响应头

  • Request 类 - 表示传入请求的实例

  • Response 类 - 表示传入响应的实例

const res = await fetch('https://www.conardli.top');
const json = await res.json();
console.log(json);

其实这并不是简单的支持了一个新的原生 HTTP 请求库那么简单,这意味着很多之前在 Web 中用到 FetchNPM 包也可以在 Node.js 里以同样的方式工作了,这些包同样可以实现跨平台兼容了~

Node.js v17.5 中,它还是个实验特性,现在想要试用的话可以通过 node --experimental-fetch flag 开启。

Fetch 的优势在于它是原生支持,并且可以兼容多平台,其他的请求库估计都要慢慢的靠边站了~ 对此你有啥看法?

4d48ef0fdcd08914a21253df62d654d9.gif

················· 若川简介 ·················

你好,我是若川,毕业于江西高校。现在是一名前端开发“工程师”。写有《学习源码整体架构系列》20余篇,在知乎、掘金收获超百万阅读。
从2014年起,每年都会写一篇年度总结,已经写了7篇,点击查看年度总结。
同时,最近组织了源码共读活动,帮助3000+前端人学会看源码。公众号愿景:帮助5年内前端人走向前列。

7f7263040837c2417d58f41f61b1be36.png

识别方二维码加我微信、拉你进源码共读

今日话题

略。分享、收藏、点赞、在看我的文章就是对我最大的支持~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/274923.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zeplin加载 不出图片_为什么Zeplin不能解决您的所有问题

zeplin加载 不出图片Design handover involves communicating the visual styles and behaviours of your design so they can be translated into code.设计移交涉及传达设计的视觉样式和行为,以便可以将它们转换为代码。 Back in the Dark Ages of digital desig…

POJ 基础数学

数学 组合数学 POJ3252,poj1850,poj1019,poj1942 数论 poj2635, poj3292,poj1845,poj2115 计算方法(二分) poj3273,poj3258,poj1905,poj3122 组合数学 poj 3252 题意:如果一个数是round number,则它的二进制表示中&#xff…

使用uwsgi和gunicorn部署Django项目

https://uwsgi-docs.readthedocs.io/en/latest/Management.html https://uwsgi-docs.readthedocs.io/en/latest/Management.html 先了解下相关杀进程命令 ps -ef|grep uwsgi|grep -v grep|awk {print $2}|xargs kill -9//查看uwsgi相关接口 ps -ef|grep uwsgi #查看相关端口 ne…

推荐2022前端必看的新书 《Vue.js设计与实现》

大家好,我是若川。持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列这本新…

汉堡菜单_汉堡菜单-可访问性和用户体验设计原则的挑战?

汉堡菜单重点 (Top highlight)I was recently designing a hamburger menu for a client and before I knew it, I had embarked on this journey where I was reading article after article about the accessibility issues which accompany a hamburger icon. Turns out, th…

Server2012R2 ADFS3.0 The same client browser session has made '6' requests in the last '13'seconds

本问题是在windows server2012R2系统ADFS3.0环境下遇到的,CRM2013部署ADFS后运行一段时间(大概有一两个月)后在IE浏览器中访问登陆界面点击登陆后就报以下错误 “Microsoft.IdentityServer.Web.InvalidRequestException: MSIS7042: The same client browser session…

(原创)RHEL/CentOS 5.x使用yum快速安装MySQL 5.5.x

PS:MySQL 5.5系列成为稳定版已经有一段时间了,但据我调查了解,在生产环境中还是以5.1系列为主。在国内的大公司里,只确定金山在使用5.5了。 公司的其中几台广告统计服务器,之前的运维直接用了自带安装的MySQL 5.0系列。…

又一个基于 Esbuild 的神器!esno

大家好,我是若川。持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan02 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列esno我…

c# ui 滚动 分页_UI备忘单:分页,无限滚动和“加载更多”按钮

c# ui 滚动 分页重点 (Top highlight)When you have a lot of content, you have to rely on one of these three patterns to load it. So, which is best? What will your users like? What do most platforms use? These are the questions we will explore today.当内容…

1.20(设计模式)模板模式

模板模式,定义了一个模板,模板内容通过子类实现模板的抽象方法去添加。 就类似学校需要建一个新校区,新校区有多栋宿舍,找了多个施工方,每个施工方负责一栋宿舍楼。 各个施工方都有自己的想法,建造的宿舍楼…

少年,看你异于常人,有空花2小时来参加有3000人的源码共读嘛~

大家好,我是若川。按照从易到难的顺序,前面几期(比如:validate-npm-package-name、axios工具函数)很多都只需要花2-3小时就能看完,并写好笔记。但收获确实很大。开阔视野、查漏补缺、升职加薪。已经有400笔…

HDU 3488 KM

http://acm.hdu.edu.cn/showproblem.php?pid3488 依然KM, 可以最小费用流 与HDU1853 差不多,但是1853要判断是否满足回路的的条件,KM还不会判回路,所以做1853时学了最小费用流做的,说是学最小费用流 只是皮毛了。。…

Java 面向对象的程序设计(二)

编写一个java程序,设计一个汽车类Vehicle,包含的属性有车轮的个数wheels和车重weight。小汽车类Car是Vehicle的子类,包含的属性有载人数loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个类都有构造方法和输…

16位调色板和32位调色板_使调色板可访问

16位调色板和32位调色板Accessibility has always been a tough sell. Admittedly, less so than in the ‘nineties, when no prospective client was interested. But even today — more enlightened times — the majority of companies I encounter still prefer to make …

从零开始发布自己的NPM包

大家好,我是若川。持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan02 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列在Ver…

flash不能访问本地文件

flash出现"不能访问本地资源";解决方案 linux下,如果没有文件夹自行创建 在/home/{user}/.macromedia/Flash_Player/#Security/FlashPlayerTrust下面,随便建个文本文件,比如1.txt 然后写入路径,最省事的办法直接来个/ 凶…

Jest + React Testing Library 单测总结

大家好,我是若川。持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan02 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列1、背…

不怕神一样的对手就怕猪一样的队友

“不怕神一样的对手就怕猪一样的队友”这句话现在广为流传,实际上说的就是团队重要性,一个好的团队是可以克服很多你想象不大的困难, 做出你觉得不可能成绩。 但是很多时候我们面临的不是神一样的对手,而是猪一样的队友&#xff0…

着迷英语900句_字体令人着迷

着迷英语900句I’m crazy about fonts. My favorite part of any text editing software is the drop down menu for picking fonts. When I look at any text, I try to identify the font. Roboto is my favorite font.我为字体疯狂。 在任何文本编辑软件中,我最喜…

hdu 2188悼念512汶川大地震遇难同胞——选拔志愿者(博弈)

简单博弈就那样&#xff0c;懂SG函数就成&#xff0c;最近做的博弈都千篇一律。。。 #include<cstdio> #include<cstring> #define N 11110 int sg[N],s[N],m,n; bool h[N]; void ssgg() {int i,j;sg[0]0;for(i1;i<N;i){ memset(h,0,sizeof(h));for(j1;j<n;j…