【Node.js】笔记整理 1 - 基础知识

写在最前:跟着视频学习只是为了在新手期快速入门。想要学习全面、进阶的知识,需要格外注重实战和官方技术文档,文档建议作为手册使用

系列文章

本文目录

前言

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
相关推荐
YLCHUP2 小时前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论
某哈压力大4 小时前
SSH 突然 Connection reset?不是密钥坏了,是 OpenSSL 把 sshd 干趴了
前端·node.js·命令行
旖旎夜光4 小时前
【C++ 基础入门】C++11 新特性(中):右值引用、移动语义与完美转发
开发语言·c++·笔记·学习
回眸&啤酒鸭5 小时前
【回眸】Node.js 新手从零到一实战指南
node.js
浪遏12 小时前
recruitment-cli:让 AI 接手求职招聘,从架构到一次发送超时
架构·typescript·node.js
星恒随风15 小时前
MySQL 从零入门(五):MySQL 内置函数详解——日期、字符串、数学函数与实战案例
linux·数据库·笔记·sql·mysql
2603_9696948518 小时前
【JavaWeb学习记录】MyBatis核心知识点与实战笔记:从入门到动态SQL
笔记·sql·学习·mysql·mybatis·javaweb·学习方法
可乐ea18 小时前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统
Go Work1 天前
两个等值条件摆着,MySQL 偏要全表扫
经验分享·笔记
Oll Correct1 天前
Adobe illustrator 案例十四:花元素标志草图绘制
笔记·ui·adobe·illustrator