node笔记 --祈粼
const http = require('http') // 获取http模块
const url = require('url') // 获取url模块
const fs = require('fs') // 获取fs模块 fileSystem
const path = require('path') // path模块提供了一些用户处理文件路径的小工具
// 创建服务
const server = http.createServer((req, res) => {
if (req.url == 'favicon') return;
// 获取端口号以后的URL
let pathname = url.parse(req.url).pathname
// 判断是文件还是文件夹
if (pathname.indexOf('.') < 0) {
pathname += '/index.html'
}
// 获取文件名
let fileUrl = './' + path.normalize(pathname)
// 获取后缀名
let extname = path.extname(fileUrl)
// 读取需要加载的文件
fs.readFile(fileUrl, (err, data) => {
// 错误返回404
if (err) { //一般情况下都是路径引起的错误
res.writeHead(404, { "Content-type": "text/html;charset=UTF-8" });
res.end("404,页面未找到,page not found");
}
// 获取content-type并返回
getMime(extname, (mime) => {
res.writeHead(200, { 'Content-type': mime })
res.end(data)
})
})
})
const getMime = (mime, callback) => {
// 读取文件类型的JSON 根据后缀来判断文件的类型
fs.readFile('./mime.json', (err, data) => {
if (err) throw err;
let datas = JSON.parse(data)
callback(datas[mime])
})
}
// 监听端口号和访问地址
server.listen(3000, '127.0.0.1')
网友评论