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

nodejs通过stream方式加载页面(stream方式加载优化性能)

        小贴士:nodemon index.js      启动index.js页面

// 1.原生node如何区分路由??(后端路由)

// 2.原生node如何加载页面??  (性能问题:stream); 

// 3.原生node如何加载第三方资源???

// 单页面应用(无刷新)spa vue-router 、 react-router;

// 有刷新;

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值