nodejs通过stream方式加载页面(stream方式加载优化性能)
配置index.js文件,创建服务,设置端口号
启动index.js页面:
nodemon index.js
const http = require("http");
const fs = require("fs"); //引入FS模块
const mime = require("./mime.json"); //引入mime标准,各种类型标准
const path = require("path"); //原生方法,获取后缀名
let server = http.createServer((req,res)=>{ //req客户端到node端相关 res返还相关
console.log(req.url);
if(req.url==="/index"){
res.setHeader("content-type","text/html;charset=utf8");
// let indexData = fs.readFileSync("./views/index.html");
// 流方式:节约性能;
let rs = fs.createReadStream("./views/index.html"); //不通过文件方式,通过流方式节约性能
// res.write(indexData);
rs.pipe(res); //rs放到pipe管道里,64K文件拆分,这里不能加res.end();会报错
}else if (req.url==="/detail"){
res.setHeader("content-type","text/html;charset=utf8");
// let detailData = fs.readFileSync("./views/detail.html");
let rs = fs.createReadStream("./views/detail.html"); //通过流方式节约性能
// res.write(detailData);
rs.pipe(res); //rs放到pipe管道里
}else if(req.url==="/getData"){
// 模拟接口;api http://localhost:4000/getData getData数据接口,也可以写JSON数据,输出到页面
let obj = {
name:"张三",
age:20
}
res.write(JSON.stringify(obj));
res.end();
}else{
// console.log(req.url); 因为设置了setHeader,所以引入的css文件也是txt/html格式,会报错
let extName = path.extname(req.url); // 获取后缀;mime标准,什么类型用什么标准,前面引入path模块,这里查找后缀
//res.setHeader("content-type","text/css");
res.setHeader("content-type",mime[extName]); //针对后缀单独设置头部格式
// let cssData = fs.readFileSync(__dirname+"/views"+req.url)
// res.write(cssData);
//fs.readFileSync(__dirname+"/views/css/index.css")
let rs = fs.createReadStream(__dirname+"/views"+req.url); //__dirname当前执行文件地址
rs.pipe(res);
}
// 注意 流方式 不要end;
// res.end();
})
server.listen(4000);
nodejs通过fs模块加载页面(用上面的stream方式加载优化性能)
网友评论