Node.js | Web 模組
簡介
Web
伺服器一般指網站伺服器,是指駐留於因特網上某種類型計算機的程序,Web
伺服器的基本功能就是提供Web訊息瀏覽服務。它只需支持HTTP
協議、HTML
文件格式及URL
,與客戶端的網路瀏覽器配合。
大多數web
伺服器都支持服務端的腳本語言(php
、python
、ruby
)等,並通過腳本語言從資料庫獲取資料,將結果返回給客戶端瀏覽器。
目前最主流的三個Web
伺服器是Apache
、Nginx
、IIS
。
Web 架構
Client
- 客戶端,一般指瀏覽器,瀏覽器可以通過 HTTP 協議向伺服器請求資料。
Server
- 服務端,一般指 Web 伺服器,可以接收客戶端請求,並向客戶端發送響應資料。
Business
- 業務層, 通過 Web 伺服器處理應用程序,如與資料庫交互,邏輯運算,調用外部程序等。
Data
- 資料層,一般由資料庫組成。
建立 Web 伺服器
Node.js
提供了http
模組,http
模組主要用於搭建HTTP
服務端和客戶端,使用HTTP
伺服器或客戶端功能必須調用http
模組。
1
| var http = require('http');
|
基本的HTTP
伺服器架構(使用8080 port
)。
server.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| var http = require('http'); var fs = require('fs'); var url = require('url');
http.createServer( function (request, response) { var pathname = url.parse(request.url).pathname; console.log("Request for " + pathname + " received."); fs.readFile(pathname.substr(1), function (err, data) { if (err) { console.log(err); response.writeHead(404, {'Content-Type': 'text/html'}); }else{ response.writeHead(200, {'Content-Type': 'text/html'}); response.write(data.toString()); } response.end(); }); }).listen(8080);
console.log('Server running at http://127.0.0.1:8080/');
|
index.html
1 2 3 4 5 6 7 8 9 10 11
| <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>J.J.'s Blogs(https://morosedog.gitlab.io/)</title> </head> <body> <h1>第一個標題</h1> <p>第一個段落</p> </body> </html>
|
執行結果如下:
1 2
| $ node server.js Server running at http://127.0.0.1:8080/
|
開啟瀏覽器瀏覽:
1
| http://127.0.0.1:8080/index.html
|
瀏覽結果:
Server
控制台輸出結果:
1 2 3
| $ node server.js Server running at http://127.0.0.1:8080/ Request for /index.html received.
|
建立 Web 客戶端
client.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| var http = require('http');
var options = { host: 'localhost', port: '8080', path: '/index.html' };
var callback = function(response){ var body = ''; response.on('data', function(data) { body += data; }); response.on('end', function() { console.log(body); }); }
var req = http.request(options, callback); req.end();
|
執行結果如下:
1 2 3 4 5 6 7 8 9 10 11 12
| $ node client.js <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>J.J.'s Blogs(https://morosedog.gitlab.io/)</title> </head> <body> <h1>第一個標題</h1> <p>第一個段落</p> </body> </html>
|
Server
控制台輸出結果:
1 2 3
| $ node server.js Server running at http://127.0.0.1:8080/ Request for /index.html received.
|
註:以上參考了
Node.js Web 模块