Modular
- No es necesario instalar el módulo integrado, es necesario instalar el módulo externo;
este archivo es un módulo personalizado
require ("./ home"); // Es necesario agregar el mismo directorio de nivel del módulo personalizado ./
El módulo integrado de nombre de archivo del siguiente archivo
require ("tt"); // Almacenar en node_modules y ejecutar de acuerdo con las reglas de los módulos incorporados.
administrador de paquetes npm (alias: administrador de módulos)
Comandos comunes de npm:
- npm init: guía para crear un archivo package.json
- npm root para ver la ruta de instalación del paquete actual o mediante npm root -g para ver la ruta de instalación global;
- npm -v ver versión
- Nodo -v libro de versiones del nodo
- npm i jquery --save
- cliente de cookies npm i
- npm i axios --save-dev
npm i axios --save-dev Esta es la dependencia de desarrollo
"dependencias" en package.json : {// Ejecuta la dependencia
"jquery": "^ 3.6.0" // npm i jquery --save
},
"devDependencies": {}, // Dependencias de desarrollo
npm install module_name -S o --save significa npm install module_name --save escribe dependencias
npm install module_name -D o --save-dev significa npm install module_name --save-dev escribe devDependencies
módulo fs
- fs es un módulo de operación de archivos. Todas las operaciones de archivos se dividen en síncronas y asincrónicas. La característica es que la sincronización agregará "Sync", como: archivo de lectura asíncrona "readFile", archivo de lectura síncrona "readFileSync";
Una comprensión preliminar del módulo fs
//fs:操作文件的模块 内置模块
const fs = require("fs");
> 增删改查
1. 文件操作 2. 目录操作
1. Operación de archivos
- Escribir archivo
writeFile ():
parámetro de archivo de escritura 1: nombre de archivo, incluido el
parámetro de formato de archivo 2: archivo, contenido a escribir
fs.writeFile("1.txt", "我是需要写入的文件", function(err) {
if (err) {
return console.log(err); //输出报错信息
}
console.log("写入成功");
});
Cuando exista el archivo escrito, el contenido del archivo original se sobrescribirá y los parámetros
{flag: "a"} también serán {flag: "a"}
parámetro 3. Objeto de configuración {}: atributo flag: a se agrega para escribir
w: escribir (valor predeterminado)
r: Leer
fs.writeFile("1.txt", "我是追加进来的内容", {
flag: "w" }, function(err) {
if (err) {
return console.log(err); //输出报错信息
}
console.log("写入成功");
});
Archivo leído fs.readFile
冷门方式
fs.readFile("1.txt",(err,data)=>{
if(err){
return console.log(err);
}
console.log(data.toString());
})
fs.readFile():
回调函数中 参数1:错误的信息
"utf-8"
fs.readFile("1.txt", "utf-8", (err, data) => {
if (err) {
return console.log(err);
}
console.log(data);
})
所有的文件操作,默认都有同步和异步;
默认是同步的,需要异步的话,在方法名前加Sync
例如:readFileSync();
fs.readFileSync("1.txt", "utf-8");
console.log(data);
// let data = fs.readFileSync("1.xtx").toString();
// console.log(data);
/ Cambiar nombre de archivo: Cambiar nombre
// Parámetro 1: Nombre de archivo original
// Parámetro 2: Nombre de archivo nuevo
fs.rename("1.txt", "11.txt", err => {
if (err) {
return console.log(err);
}
console.log("修改成功");
});
Eliminar archivo - fs.unlink ("")
fs.unlink("2.txt", err => {
if (err) {
return console.log(err);
}
console.log("删除成功");
})
Copiar archivos
fs.copyFile();
1.本质是先读取,再写入
fs.copyFile("11.txt", "aa.txt", err => {
if (err) {
return console.log(err);
}
console.log("复制成功");
})
2.封装复制
function myCopyFile(src, dest) {
fs.writeFileSync(dest, fs.readFileSync(src));
}
myCopyFile("11.txt", "4.txt");
2: Operación de directorio
No se requiere formato de sufijo al manipular directorios
创建目录
fs.mkdir("ding", err => {
if (err) {
return console.log(err);
}
console.log("创建成功");
})
修改目录名称
fs.rename("ding", "da", err => {
if (err) {
return console.log(err);
}
console.log("修改成功");
})
读取目录
fs.readdir("da", (err, data) => {
if (err) {
return console.log(err);
}
console.log(data);//读出来的是一个数组
})
删除目录(空目录/空文件夹)
fs.rmdir("da", err => {
if (err) {
return console.log(err);
}
console.log("删除成功");
})
判断文件或目录是否存在
fs.exists("5.txt", function(exists) {
console.log(exists); //是否找到指定内容 找到就是true找不到就是false
})
//获取文件或目录的详细信息
fs.stat("http.html", (err, data) => {
if (err) {
return console.log(err);
}
console.log(data);
// // ¿Es un archivo
// let res = data.isFile ();
// console.log (res);
// // Es un directorio
// data.isDirectory ();
})
Eliminar directorios que no estén vacíos
Ideas: 1. Primero
elimine los archivos del directorio. 2. Cuando sepa que el directorio está vacío, elimínelo directamente.
function removerDir(path) {
//获取目录
let data = fs.readdirSync(path);
//["a",2.html","3.txt","4.txt"]
// console.log(data)
//总体思路
for (let i = 0; i < data.length; i++) {
//循环判断目录中的每一个内容
//处理子目录的路径
let url = path + "/" + data[i];
/*
循环1: url = "22/a"
循环2:下来就是a文件 然后时a文件下面的所有内容
*/
//获取详细信息
let stat = fs.statSync(url);
console.log(stat.isDirectory());
if (stat.isDirectory()) {
//如果是目录 继续查找
removerDir(url);
} else {
//文件,删除
fs.unlinkSync(url); // path = 22
}
}
//当循环结束后,目录成为空目录
fs.rmdirSync(path);
}
//注意事项:在使用node.js删除文件时,不会经过回收站
// 在删除前, 切记备份
// 一面删除错误,发生不可挽救的损失
removerDir("22");
Presta especial atención a estos dos lugares
El búfer de los datos del búfer también es una clase, no un módulo
- La forma en que se crea ahora
- Parámetros: es el tamaño del contenido, en bytes.
dejar buffer = Buffer.alloc (10); console.log (búfer);
- El búfer convertirá los datos a binarios y luego los mostrará en formato hexadecimal
let buffer = Buffer.from (“大家 好”); console.log (búfer);
let buffer1 = Buffer.from([0xe5, 0xa4, 0xa7, 0xe5, 0xae, 0xb6, 0xe5, 0xa5, 0xbd]);
这里要注意的是上面的参数要以这种0xe5, 才会转换为字符串
console.log(buffer1); <Buffer e5 a4 a7 e5 ae b6 e5 a5 bd>
console.log(buffer1.toString())大家好
let buffer2 = Buffer.from("大家好");
console.log(buffer2)
/字符串创建
//StringDecoder: 固定名称
let {
StringDecoder } = require("string_decoder");
let decoder = new StringDecoder();
let res1 = decoder.write(buffer1);
let res2 = decoder.write(buffer2);
console.log(res1 + res2);
Arroyo
- Secuencia: la transmisión y el procesamiento de datos son inseparables
//stream 流
const fs = require("fs");
//读取了数据
let rs = fs.createReadStream("11.txt");
//将数据写入
let ws = fs.createReadStream("aa.txt");
//管道
rs.pipe(ws);
console.log(rs);
//流 ,会把数据分成64kb的小文件传输
let num = 0;
let str = "";
//数据传输时,触发的方法
rs.on("data", chunk => {
console.log(chunk);
num++;
str += chunk;
console.log(chunk);
console.log(num)
})
//数据传递完成后
rs.on("end", () => {
console.log(str)
})