本次内容主要讲解nodejs内置模块的使用。
动态启动服务器
#下载工具
npm i -g nodemon
#终端执行文件
nodemon 要执行文件路径
内置模块
http模块
创建一个js文件并导入http模块
//引入http模块
const http = require("http")
//创建http服务器
const server = http.createServer((req, res) => {
//req接收浏览器传的参数 res返回渲染内容
//设置数据格式
res.writeHead(200, {'Content-Type': 'application/json'})
//以json格式输出一句话到浏览器上
res.write(JSON.stringify({
data: "hello world"
}))
//res.end() 表示输出内容全都输出完毕,如果不加这行他就会一直等待你做输出
res.end()
})
//设置http服务器端口
server.listen(8000, () => {
console.log("服务器成功运行")
})
创建完成http服务器后,我们就需要对http服务器来做一个简单操作
req.url
req.url:获取请求的网页url路径
//引入http模块
const http = require("http")
//创建http服务器
const server = http.createServer((req, res) => {
//获取请求的路径
console.log(req.url)
res.writeHead(200,{'Content-Type':"application/json"})
res.write(req.url)
res.end()
})
//设置http服务器端口
server.listen(8000, () => {
console.log("服务器成功运行")
})
url模块
url模块可以用于解析url路径
const url=require("url")
//url.parse()可以接受两个参数
// 第一个参数是需要解析的一个路径url
// 第二个参数是一个Boolean类型,默认为false,代表是否将query的返回值转换为对象object类型
// 如果第二个参数为false,则query返回的是一个字符串
// 如果query只返回一个字符串的话,不利于我们后续获取前端传来的值,所以推荐将parse()函数的第二个参数设置为true
console.log(url.parse("http://localhost/list?a=1"));
console.log("=============================")
//设置query返回值类型为object
console.log(url.parse("http://localhost/list?a=1",true));
url.parse返回的对象如下,可以通过调用对象属性获取里面的值
Url {
protocol: 'http:',
slashes: true,
auth: null,
host: 'localhost',
port: null,
hostname: 'localhost',
hash: null,
search: '?a=1',
query: 'a=1',
pathname: '/list',
path: '/list?a=1',
href: 'http://localhost/list?a=1'
}
querystring模块
parse
//querystring会将我们的url中传入的参数拆分为对象形式
const querystring=require("querystring")
let str="a=10&b=20"
const result=querystring.parse(str)
console.log(result)
返回一个对象
stringify模块
const querystring=require("querystring")
const test={
a:1,
b:2,
c:3
}
const res2=querystring.stringify(test)
console.log(res2)
将对象中的属性进行拼接,返回一个字符串
Event事件模块
const eventEmitter=require("events")
const event=new eventEmitter()
//事件函数通过data获取emit函数传来的值
event.on("click",(data)=>{
console.log("事件被触发了",data)
})
//emit函数用于自动触发事件,第一个参数是监听的函数名,第二个参数可以传入数据到监听的事件函数中
event.emit("click","test data")
fs模块
fs模块是对文件或目录进行操作的模块
mkdir创建文件夹
const fs = require("fs")
// 创建文件夹
fs.mkdir("./fileCollection", (err) => {
console.log(err)
})
rename对文件夹或文件重命名
const fs = require("fs")
//对文件夹进行重命名
fs.rename("./fileCollection", "./fileC", (err) => {
console.log(err)
})
rmdir删除文件夹
const fs = require("fs")
// 删除文件夹
fs.rmdir("./fileC", (err) => {
console.log(err)
})
writeFile对文件进行写操作(文件不存在则会自动创建)
const fs = require("fs")
//写内容到文件中
fs.writeFile("./test.txt", "hello,I love NodeJs.", (err) => {
console.log(err)
})
appendFile对指定文件进行追加内容
const fs = require("fs")
//追加内容到指定文件
fs.appendFile("./test.txt", "I also love Vue.", (err => {
console.log(err)
}))
readFile读取文件内容
const fs = require("fs")
//读取文件内容
//第一个参数是报错信息,第二个参数是读取到的文件内容
fs.readFile("./test.txt", (err, data) => {
//如果有报错信息就打印,没有就不打印
if (err) {
console.log(err)
}
//这里注意,由于获取到的data为Buffer,直接打印返回的不是字符串,所以我们需要将它转换为字符串
console.log(data.toString())
})
unlink删除指定文件
const fs = require("fs")
//删除文件
fs.unlink("./test.txt",(err => {
console.log(err)
}))
readdir读取文件目录下的所有文件或文件夹
const fs = require("fs")
//读取目录下的所有文件或目录
fs.readdir("../Test1", (err, data) => {
if (err) console.log(err)
console.log(data)
})
stat展示文件或者文件夹的详细信息
const fs = require("fs")
//查看文件或目录信息
fs.stat("./st3.js",(err,status) => {
if(err) console.log(err)
//判断是否为文件
console.log(status.isFile())
})
stream
stream是搭配着fs使用的
readStream
const fs = require("fs")
//打开一个流
var rs=fs.createReadStream("./test.txt","utf-8")
//这里是对数据进行监听事件,返回数据
rs.on('data',function (chunk) {
console.log(chunk)
})
//这里是对读取数据事件监听,当读取完成后,调用该事件
rs.on("end",()=>{
console.log("end")
})
//这里对读取文件做监听,如果有报错,则走这个监听,返回报错信息
rs.on("error",(err => {
console.log(err)
}))
writeStream
const fs = require("fs")
//创建一个写入流
var rs2=fs.createWriteStream("./test.txt")
rs2.write("你好",(error => {
console.log(error)
}))
test.txt文件写入后结果
你好
pipe管道
pipe可以用于文件内容复制到其他文件的操作
如:我们需要将test1.txt文件中的内容全部读取并写入到test2.txt文件中
test1.txt文件内容如下
弱小和无知,不是生存的障碍,傲慢才是。
具体代码如下:
const fs = require("fs")
//指定读取文件的路径
const readStream = fs.createReadStream("./test1.txt");
//指定写入文件的路径
const writeStream = fs.createWriteStream("./test2.txt");
//将读取流读取到的数据全部通过管道传输给输出流,让其输出到指定文件
//pipe() 参数:需要一个输出流作为参数
readStream.pipe(writeStream)
zlib模块
zlib模块主要用于压缩文件使用的.
const fs = require("fs")
//导入zlib模块
const zlib = require("zlib")
//创建gzip压缩格式
const gzip = zlib.createGzip()
//创建输入输出流
const readStream = fs.createReadStream("./test.txt", "utf-8")
const writeStream = fs.createWriteStream("./test2.txt", "utf-8")
//pipe()函数是管道,相当于把刚刚读出来的信息全部都写到另一个文件中
//这里在他写入之前进行了一次gzip加密,所以输出后整体的数据会被压缩,输出的文件中会出现乱码,说明压缩成功
readStream.pipe(gzip).pipe(writeStream)
以上就是nodejs常用内置模块相关的内容,欢迎各位评论教导,如果觉得文章还不错或者有什么地方不懂的,欢迎留言提问点赞🧡🤞🤞🤞🧡