Node.js三个模块
一、fs模块
1.导入fs
模块
const fs = require('fs')
2.调用 fs.readFile()
方法读取文件
fs.readFile(path[,options],callback)
//参数path:读取文件的存放路径
//参数options(可选参数):读取文件时采用的编码格式,默认指定 utf8
//参数callback:回调函数,拿到读取失败和成功的结果 err dataStr
ep:fs.readFile('./files/test.txt','utf8',function(err,dataStr){})
判断文件是否读取成功
const fs = require('fs')
fs.readFile('./files/test.txt','utf8',function(err,dataStr){
if(err){
return console.log('文件读取失败!' + err.message)
}
console.log('文件读取成功,内容是:' + result)
})
3.调用fs.writeFile()
方法向指定的文件中写入内容
fs.writeFile(file,data[,options],callback)
//参数file:需要指定一个文件路径的字符串,表示文件的存放路径
//参数data:表示要写入的内容
//参数options(可选参数):写入文件时采用的编码格式,默认指定 utf8
//参数callback:回调函数,拿到写入文件失败的结果 err
ep:fs.writeFile('./files/test.txt','abcd',function(err){})
判断文件是否写入成功
const fs = require('fs')
fs.writeFile('./files/test.txt','abcd',function(err){
if(err){
return console.log('文件写入失败!' + err.message)
}
console.log('文件写入成功!‘)
})
二、path文件路径模块
0.概况
path模块是Node.js官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。
1.导入path
模块
const path = require('path')
2.路径拼接path.join()
path.join([...paths])
//...paths<string>路径片段的序列
返回值:<string>
代码示例
const pathStr = path.join('/a','/b/c','../','./d','e')
console.log(pathStr)//输出 \a\b\d\e “../会抵消前一个/”
const pathStr2 = path.join(__dirname,'./files/1.txt')
console.log(pathStr2)//__dirname为当前所处目录
3.获取路径中的文件名path.basename()
path.basename(path[,ext])
//path<string>必选参数,表示一个路径的字符串
//ext<string>可选参数,表示文件扩展名
//返回:<string>表示路径中的最后一部分
代码示例
const fpath = '/a/b/c/index.html'
let fullName = path.basename(fpath)
console.log(fullName)
let nameWithoutExt = path.basename(fpath,'.html')
console.log(nameWithoutExt) //输出index
4.获取路径中的文件扩展名path.extname()
path,extname(path)
//path<string>必选参数,表示一个路径的字符串
//返回:<strin>返回得到的扩展名字符串
代码示例
const fpath = '/a/b/c/index.html'
const fext = path.extname(fpath)
console.log(fext) //输出.html
三、http模块
0.概况
客户端
:在网络节点中,负责消费资源的电脑。
服务器
:负责对外提供网络资源的电脑。
IP地址
:互联网上每台计算机的唯一地址,格式“点分十进制”(a.b.c.d)形式,其中a、b、c、d都是0~255之间的十进制数。
端口
:每个web服务对应一个端口号,形式(a,b,c,d:端口),实际应用中URL的80端口可省略。
域名(Domain Name)
:字符型的地址方案,与IP地址一一对应。
域名服务器(DNS,Domain name server)
:提供IP地址和域名之间的转换服务的服务器
1.导入http
模块
const http = require('http')
2.创建web服务器实例
const server = http.creatServer()
3.为服务器绑定 request
事件,监听客户端的请求
server.on('request',function(req,res){
console.log('Someone visit our web server.')
})
3.1 req
请求对象
只要服务器接收到了客户端的请求,就会调用通过server.on()
为服务器绑定的request事件处理函数
req是请求对象,它包含了与客户端相关的数据和属性,例如:
req.url
是客户端请求的 URL 地址
req.method
是客户端的 method 请求类型
server.on('request',(req) => {
const str = 'Your request url is ${req.url},and request method is ${req.method}'
console.log(str)
})
3.2 res
响应对象
res是响应对象,它包含了与客户端相关的数据和属性,例如:
res.url
是客户端请求的 URL 地址
res.method
是客户端的 method 请求类型
server.on('request',(req,res) => {
const str = 'Your request url is ${req.url},and request method is ${req.method}'
res.end(str) //向客户端发送指定的内容,并结束这次请求的处理过程
})
3.3 解决中文乱码问题
server.on('request',(req,res) => {
const str = '您请求的url地址是${req.url},请求的method类型是${req.method}'
res.setHeader('Content-Type','text/html;charset=utf-8')
res.end(str)
4.启动服务器
server.listen(8080,function(){//8080为端口
console.log('server running at http://127.0.0.1:8080')
})
案例-实现calculator的web服务器
// 1.导入所需要的模块
const http = require('http') // 1.1 导入 http 模块
const fs = require('fs')// 1.2 导入 fs 模块
const path = require('path')// 1.3 导入 path 模块
// 2.创建基本的 web 服务器
const server = http.createServer() // 2.1 创建 web 服务器
server.on('request',(req,res) => { // 2.2 监听 web 服务器的 request 事件
res.setHeader('Content-Type','text/html;charset=utf-8')// 解决中文乱码问题
// 3.将资源的请求 url 地址映射为文件的存放路径
const url = req.url // 3.1 获取到客户端请求的 url 地址
//const fpath= path.join(__dirname,url)// 3.2 把请求的 url 地址,映射为本地文件的存放路径
// 5.优化资源的请求路径
let fpath = '' // 5.1 预定义一个空白的文件存放路径
if(url === '/'){
fpath = path.join(__dirname,'./clock/calculator.html')
}
else{
fpath = path.join(__dirname,'./clock',url)
}
// 4.读取文件的内容并响应给客户端
fs.readFile(fpath,'utf8',(err,dataStr) => {// 4.1 根据“映射”过来的文件路径读取文件
if(err) return res.end('404 Not Found.')// 4.2 读取文件失败后,向客户端响应固定的“错误信息”
res.end(dataStr)// 4.3 读取文件成功后,将“读取成功的内容”响应给客户端
})
}) // 2.2 监听 web 服务器的 request 事件
server.listen(80,() => {
console.log('server listen at http://127.0.0.1')
}) // 2.3 启动 web 服务器