写在最前:跟着视频学习只是为了在新手期快速入门。想要学习全面、进阶的知识,需要格外注重实战和
官方技术文档
,文档建议作为手册使用
系列文章
- 【Node.js】笔记整理 1 - 基础知识
- 【Node.js】笔记整理 2 - 常用模块
- 【Node.js】笔记整理 3 - npm
- 【Node.js】笔记整理 4 - node版本管理工具 nvm
- 【Node.js】笔记整理 5 - Express框架简单入门
- 【Node.js】笔记整理 6 - MongoDB
- 【Node.js】笔记整理 7 - mongoose
本文目录
- 系列文章
- 前言
- Node.js中使用axios
-
- 先区分AJAX、xhr、axios
- node环境下使用axios的配置
- 基础知识
-
- [1.1、Node.js中的顶级对象 ------ global、globalThis](#1.1、Node.js中的顶级对象 —— global、globalThis)
- [1.2、Buffer 缓冲区](#1.2、Buffer 缓冲区)
前言
Node.js不是浏览器环境,浏览器环境下使用的DOM
、BOM
将无法再使用
Node.js中使用axios
这里首先要纠正一个错误,因为我很久以前第一次学Node.js时候,是看得黑马的视频,他的视频教案里说Node.js不可以使用axios
,这是错误的。
先区分AJAX、xhr、axios
说原因之前,首先要分清楚AJAX
、xhr
、axios
这仨的关系。
AJAX 异步JavaScript和XML
是一种技术或者一种思想。XMLHttpRequest
即xhr
,是浏览器提供的一个原生对象,它赋予了js在浏览器环境下与服务器进行数据交互的能力,是浏览器环境下对AJAX
技术的一种实现。axios
:一个被广泛使用的基于Promise封装的http请求库,在浏览器环境下和在node环境下会使用不同的创建方式,也是AJAX
技术的一种实现。他可以应用于浏览器,也可以应用于node
,在node
应用环境下,使用axios
需要进行额外的配置。
Node.js不可以使用xhr
,这是因为xhr
是只在浏览器环境下提供的原生对象,不可以使用DOM
和BOM
也是这个原因。但是想要完成网络请求的能力,http模块
和axios
是可以使用的,并且使用axios
需要借助到http
模块。
node环境下使用axios的配置
创建时候多了一个配置项,其他和浏览器中的创建无异,核心步骤如下:
注意: HttpRequest 是已经封装的axios,它在初始化时接受一个
AxiosRequestConfig
类型的参数
ts
// 看你需求用哪个
const https = require("https")
const axios = require("axios")
const agent = new https.Agent({
rejectUnauthorized: false
})
// 假设你已经完成了对axios的封装,初始化时传入的参数类型是 AxiosRequestConfig
export const request = new HttpRequest({
baseURL: '',
timeout: 5 * 1000,
httpsAgent: agent
})
现在就可以使用axios在node
里进行请求了
基础知识
1.1、Node.js中的顶级对象 ------ global、globalThis
在node中,顶级对象是global
,相当于浏览器中的window
。 在ES2020后,新增了globalThis
,他和global
等效
1.2、Buffer 缓冲区
一个类数组对象,用于表示固定长度的字节序列,它的本质是一段内存空间
,专门存储二进制数据。
优势:读写速度更快
1.2.1、创建Buffer
三种方式:Buffer.alloc
、Buffer.allocUnsafe
、Buffer.from
1、Buffer.alloc()
该方法创建buffer,每一个二进制位都会先归0
js
let buf = Buffer.alloc(10) // 创建了一个长度为10的二进制字节序列: 00 00 00 00 00 00 00 00 00 00 00
2、Buffer.allocUnsafe()
这种方法创建的buffer可能会包含旧的内存数据,所以叫不安全的
js
let unsafeBuf = Buffer.allocUnsafe(10) // 创建了一个长度为10的二进制字节序列, 但它可能包含之前没清除的数据
3、Buffer.from()
将输入的数据转换为二进制存入buffer
js
let toBeBuf = Buffer.from('hello node') // toBeBuf 是'hello node'的二进制序列
1.2.2、Buffer操作
1、转String
js
buf.toString()
2、读写
buffer的元素
类似数组的方式读取
js
let buf = Buffer.from('hello node')
buf.forEach((b) => {
console.log(b.toString())
})
buf[1].toString()
修改也是
js
buf[5] = 35
3、溢出
buffer二进制位能够存储的最大二进制是255(1111 1111
),若超过这个数(比如0000 1111 1111
)则发生溢出, Buffer的处理方法时舍弃高位数据。
js
示例: 0100 1111 1111 -> 1111 1111
// 舍弃了溢出部分 0100