在node.js环境中加载一个网站
2018-08-10 本文已影响3人
一苇一航
网站项目是在网上随便找的,文件夹名称为static
导入模块
const http = require('http');
const fs = require('fs');
const url = require('url');
const path = require('path');
创建服务器,并在其中加载网站
- 通过http.createServer()创建一个服务器
const server = http.createServer(function (req, res) {}
- 声明变量pathname , 格式化URL
let pathname = url.parse(req.url).pathname;
- 判断请求地址
- 当pathname=='/' 时,通过fs.readFile()读取首页index.html
if (pathname == '/' || pathname == '/index') {
fs.readFile('./static/index.html', function (err, data) {
if (err) {
fs.readFile('./static/404.html', function (err) {
if (err) throw err;
res.end(data);
})
}
res.setHeader('Content-Type', 'text/html;charset=utf8');
res.end(data);
})
}
- else
//获取后缀名
let suffix = path.extname(pathname);
// 声明mime变量,等于mime值 例:text/html
let mime = getExtName(suffix);
- 加载请求到的文件
fs.readFile('./static/' + pathname, function (err, data) {
//响应头
res.setHeader('Content-Type', mime + ';charset=utf8');
res.end(data)
})
完整服务器代码
const server = http.createServer(function (req, res) {
let pathname = url.parse(req.url).pathname;
// console.log(pathname)
if (pathname == '/' || pathname == '/index') {
fs.readFile('./static/index.html', function (err, data) {
if (err) {
fs.readFile('./static/404.html', function (err) {
if (err) throw err;
res.end(data);
})
}
// res.setHeader('Content-Type', 'text/html;charset=utf8');
res.end(data);
// console.log(data.toString())
})
} else {
//获取后缀名
let suffix = path.extname(pathname);
let mime = getExtName(suffix);
fs.readFile('./static/' + pathname, function (err, data) {
res.setHeader('Content-Type', mime + ';charset=utf8');
res.end(data)
})
}
})
server.listen('3000', '127.0.0.1')
判断文件类型,返回对应的响应头(在服务器外部判断)
// 上图代码
res.setHeader('Content-Type', mime + ';charset=utf8');
function getExtName(suffix) {
// console.log(suffix)
switch (suffix) {
case '.html':
return 'text/html';
case '.css':
return 'text/css';
case '.js':
return 'text/javascript';
case '.jpg':
return 'images/jpg';
case '.png':
return 'images/png';
default:
return 'text/plain';
}
}