簡體   English   中英

NodeJs - 使用文件系統包含HTML文件

[英]NodeJs - include HTML file by using the filesystem

我是網絡編程的新手,並開始學習NodeJs。 我創建了一個僅用於測試和學習的新項目。 這是項目結構

項目

我的Server.js包含此代碼

var http = require('http');
var url = require('url');
var fileSystem = require('fs');

var server = http.createServer(function(req, res) {
  var page = url.parse(req.url).pathname;
  res.writeHead(200, {"Content-Type": "text/html"});

  fileSystem.readFile(getPage(page), null, function(error, data){
    if(error){
      throw error;
    } else {
      res.writeHead(data);
    }
    res.end();
  })
});
server.listen(2312);

function getPage(page){
  var content = "Templates/";
  switch (page) {
    case "/Page1":
        content += 'Page1.html';
        break;
    case "/Page2":
        content += 'Page2.html';
        break;
    case "/Page3":
        content += 'Page3.html';
        break;
    default:
        content += 'Page404.html';
    }
    return content;
}

我的html文件包含非常簡單的HTML代碼

第1頁

<!DOCTYPE html>
<html>

<head>
  <title></title>
  <link rel="stylesheet" href="Button.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
  <script src="Btns.js"></script>
</head>

<body>

  <button onclick="loadPage2()">Load Page 2</button>

  <button onclick="loadPage3()">Load Page 3</button>

</body>

</html>

因此,在嘗試http://localhost:2312/Page1我的狀態代碼為0。

_http_server.js:195拋出新的RangeError( Invalid status code: ${statusCode} ); ^

RangeError:無效的狀態代碼:0在ServerResponse.writeHead(_http_server.js:195:11)at ... \\ TestProjekt \\ Server.js:13:9 at FSReqWrap.readFileAfterClose [as oncomplete](fs.js:439:3 )

是否可以通過這種方式加載html文件?

我知道我可以使用Express框架,但我想到了學習並從本機代碼開始。

更改res.writeHead(data); res.write(data);

writeHead()向請求發送響應頭。

write()發送數據。

第一次調用response.write() ,它會將緩沖的頭信息和正文的第一個塊發送給客戶端。 第二次調用response.write() ,Node.js假設數據將被流式傳輸,並分別發送新數據。

var readSream = fs.createReadStream('index.html','utf8')

readSream.pipe(響應);

 var http = require('http');
   var fs = require('fs');

  http.createServer(function(request, response) {  
    response.writeHeader(200, {"Content-Type": "text/html"});  
    var readSream = fs.createReadStream('index.html','utf8')
    readSream.pipe(response);
  }).listen(3000);

 console.log("server is running on port number ");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM