接續前一天的內容,今天的重點在於提升靜態網頁讀取的效率與JSON格式檔案在Server中的傳遞。
Day12所提到的網頁讀取方式,是透過fs
模組中的讀取檔案方法將html檔案讀取後再回應請求,這樣的流程在檔案較大或是多個使用者同時提出請求時,會導致等待存取時間較長、甚至塞車的狀況。透過Stream(串流)來讀取檔案的話,因為是持續以資料片段的方式讀取或寫入,可以避免等候過久。
實作看看
index.html
網頁檔。<html>
<head></head>
<body>
<h1>Also an Example</h1>
<p>To perform with stream.</p>
</body>
</html>
fs
與html
模組,並建立一個新的Server、指定監聽位址。let html = require("html");
let fs = require("fs");
html.createServer(function(req, res){}).listen(1324, "127.0.0.1");
createReadStream()
方法讀取網頁檔,再透過pipe()
將資料片段轉傳至res
串流。html.createServer(function(req, res){
res.writeHead(200, {"contentType": "text/html"});
fs.createReadStream(`${__dirname}/index.html`).pipe(res);
}).listen(1324, "127.0.0.1");
JSON是一種資料交換格式,像物件一樣由屬性與值所組成且與JavaScript有很好的適用性,常用於API(Application Programming Interface)與網頁系統的資料傳遞,因此也是Server常會遇到需要處理的資料格式。
實作Server上的JSON傳遞
http
模組,並建立新的Server、指定監聽位址。let html = require("html");
html.createServer(function(req, res){}).listen(1324, "127.0.0.1");
obj
。html.createServer(function(req, res){
let obj = {
firstName: "Chw",
lastName: "K"
}
}).listen(1324, "127.0.0.1");
res
的Header以JSON為contentType
,透過JSON.stringify()
方法將obj
序列化成JSON格式字串後設定為res
傳送內容。html.createServer(function(req, res){
let obj = {
firstName: "Chw",
lastName: "K"
}
res.writeHead(200, {"contentType": "application/json"});
res.end(JSON.stringify(obj));
}).listen(1324, "127.0.0.1");
透過串流的方式執行網頁資料的傳遞,除了避免等候載入之外,在程式碼上也比較簡潔,而JSON格式的資料傳遞在與後端API工具的連結與應用上也相當實用,例如API從資料庫查找資料的傳遞等。
關於NodeJS比較基本的使用和練習在這部份告一段落,接下來要進入的部份是強大的套件管理系統NPM,敬請期待~
https://zh.wikipedia.org/wiki/JSON
Learn and Understand NodeJS [課程]