美文网首页
2.nodejs通过stream方式加载页面 / 通过fs模块加

2.nodejs通过stream方式加载页面 / 通过fs模块加

作者: kino2046 | 来源:发表于2020-01-07 14:23 被阅读0次

    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方式加载优化性能)


    相关文章

      网友评论

          本文标题:2.nodejs通过stream方式加载页面 / 通过fs模块加

          本文链接:https://www.haomeiwen.com/subject/pitxgctx.html