从0到1学习nodejs(1)

2025-12-20 15:48:17      匈牙利世界杯

终于有点时间学习啦,今天是美好的周六,早上早起去了一趟健身房,然后去喝了免费的霸王茶姬!万里木兰很不错,推荐。又要开始学习啦,家人们,学习永无止境!!!

之前学的node也忘得差不多了,而且感觉学的不扎实,因为学了就忘,表明自己没有真正的理解到,所以要来一次0到1的学习😗😎。

夏天终于来了,好热好热。

这一篇拖了好久了因为最近工作真的太忙碌了,每天回家累的不行只想睡觉!

首先,我们要清楚一个概念,nodejs并不是一种编程语言,官方的说法是:

Nodejs是一个开源的,跨平台的JavaScript运行环境

Nodejs的作用

命令行

命令的结构:

常用命令:

小结:

嗯这就是比较基本的命令行,如果是dir /s那就是输出这个文件夹下的所有文件(包括子目录)

Nodejs注意事项

在nodejs中不能使用DOM和BOM的api

在浏览器中的JavaScript

nodejs中的JavaScript

像这些都是不可以的

但是可以使用global和globalThis顶级对象

计算机基本知识

下面老师又介绍了一些计算机的基础知识,比如一个软件运行的基本流程。

进程和线程

fs模块

fs是file system的简称,意为文件系统,这是nodejs中比较重要的模块,现在我们来学习一下

文件操作

writeFile(异步)

首先我们创建一个文件

代码语言:javascript复制const fs = require("fs");

fs.writeFile("./iWrite", "这是我添加的内容", (err) => {

if (err) {

console.log("写入失败");

return;

} else {

console.log("写入成功");

}

});OK这就写入成功了,如果再次执行,会覆盖之前的内容

writeFileSync(同步)

既然前面的writeFile是异步的,那么也有相应的同步方法,并且这个方法是没有回调函数的

代码语言:javascript复制const fs = require("fs");

fs.writeFileSync("./test", "同步写入");前面的方法会直接覆盖掉文件中的内容,下面的方法是追加写入:

appendFile(异步)

代码语言:javascript复制const fs = require("fs");

fs.appendFile("./iWrite", "这是追加的内容", (err) => {

if (err) {

console.log(err);

} else {

console.log("写入成功");

}

});

执行后:

其实前面的writeFile也可以实现追加,但是要添加配置flag为"a"

代码语言:javascript复制const fs = require("fs");

fs.writeFile(

"./iWrite",

"\r\n这是writeFile方法追加的内容",

{

flag: "a",

},

(err) => {

if (err) {

console.log(err);

} else {

console.log("写入成功");

}

}

);

追加的操作可以用于日志

createWriteStream流式写入

代码语言:javascript复制const fs = require("fs");

const ws = fs.createWriteStream("./日记");

ws.write("2/1 今天 xxxx \n");

ws.write("2/2 ...xxxx \n");

ws.write("2/3 ...xxxx \n");

ws.write("2/4 ...xxxx \n");

ws.close(); // 可加可不加文件写入的场景

文件读取

readFile

这个接收三个参数,其中回调函数接收error和读取到的数据,这个数据是一个buffer类型,可以使用toString转成字符。

代码语言:javascript复制const fs = require("fs");

fs.readFile("./日记", (err, data) => {

if (err) {

throw Error(err);

} else {

console.log("成功读取");

console.log(data.toString());

}

});文件读取的场景

流式读取

流式读取就是将内容一块一块的读取,每读取一块都会执行一次回调函数

代码语言:javascript复制const fs = require("fs");

const rs = fs.createReadStream("../dic/img.png");

rs.on("data", (chunk) => {

console.log(chunk);

});复制文件

方式一:

代码语言:javascript复制const fs = require("fs");

const data = fs.readFileSync("../dic/setup.exe");

fs.writeFileSync("../dic/setup-2.exe", data);方式二:流式

代码语言:javascript复制// 流式读取复制

const fs = require("fs");

const rs = fs.createReadStream("../dic/setup.exe");

const ws = fs.createWriteStream("../dic/setup-3.exe");

rs.on("data", (chunk) => {

ws.write(chunk);

});可以看到都是可以的

还有一种方式是比较少见的

代码语言:javascript复制rs.pipe(ws)文件的重命名和移动

rename(原路径,新路径,回调函数)

代码语言:javascript复制// 重命名

const fs = require("fs");

fs.rename("./h.txt", "./hhh.txt", (err) => {

if (err) {

console.log(err);

return;

} else {

console.log("重命名成功");

}

});

// 移动

const fs = require("fs");

fs.rename("./hhh.txt", "../dic/hhhh.txt", (err) => {

if (err) {

console.log(err);

return;

} else {

console.log("移动成功");

}

});

删除文件

unlink(删除路径,回调函数)

代码语言:javascript复制const fs = require("fs");

fs.unlink("./test", (err) => {

if (err) {

console.log("删除失败");

return;

} else {

console.log("删除成功");

}

});

rm(删除路径,回调函数)

代码语言:javascript复制const fs = require("fs");

fs.rm("./日记", (err) => {

if (err) {

console.log("删除失败");

return;

} else {

console.log("删除成功");

}

});文件夹操作

创建文件夹

代码语言:javascript复制const fs = require("fs");

fs.mkdir("./newDic", (err) => {

if (err) {

console.log(err);

return;

} else {

console.log("创建成功");

}

});还可以递归创建,需要多加一个属性

代码语言:javascript复制const fs = require("fs");

fs.mkdir("./a/b/c", { recursive: true }, (err) => {

if (err) {

console.log("创建失败");

return;

} else {

console.log("创建成功");

}

});读取文件夹

