Node.js之系统模块
1. 什么是系统模块
Node运行环境提供的API. 因为这些API都是以模块化的方式进行开发的, 所以我们又称Node运行环境提供的API为系统模块。
文件模块(fs)分为三种:读取文件、写入文件、创建文件夹。
2. 系统模块 fs 的操作
语法:const fs = require(‘fs’)
1.读取文件内容
语法:fs.reaFile ( ' 文件路径/文件名称 ' [ ,' 文件编码 ' ] , callback );
应用场景:当客户端访问服务器端的时候,请求index.html首页,服务器需要先在他的硬盘中找到该文件并读取文件的内容,再将文件的内容返回给客户端。
回调函数的作用:当前API是读取文件内容的API,是硬盘读取文件内容,读取是需要时间的不能通过API的返回值直接拿到文件的读取结果,当读取完成后,通过调用函数,通过函数的参数方式来传过来。
回调函数的两个参数:a) . err 如果读取文件发生错误,错误信息会存在err对象里,如果没有错误则err为空。b) .doc读取的结果。
nodejs的回调函数一般称为错误优先的函数。
案例:
const fs = require('fs') //导入fs模块
fs.readFile('./1-hellonodejs.js', 'utf8', (err, doc) => {
if (err == null) { //如果err里没有错误对象
console.log(doc); //输出文件内容
console.log(err); //此时err为空
}
})
2.写入文件内容
语法:fs.writeFile ( ' 文件路径/文件名称 ' , ' 数据 ' , callback );
应用场景:监控网站在运行过程中是否有报错的情况,当程序运行报错时,将错误写入错误日志中,写入到一个文件当中。
回调函数的作用与读取一样,写入文件也是需要时间的。
案例:
const fs = require('fs') //导入fs模块
let text = '写入成功'
fs.writeFile('./demo.tet', text, err => {
if (err !== null) { //如果err不等于null,则说明写入失败
console.log(err);
return //中止后面操作
}
console.log('成功'); //否则就写入成功
})
3. 系统模块 path 路径操作
为什么要进行路径拼接:
不同操作系统的路径分隔符不统一,window的时 / 与 \ ,Linux只是 \ 。
为什么考虑Linux系统:
Linux通常被用作网站的服务器,现在所写的代码以后可能会运行在Linux系统下。
语法:path . join ( ' 路径 ' , ' 路径 ' , ...)
案例:
const path = require('path') //调用path模块
let finial = path.join('computer', 'hulili', 'love')
//路径拼接不属于耗时操作可以通过返回值来接受拼接的结果
console.log(finial); //computer\hulili\love
4. 相对路径VS绝对路径
大多数情况下使用绝对路径,因为大多数形况下相对路径相对的都不是当前文件而相对的是命令行工具的当前工作目录。
1.在读取文件或设置文件路径时基本都会选择绝对路径。
2.如果命令行当前工作目录和文件所在目录处在同一目录,使用相对路径没有问题。
3.如果命令行当前工作目录和文件所在目录不处在同一目录,使用相对路径则会报错,使用绝对路径才会执行。
例如:当前文件在E:\nodejs,如果命令行工具当前的工作目录在E:\nodejs>下,则可执行,如果命令行工具当前的工作目录在E:\ >下,则会报错。
const fs = require('fs')
//文件存储在E:/nodejs文件夹中,使用相对
//路径读取当前文件夹下的1-hellonodejs.js
fs.readFile('./1-hellonodejs.js', 'utf8', (err, doc) => {
console.log(err);
console.log(doc);
})
如何使用绝对路径
使用__dirname获取当前文件所在的绝对路径,涉及路径拼接。
const fs = require('fs')
const path = require('path')
fs.readFile(path.join(__dirname,'1hellonodejs.js'),'utf8',(err,doc) => { //获取1-hellonodejs.js的所在的目录
console.log(err);
console.log(doc);
})
![使用绝对路径后,不在当前工作目录下也可以正常运行](https://img-blog.csdnimg.cn/20210513125228837.png)