nodejs通过stream方式加载页面(stream方式加载优化性能)
// 1.原生node如何区分路由??(后端路由)
// 2.原生node如何加载页面?? (性能问题:stream);
// 3.原生node如何加载第三方资源???
// 单页面应用(无刷新)spa vue-router 、 react-router;
// 有刷新;
const http = require("http");
const fs = require("fs");
const mime = require("./mime.json");
const path = require("path");
let server = http.createServer((req,res)=>{
console.log(req.url);
if(req.url==="/index"){
res.setHeader("content-type","text/html;charset=utf8");
// let indexData = fs.readFileSync("./views/index.html");
// console.log(indexData.toString());
// 流方式:节约性能;
let rs = fs.createReadStream("./views/index.html"); //通过流方式节约性能
// res.write(indexData);
rs.pipe(res); //放到管道里 这里不能加res.end();会报错
}else if (req.url==="/detail"){
res.setHeader("content-type","text/html;charset=utf8");
// let detailData = fs.readFileSync("./views/detail.html");
// res.write(detailData);
let rs = fs.createReadStream("./views/detail.html"); //通过流方式节约性能
rs.pipe(res); //放到管道里
}else if(req.url==="/getData"){
// 模拟接口;api http://localhost:4000/getData
let obj = {
name:"张三",
age:20
}
res.write(JSON.stringify(obj));
res.end();
}else{
// console.log(req.url);
// 获取后缀;
let extName = path.extname(req.url);
res.setHeader("content-type",mime[extName]);
// let cssData = fs.readFileSync(__dirname+"/views"+req.url)
// res.write(cssData);
let rs = fs.createReadStream(__dirname+"/views"+req.url);
rs.pipe(res);
}
// 注意 流方式 不要end;
// res.end();
})
server.listen(4000);
nodejs通过fs模块加载页面(用上面的stream方式加载优化性能)