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方式加載優化性能)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章