nodejs通過響應回寫的方式渲染頁面資源

吳凌雲發表於2019-02-16

我們一般通過node框架提供的api操作頁面渲染,如何利用原始回寫的方式來實現同樣的功能呢
下面是通過node 提供的非同步地讀取一個檔案的全部內容api readFile進行操作,程式碼如下:

html

  <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" type="text/css" href="./static/style.css" />
    <title>Document</title>
</head>
<body>
    <div>這是一個div </div>
    <div>這是一個div  </div>
    <div>這是一個div  </div>
    <div>這是一個div  </div>
    <div>這是一個div  </div>
    <div>這是一個div  </div>
    <div>這是一個div  </div>
    <div>這是一個div  </div>
    <div>這是一個div  </div>
    <div>這是一個div  </div>
    <div>這是一個div  </div>
    <script type="text/javascript" src="./static/test.js"></script>
 </body>
</html>

/static 資料夾裡面放test.js 和 style.css 檔案

  div:nth-child(1){
    font-size: 50px;
    color: red;
}

div:nth-child(3){
    font-size: 80px;
    color: blue;
}

div:nth-child(6){
    font-size: 100px;
    color: blueviolet;
}

app.js

  // 搭建服務
var http = require(`http`);
var fs = require(`fs`);
var server = http.createServer();
server.on(`listening`,()=> {
    console.log(`server starts at localhost 8080`);
})
server.listen(`8080`,`localhost`);

//監聽服務
server.on(`request`,(req,res)=>{
    if(req.url == `/`) {//渲染html檔案
        fs.readFile(`./html/node.html`,(err,info)=>{
              res.write(info);
              res.end();
        })
    } else if(req.url.startsWith(`/static`)) {//統一渲染html需要的static靜態檔案到頁面
        fs.readFile(__dirname + req.url,(err,info) =>{
            res.write(info);
            res.end();
        })
    }
})

相關文章