先行基础
实现一个简单的静态文件服务器,主要用到了http模块和fs模块,utils、path、url模块中也有一些简单易用的api可以方便开发
http
创建一个http服务器
const http = require('http')
let server = http.createServer()
启动一个http服务器
server.listen(port, host, _ => {
// 服务启动后的回调方法
})
http服务器接收请求后相应请求
server.on('request',request)
//
function request(req,res){
}
req:请求
- req.methods:请求的方法
- req.url:请求的url
- req.headers:请求头
res:响应
- res.setHeader:设置一条响应头
- res.statusCode:设置响应码,不设置时默认为200
- res.statusMessage:设置响应消息
- res.write(string|buffer):设置响应体
- res.writeHeaer(statusCode,statusMessage,header)
- res.end([string])
fs
stat:获取文件(夹)的相关信息
获取档案的统计信息:档案类型(文件、文件夹、socket)、size、mode、创建时间、修改时间等
fs.stat(filepath,(err,stats)=>{
})
- stats.isFile()
- stats.isDirectory()
- stats.isSocket()
- stats.mode
readdir:读取一个文件夹
读取一个文件夹,获取内部所有文件和文件夹
fs.readdir(filePath,(err,files)=>{
//files 为一个数组
})
readFile: 读取一个文件
fs.readFile(filePath,encoding,(err,data)=>{
// 若不指定encoding,data则为buffer,若指定则为string
})
path
path.join([path1][, path2][, …])
path.join(’/foo’, ‘bar’, ‘baz/asdf’, ‘quux’, ‘…’);
// Returns: ‘/foo/bar/baz/asdf’
path.resolve([from …], to)
path.resolve() 方法会把一个路径或路径片段的序列解析为一个绝对路径。
给定的路径的序列是从右往左被处理的,后面每个 path 被依次解析,直到构造完成一个绝对路径。 例如,给定的路径片段的序列为:/foo、/bar、baz,则调用 path.resolve(’/foo’, ‘/bar’, ‘ba