蒙古网站群建设,网站建设技术部奖惩制度,网页如何制作出来的,怎么编辑自己的网站目录 Node.js入门
什么是Node.js
Node.js的作用
Node.js安装
Node.js编码注意事项
Buffer(缓冲器#xff09;
定义
使用
fs模块
概念
文件写入
文件读取
文件移动与重命名
文件删除
文件夹操作
查看资源状态
路径问题
path模块 Node.js入门
什么是Node.js
…目录 Node.js入门
什么是Node.js
Node.js的作用
Node.js安装
Node.js编码注意事项
Buffer(缓冲器
定义
使用
fs模块
概念
文件写入
文件读取
文件移动与重命名
文件删除
文件夹操作
查看资源状态
路径问题
path模块 Node.js入门
什么是Node.js
何为Node.js官方的定义是Node.js是一个开源的跨平台的JavaScript运行环境。简单的来讲Node.js就是一款应用程序是一款软件它可以运行JavaScript。
Node.js的作用
它的主要功能有开发服务器应用让我们可以通过向服务器发送请求服务器可以返回我们想要的数据。
开发工具类应用我们熟悉的WebpackVite以及Babel可以提高我们前端的开发效率与质量。而它们三者都是借助Node.js的开发能力而实现的。
开发桌面端应用比如我们熟悉的VScode它是借助electron框架实现的而electron又是借助与Node.js开发出来的。
Node.js安装
如何进行安装呢可以打开Nodo.js对应的官网Node.js。会出现以下的界面然后可以点击进行安装一般都是点击右边的因此左边的版本会长期维护也是官方推荐使用的。 但是由于Node.js官网是在国外因此可以下载会比较慢也可以直接访问国内的网站Node.js 中文网。下载方式相同还可以查看并选择之前的所有的Node.js版本CNPM Binaries Mirror。点击对应自己想要的版本下载即可。一路next下载完毕之后打开命令窗口输入node -v来进行判断是否安装成功若有输出版本即表示安装成功。
Node.js编码注意事项
在浏览器中的JavaScript包括两大块其一为核心语法ECMAScript。其二为Web API包括DOMBOMAJAXStorageconsole定时器以及alter等。而在Node.js中的JavaScript核心语法也是ECMAScript不同点在于它有属于自己的Node API包括fsurlhttputilconsole定时器path等。
在Node.js中不能使用BOM和DOM的API可以使用console和定时器API。Node.js中的顶级对象为global也可以用globalThis访问顶级对象。
Buffer(缓冲器
定义 Buffer 是一个类似于数组的对象 用于表示固定长度的字节序列。Buffer 本质是一段内存空间专门用来处理 二进制数据 。它的大小是固定的且无法调整。性能较好可以直接对计算机内存进行操作。每个元素的大小为 1 字节 byte 。 使用
创建的方式有如下的三种第一种使用Buffer.alloc。创建的时候会申请内存空间传入的数字为需要申请多少字节数的Buffer它会让每一个字节的值都为0。
第二种使用Buffer.allocUnsafe使用它是需要注意用它创建的buffer中可能会存在旧的数据可能会影响执行的结果但是它的创建速度会比使用Buffer.alloc快。
第三种是使用Buffer.from进行创建它可以传入字符串或者数组来进行创建Buffer。在控制台输出的是十六进制。 // 1.alloc
let bufBuffer.alloc(10);
console.log(buf);//Buffer 00 00 00 00 00 00 00 00 00 00
// 2.allocUnsafe
let buf2Buffer.allocUnsafe(10);
console.log(buf2);//Buffer 00 00 00 00 00 00 00 00 00 00
// 3.from
let buf3Buffer.from(hello);
let buf4 Buffer.from([105, 108, 111, 118, 101, 121, 111, 117]);
console.log(buf3)//Buffer 68 65 6c 6c 6f
console.log(buf4)//Buffer 69 6c 6f 76 65 79 6f 75 我们可以使用toString方法来将Buffer转为字符串。toString默认是按照utf-8编码方式来进行转换的。 let buf Buffer.from([105, 108, 111, 118, 101, 121, 111, 117]);
console.log(buf.toString())//iloveyou 除此之外我们也可以读取以及修改Buffer通过使用[ ]的方式来对数据进行处理。 let buf Buffer.from(hello);
// 读取下标为4的字符
console.log(buf[4])//111
// 对其进行修改
buf[4]98;
// 读取对应的字符串
console.log(buf.toString())//hellb 注意 如果修改的数值超过255 则超过 8 位数据会被舍弃 。 一个 utf-8 的字符一般 占 3 个字节。 fs模块
概念 fs 全称为 file system 称之为 文件系统 是 Node.js 中的 内置模块 可以对计算机中的磁盘进行操作。例如文件的创建、删除、重命名、移动以及文件内容的写入、读取等文件夹的相关操作。 文件写入 使用writeFile异步写入 它可以传四个参数file文件名data文件中需要写入的数据options选项设置可选以及callback写入回调。在回调函数中声明一个形参err当我们写入失败时err则是写入失败的错误对象若写入成功它等于null。 // 导入fs模块
const fsrequire(fs);
// 写入文件
fs.writeFile(./study.txt,今天学习Node.js,err{if(err){console.log(写入失败);return;}console.log(写入成功);
}); 当我们执行js文件之后我们就可以在同级的目录下创建一个名为study.txt里面编写了“今天学习Node.js”的txt文件。若本身该目录下就有对应的文件则它会重新编写里面的内容。 我们还可以采取writeFileSync进行文件的写入相比于writeFile方式它是一种同步的执行方式并且它只有三个参数没有最后一个回调函数的参数。写法如下 // 导入fs模块
const fsrequire(fs);
fs.writeFileSync(./study.txt,这是一个同步的写入) 补充可能有一些小伙伴对同步以及异步还不太清楚说白了同步就是顺序的执行主线程 会等待其他线程的执行结果然后再继续执行主线程的代码效率较低。而异步不是顺序执行的。主线程不会等待其他线程的执行结果直接执行后续的主线程代码效率较高。 那你有没有想过若我们想要在原本的文件中继续编写东西不覆盖原先编写的内容那我们该如果实现呢我们可以使用到前面介绍的writeFile方法在第三个参数中设它的配置项为flag:a即可实现文件内容的追加。 // 导入fs模块
const fsrequire(fs);
// 写入文件
fs.writeFile(./study.txt,并且发布一篇博客!,{flag:a},err{if(err){console.log(写入失败);return;}console.log(写入成功);
}); 除了使用以上的方式进行追加还可以使用appendFile / appendFileSync 进行追加写入。appendFile 语法与 writeFile 语法完全相同。都是异步的而appenFileSync则与writeFileSync相似都是同步的。不同点在与一个是写入一个是进行追加。 // 导入fs模块
const fsrequire(fs);
// 使用appendFile写入文件
fs.appendFile(./study.txt,并且发布一篇博客!,err{if(err){console.log(写入失败);return;}console.log(写入成功);
});
//使用appendFileSync
fs.appendFileSync(./study.txt,然后睡觉);
// 若想要换行使用/r/n
fs.appendFileSync(./study.txt,\r\n然后睡觉); 接一下在介绍一种文件写入方法createWriteStream 流式写入流式写入方式适用于大文件写入或者频繁写入的场景, writeFile 适合于 写入频率较低的场景。 // 导入fs模块
const fsrequire(fs);
// 创建写入流对象
const wsfs.createWriteStream(./study.txt);
// write
ws.write(前天学习Webpack\r\n);
ws.write(昨天学习ES6\r\n);
ws.write(今天学习Node.js\r\n);
//关闭通道可写可不写
ws.close(); 最后文件写入有哪些应用场景呢下载文件、安装软件 、保存程序日志如 Git 、编辑器保存文件 、视频录制都使用到了文件的写入。当需要持久化保存数据的时候应该想到文件写入。 文件读取 Node.js也提供了一些读取文件的方式第一种方式可以使用readFile 异步读取其接收三个参数path 文件路径 options 选项配置可写可不写 callback 回调函数。回调函数有两个参数err以及data,第一个是接受读取失败的对象第二个参数则是读取到的文件的数据。 第二种方式可以使用readFileSync同步读取进行同步读取。只接受两个参数path 文件路径 options 选项配置可选。 // 导入fs模块
const fsrequire(fs);
// 使用readFile进行异步读取
fs.readFile(./study.txt,(err,data){if(err){console.log(读取失败);return;}// 使用toString()转为了字符串console.log(data.toString());
});
//使用readFileSync同步读取
let datafs.readFileSync(./study.txt);
console.log(data.toString()); 除了以上的两种方式可以读取文件还可以使用createReadStream 流式读取。它接受两个参数path 文件路径 options 选项配置可选。它不是将文件中的数据一次性读取出来的而是一块一块地进行读取。适用于读取大的文件对大文件进行处理。它每一个chunk可以读取65536字节64KB大小的数据。 // 导入fs模块
const fsrequire(fs);
// 创建读取流对象
const rsfs.createReadStream(./study.txt);
//绑定data事件
rs.on(data,chunk{console.log(chunk.length);
})
//绑定end事件。可选
rs.on(end,(){console.log(读取完毕);
}); 文件读取的应用场景有很多比如电脑开机 、程序运行 、编辑器打开文件 、查看图片 、播放视频 、播放音乐 、Git 查看日志 、上传文件 以及查看聊天记录等。 文件移动与重命名 在 Node.js 中我们可以使用 rename 或 renameSync 来移动或重命名文件或文件夹。 fs.rename该方法是异步的接收三个参数 oldPath 文件当前的路径、 newPath 文件新的路径、 callback 操作后的回调。而fs.renameSync是同步的并且只接收前两个参数没有回调函数参数。 // 导入fs模块
const fsrequire(fs);
// 调用rename方法修改名字
fs.rename(./study.txt,./play.txt,err{if(err){console.log(操作失败);return;}console.log(操作成功);
});
//调用rename方法来移动文件
fs.rename(./play.txt,./课程代码/paly.txt,err{if(err){console.log(操作失败);return;}console.log(操作成功);
});// 调用renameSync方法修改名字
fs.renameSync(./paly.txt,./study.txt); 文件删除 当我们需要删除文件时我们可以使用Node.js提供的unlink 方法以及rm方法。两个方法的接受参数都相同path 文件路径 callback 操作后的回调。它们都有对应的同步方法unlickSync以及rmSync。在此就只对它们的异步方法进行演示。 // 导入fs模块
const fsrequire(fs);
//调用unlink方法
fs.unlink(./study.txt,err{if(err){console.log(删除失败);return;}console.log(删除成功)
});
//调用rm方法
fs.rm(./study.txt,err{if(err){console.log(删除失败);return;}console.log(删除成功)
});文件夹操作 Node.js 除了可以对文件进行操作之外我们还可以对文件夹进行 创建 、 读取 、 删除 等操作。 首先在 Node.js 中我们可以使用 mkdir 或 mkdirSync 来创建文件夹。mkdir方法接受三个参数 path 文件夹路径 、options 选项配置 可选 、callback 操作后的回调。而mkdirSync只接受前两个参数。前者为异步方法后者为同步方法。 // 导入fs模块
const fsrequire(fs);
//使用mkdir创建单个文件夹
fs.mkdir(./Node.js,err{if(err){console.log(创建失败);return;}console.log(创建成功)
});
//使用递归创建
fs.mkdir(./a/b/c,{recursive:true},err{if(err){console.log(创建失败);return;}console.log(创建成功)
}); 当我们需要在创建的文件夹下面再创建文件夹时我们就需要使用到mkdir方法的第二个参数通过设置{recursive:true}让其可以实现递归创建。 在 Node.js 中我们可以使用 readdir 或 readdirSync 来读取文件夹。readdir 接受三个参数 path 文件夹路径、options 选项配置 可选 以及callback 操作后的回调。回调有两个形参err以及data,err接受失败的对象data为接受成功时的数据将读取到的文件夹中存在的文件的名称以数组的形式输出。 // 导入fs模块
const fsrequire(fs);
fs.readdir(./,(err,data){if(err){console.log(读取失败);return;}console.log(data);
}); 在 Node.js 中我们可以使用 rmdir 或 rmdirSync 来删除文件夹。rmdir方法接受三个参数path 文件夹路径、options 选项配置 可选 以及callback 操作后的回调。若想要进行递归地删除文件夹需要设置第二个参数为:{recursive:true}。但是不推荐使用rmdir进行递归地删除因为运行之后会有警告。所以若想要进行递归删除可以使用 rm 来进行操作使用方式也rmdir相同。 // 导入fs模块
const fsrequire(fs);
//使用rmdir进行删除
fs.rmdir(./Node.js,err{if(err){console.log(删除失败);return;}console.log(删除成功);
})
//使用rmdir进行递归删除(不推荐)
fs.rmdir(./a,{recursive:true},err{if(err){console.log(删除失败);return;}console.log(删除成功);
})
//使用rm进行递归删除推荐
fs.rm(./a,{recursive:true},err{if(err){console.log(删除失败);return;}console.log(删除成功);
}) 查看资源状态 我们可以使用 stat 或 statSync 来查看资源的详细信息 ,stat 接受三个参数path 文件夹路径、options 选项配置 可选 、callback 操作后的回调。 // 导入fs模块
const fsrequire(fs);
//stat方法
fs.stat(./study.txt,(err,data){if(err){console.log(err);return;}// 输出资源的状态console.log(data);//用于判断该资源是否为文件console.log(data.isFile());//用于判断该资源是否为文件夹console.log(data.isDirectory());
}) 路径问题 fs 模块对资源进行操作时路径的写法有两种相对路径以及绝对路径。 // 导入fs模块
const fsrequire(fs);
//相对路径
fs.writeFileSync(./index.html,N-A);
//绝对路径
fs.writeFileSync(D:/index.html,N-A) 但是需要注意的是相对路径中所谓的当前目录 指的是命令行的工作目录 而并非是文件的所在目录。所以当命令行的工作目录与文件所在目录不一致时会出现一些 BUG。 因为我们引入了 __dirname 。__dirname 与 require 类似都是 Node.js 环境中的全局变量。__dirname 保存着 当前文件所在目录的绝对路径 可以使用 __dirname 与文件名拼接成绝对路径。 // 导入fs模块
const fsrequire(fs);
let data fs.readFileSync(__dirname /study.txt);
console.log(data); 使用 fs 模块的时候尽量使用 __dirname 将路径转化为绝对路径这样可以避免相对路径产生的 Bug。 path模块 path 模块提供了 操作路径 的功能以下是它较为常用的几个 API API 说明 path.resolve拼接规范的绝对路径 常用path.sep获取操作系统的路径分隔符path.parse解析路径并返回对象path.basename获取路径的基础名称path.dirname获取路径的目录名path.extname获得路径的扩展名 // 导入fs模块
const fsrequire(fs);
const pathrequire(path);
//resolve 会使得路径的分隔符统一解决了__dirname拼接之后路径不太规范的问题。
console.log(path.resolve(__dirname,./index.html));//D:\编程\前端\index.html
//sep
console.log(path.sep);// windows下为 \ Linux下为 /
//parse方法可以对路径进行解析返回一个对象:root,dir,base,ext以及name
//先通过__filename获取当前文件的绝对路径
let str__filename;
console.log(path.parse(str));//返回一个对象:root,dir,base,ext以及name
//basename
console.log(path.basename(str));//index.js
//dirname
console.log(path.dirname(str));//D:\编程\前端
//extname
console.log(path.extname(str));//.js好啦Node.js的介绍就先到这里了接下来还会持续更新拜拜