readdir(文件夹路径, 回调函数(错误, 返回的文件名))

代码语言:javascript复制const fs = require("fs");

fs.readdir("../dic", (err, file) => {

if (err) {

console.log(err);

return;

} else {

console.log(file);

}

});

删除文件夹

rmdic(文件路径, 回调函数)

代码语言:javascript复制const fs = require("fs");

fs.readdir("../dic", (err, file) => {

if (err) {

console.log(err);

return;

} else {

console.log(file);

}

});当然删除也有递归删除

代码语言:javascript复制const fs = require("fs");

fs.rmdir("./a", { recursive: true }, (err) => {

if (err) {

console.log("删除失败");

} else {

console.log("删除成功");

}

});

但是终端显示rmdir的递归删除会被遗弃,不推荐使用,推荐我们使用rm的方法

代码语言:javascript复制fs.rm("./a", { recursive: true }, (err) => {

if (err) {

console.log(err);

} else {

console.log("删除成功");

}

});查看资源状态

stat方法

代码语言:javascript复制const fs = require("fs");

fs.stat("./hello.js", (err, data) => {

if (err) {

console.log(err);

} else {

console.log(data);

}

});其中还有两个方法,可以判断这个资源是文件还是文件夹

分别是 isFile()和isDirectory()

代码语言:javascript复制const fs = require("fs");

fs.stat("./hello.js", (err, data) => {

if (err) {

console.log(err);

} else {

console.log(data.isFile()); // true

console.log(data.isDirectory()); // false

}

});

绝对路径

__dirname保存的是所在的文件的所在目录的绝对路径

注意看要怎么写才对

批量重命名

一定要注意,文件中的路径,都是相对于终端来说的,千万不要写错

总结:

文件读取文件读取顾名思义,就是通过程序从文件中取出其中的数据,我们可以使用如下几种方式:

方法

说明

readFile

异步读取

readFileSync

同步读取

createReadStream

流式读取

readFile 异步读取语法: fs.readFile(path[, options], callback)

参数说明:

path 文件路径options 选项配置callback 回调函数返回值:undefined

本文由“壹伴编辑器”提供技术支持readFileSync 同步读取语法: fs.readFileSync(path[, options])

参数说明:

path 文件路径options 选项配置返回值:string | Buffer

本文由“壹伴编辑器”提供技术支持

createReadStream 流式读取语法: fs.createReadStream(path[, options])

参数说明:

path 文件路径options 选项配置返回值:Object

本文由“壹伴编辑器”提供技术支持

文件写入文件写入就是将 数据 保存到 文件 中,我们可以使用如下几个方法来实现该效果

方法

说明

writeFile

异步写入

writeFileSync

同步写入

appendFile /appendFileSync

追加写入

createWriteStream

流式写入

writeFile 异步写入语法: fs.writeFile(file, data[, options], callback)

参数说明:

file 文件名data 待写入的数据options 选项设置 (可选)callback 写入回调返回值:undefined

本文由“壹伴编辑器”提供技术支持

writeFileSync 同步写入语法: fs.writeFileSync(file, data[, options])

参数与 fs.writeFile 大体一致,只是没有 callback 参数

返回值:undefined

本文由“壹伴编辑器”提供技术支持

appendFile / appendFileSync 追加写入

appendFile 作用是在文件尾部追加内容,appendFile 语法与 writeFile 语法完全相同

语法:

fs.appendFile(file, data[, options], callback)fs.appendFileSync(file, data[, options])返回值:二者都为 undefined

本文由“壹伴编辑器”提供技术支持

createWriteStream 流式写入语法: fs.createWriteStream(path[, options])

参数说明:

path 文件路径options 选项配置( 可选 )返回值:Object

本文由“壹伴编辑器”提供技术支持

文件移动与重命名在 Node.js 中,我们可以使用 rename 或 renameSync 来移动或重命名 文件或文件夹

语法:

fs.rename(oldPath, newPath, callback)fs.renameSync(oldPath, newPath)参数说明:

oldPath 文件当前的路径newPath 文件新的路径callback 操作后的回调本文由“壹伴编辑器”提供技术支持

文件删除在 Node.js 中,我们可以使用 unlink 或 unlinkSync 来删除文件

语法:

fs.unlink(path, callback)fs.unlinkSync(path)参数说明:

path 文件路径callback 操作后的回调 本文由“壹伴编辑器”提供技术支持

文件夹操作借助 Node.js 的能力,我们可以对文件夹进行 创建 、 读取 、 删除 等操作

方法

说明

mkdir / mkdirSync

创建文件夹

readdir / readdirSync

读取文件夹

rmdir / rmdirSync

删除文件夹

mkdir创建文件夹在 Node.js 中,我们可以使用 mkdir 或 mkdirSync 来创建文件夹

语法:

fs.mkdir(path[, options], callback)fs.mkdirSync(path[, options])参数说明:

path 文件夹路径options 选项配置( 可选 )callback 操作后的回调本文由“壹伴编辑器”提供技术支持

readdir 读取文件夹在 Node.js 中,我们可以使用 readdir 或 readdirSync 来读取文件夹

语法:

fs.readdir(path[, options], callback)fs.readdirSync(path[, options])参数说明:

path 文件夹路径options 选项配置( 可选 )callback 操作后的回调本文由“壹伴编辑器”提供技术支持

rmdir 删除文件夹在 Node.js 中,我们可以使用 rmdir 或 rmdirSync 来删除文件夹

语法:

fs.rmdir(path[, options], callback)fs.rmdirSync(path[, options])参数说明:path 文件夹路径options 选项配置( 可选 )callback 操作后的回调本文由“壹伴编辑器”提供技术支持

公司介绍
课是什么意思课的解释 课怎么读