NodeJs零基础教程(二)

本次内容主要讲解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常用内置模块相关的内容,欢迎各位评论教导,如果觉得文章还不错或者有什么地方不懂的,欢迎留言提问点赞🧡🤞🤞🤞🧡 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值