Node.js基础入门03

88 阅读1分钟

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')