通过传统的路由配置方法创建
let http = require("http");
let fs = require("fs");
let url = require("url");
let path = require("path");
//创建服务器
http.createServer((req,res)=>{
// 1.1 获取请求的url的地址
let pathUrl = url.parse(req.url);
let pathName = pathUrl.pathname;
// 1.2 处理路径
// 判断请求的是文件还是文件夹,文件则含有后缀名,即 .xxx
if(pathName.lastIndexOf(".") === -1){
pathName += "/index1.html";
}
// 1.3 拼接路径
// path 的 normalize() 方法,自动规范化路径
let fileUrl = "./" + path.normalize("./static/" + pathName);
// 拿到文件的后缀名,用 path 的 extname() 方法
let extName = path.extname(fileUrl);
// 1.4 读取文件
fs.readFile(fileUrl,(err,data)=>{
// 4.1 没有找到文件
if (err){
res.writeHead(404,{"Content-Type":"text/html;charset=utf-8"});
res.end("<\h1>404,当前页面不存在\h1>")
}
// 4.2 找到文件
getContentType(extName,(contentType)=>{
res.writeHead(200,{"Content-Type":contentType});
res.end(data);
});
})
}).listen(80,"127.0.0.1");
//获取请求的文件类型
function getContentType(extName,callback) {
// 1. 读取文件
fs.readFile("./mime.json",(err,data)=>{
if(err){
throw err;
return;
}
let mimeJson = JSON.parse(data);
// JSON文件里匹配合适的后缀
let contentType = mimeJson[extName] || "text/plain";
// console.log(data);
callback(contentType);
})
}
// mime.json
{
".323":"text/h323" ,
".3gp":"video/3gpp" ,
".aab":"application/x-authoware-bin" ,
".aam":"application/x-authoware-map" ,
".aas":"application/x-authoware-seg" ,
".acx":"application/internet-property-stream" ,
------
}
通过express创建
// 利用 express 模块创建静态资源库会大大减少代码量
let express = require("express");
let https = require("https");
let http = require("http");
let fs = require("fs");
let app = express();
// https 的配置文件
let cfg = {
port: 443,
ssl_key: "./2_www.rexjoush.com.key",
ssl_cert: "./1_www.rexjoush.com_bundle.crt"
};
// 监听 http 请求
http.createServer(app).listen(80);
// 监听 https 请求,配置 https 的连接参数
https.createServer({
key: fs.readFileSync(cfg.ssl_key),
cert: fs.readFileSync(cfg.ssl_cert)
},app).listen(cfg.port);
// 创建静态资源库的目录
app.use(express.static("./RexJoush"));
// express 获取请求并配置路由
app.get("/",(req,res)=>{
res.send("hello world!");
})