手把手带你使用Node.js进行开发(二):node常用的内置模块
引入
Node.js提供了一系列的内置模块,这些模块不需要安装就可以在node中使用,给我们提供了许多功能。今天我们就先讲讲其中比较常用且基础的内置模块。
fs文件系统模块
fs是Node.js内置的一个文件系统模块,它提供了一系列的方法和属性,让我们可以对文件进行操作。我们首先需要在项目中引入它才可以正常使用:
const fs = require('fs');
下面是一些fs的方法和属性:
1.读取文件:
fs.readFile(path, options, callback)
--- 用来读取指定文件中的内容,这是一个异步方法,所以需要接收一个回调函数来处理结果。其中,第一个参数path
是要读取的文件的路径。第二个参数options
是一个可选参数,表示你想以什么样的编码格式来读取文件,默认是undefined
,表示以Buffer流的形式返回文件内容。第三个参数callback
是一个回调函数,它接收两个参数err
和data
,分别表示文件读取失败的结果和成功的结果。
fs.readFile('./text.js', 'utf8', (err, data) => {
console.log(err);
console.log(data);
})
这里我们假设在该文件的同级有一个text.js文件,如果读取成功,则err值为null
,data值为文件内的数据。如果读取失败,则err值为错误信息,data值为undefined
。
fs.readFileSync(path, options)
--- 这同样是一个读取文件内容的方法,不同的是这个方法是同步的。它接收的参数和fs.readFile()
一样,只是它不用接收回调函数。
2.写入文件:
fs.writeFile(path, data, options, callback)
--- 用来向指定文件中写入内容,这是一个异步方法。path
值是文件的存放路径,data
值是要写入的内容。options
同样是一个可选择参数,表示你想以什么的编码格式写入文件,默认是utf-8格式。callback
回调函数可以接收一个参数err,用于判断是否写入成功,如果成功则值为null,失败则值为错误信息。fs.writeFileSync(path, data, options)
--- 这个方法同样是向文件中写入内容的,但他是同步的。接收的参数和异步方法是一样的。
3.创建目录:
fs.mkdir(path, options, callback)
--- 用来创建一个目录,这是一个异步方法。path
值为目录路径,options
是一个可选择参数,可以设置{recursive: ture, mode: 0o755}
,这样就可以递归创建目录(recurive)和设置权限(mdoe),它们默认为false和0o777。callback
可以接收参数err,用来获取错误信息。fs.mkdirSync(path, options)
--- 是创建目录的同步方法。
4.检查文件或目录是否存在:
在项目中检查文件或目录是否存在的方法可以和创建目录方法一起使用。
- 同步方法:fs.exsitsSync和fs.accessSync。
fs.existsSync
: 这个方法接收一个参数path
,即文件路径,它会返回一个布尔值表示文件或目录是否存在fs.accessSync
: 这个方法更通用,因为它不光可以检查文件或目录是否存在,还可以检查其权限。它接收两个参数path
和recursive
,path表示文件路径,recursive表示想要检查的权限:
fs.constants.F_OK
: 文件存在即可fs.constants.R_OK
: 文件可读fs.constants.W_OK
: 文件可写fs.constants.X_OK
: 文件可执行 你也可以用|
将这些权限组合起来以同时检查多种权限
- 异步方法: fs.stat和fs.access
fs.stat
接收两个参数path
和callback
,它不光可以检查文件或目录是否存在,还能查看文件信息。path表示文件路径,callback接收两个参数err和stats。如果发生错误,则err会接收错误信息,如果成功,stats会被设置为一个对象,包含了文件状态信息。fs.access
也可以异步检查文件是否存在及其权限,它可以比fs.accessSync多接受一个回调函数callback,用于返回错误信息。
path文件路径模块
path内置模块用于处理文件和目录的路径,它提供了一系列处理路径字符串的方法。在使用前我们同样需要使用require引入它
const path = require('path')
下面是几个常用的方法:
1.连接路径:
path.join()
--- 这个方法用于将多个路径连接成一个路径。
path.join('/user', 'home', 'login'); // '/user/home/login'
2.解析为绝对路径:
path.resolve()
--- 这个方法可以将路径片段解析为绝对路径,它可以处理相对路径,将其转换为绝对路径。
- 如果没有提供任何参数,
path.resolve()
将返回当前工作目录的绝对路径。 - 如果提供了至少一个绝对路径,
path.resolve()
将从该绝对路径开始解析后续的相对路径。 - 如果所有路径都是相对路径,
path.resolve()
将从当前工作目录开始解析。
3.获取目录:
path.dirname()
--- 这个方法用于获取指定路径的目录。
const path = require('path')
const directory = path.dirname('user/home/text/demo.text') // user/home/text
在node中,还有一个全局变量__dirname
,它表示当前文件所在的完整目录路径。假设你有一个文件demo.js
,它的路径位于/user/home/index/
,那么当你打印输出__dirname时,控制台将会输出/user/home/index
http模块
http模块用于搭建服务器端和客户端,但它本身不提供加密功能,如果你有需要安全传输的数据,则需使用https内置模块。
1.引入:
const http = require('http')
2.创建http服务器:
const http = require('http');
http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/html');
res.end('<h1>Hello World!<h1>');
}).listen(3000);
http.createServer()
---是用来创建一个http服务器实例的,它可以接收一个请求处理函数,每当有收到请求时就会执行这个函数。 这个函数接收了两个参数req
和res
,这其实是两个对象,req对象包含了请求的所有信息,res则包含了从服务器返回的数据。res.statusCode
--- 设置响应的状态码,设置为200则表示请求成功,已返回数据。res.setHeader
--- 用于设置响应头。这里将响应头中的Content-Type
字段设置为text/html
,表示响应内容的类型为HTML。响应头中还有其他字段,如Content-Length
等。res.end
--- 表示结束HTTP响应,并发送<h1>Hello World!<h1>
作为响应内容,因为已经设置了相应内容的类型,所以这里的<h1>
将会被当成html标签被解析。.listen(3000)
--- 表示监听端口3000
总结
以上就是node中那些常用的内置模块,其实node中还有很多内置模块,后面需要用到的时候还会继续带大家了解。后面的内容还会为大家带来Koa框架的相关知识,希望能对大家有帮助!!
转载自:https://juejin.cn/post/7397323474271535138