原生方式搭建服务器
- 通过 http 创建服务
引入 http 模板
const http = require("http");
操作文件、文件夹
const fs = require("fs");
解析url的字符串
const url = require("url");
根据文件格式获取对应的头部信息
const mime = require("./mime.json")
处理文件路径
const path = require("path");
const sever = http.createServer((req,res)=>{
// req:客户端发送的信息
// res:服务端返回的信息(给浏览器)
console.log(req.url)
// 后端路由:每次切换页面时,都会刷新
// 前端路由: spa 单页面应用,不会引起刷新
// 1:http://localhost:4000/detail.html
// 2:http://localhost:4000/detail?name=qinshen
// 两个网址是一个地址,后面的只是参数
// url方法
let obj = url.parse(req.url,true)
// 获取到路径中的文件格式
// console.log(obj.pathname)
// 加载主页
if (obj.pathname == "/") { // 判断路由 加载主页面
// 设置头部信息
res.setHeader("content-type","text/html;charset=utf-8");
// res.writeHead(200,{"content-type":"text/html;charset=utf-8"})
let indexData = fs.readFileSync("./view/index.html");
// res.write("谁说我是个小个子")
res.write(indexData);
}else if(obj.pathname == "/detail.html"){ // 判断路由 加载详情页面
// 设置头部信息
res.setHeader("content-type","text/html;charset=utf-8")
// res.writeHead(200,{"content-type":"text/html;charset=utf-8"})
let indexData = fs.readFileSync("./view/detail.html")
res.write(indexData)
}else if(obj.pathname == "/getData"){
// api接口 数据
let obj = {
info : "sonme... value",
status : 1
}
// 将数据提交到页面
res.write(JSON.stringify(obj))
}else{
// 其他类型的文件
//针对 /favicon.ico 引入工具 mime
if (obj.pathname != "/favicon.ico") {
// 1:设置对应的头部
// obj.pathname : /a.css /b.js
// ext .css .js
// mime是一个对象,通过[]取出对应的属性
let ext = path.extname(obj.pathname)
console.log(ext)
res.setHeader("content-type",mime[ext])
// 2: 读取资源文件写入页面
let resData = fs.readFileSync("view" + obj.pathname)
res.write(resData);
}
}
res.end(); // 必须写,否则会一直加载,不停止
})
设置监听端口号
sever.listen(4000)