前言:
如果我們使用PHP來編寫后端的代碼時,需要Apache 或者 Nginx 的HTTP 服務器,並配上 mod_php5 模塊和php-cgi。
從這個角度看,整個"接收 HTTP 請求並提供 Web 頁面"的需求根本不需 要 PHP 來處理。
不過對 Node.js 來說,概念完全不一樣了。使用 Node.js 時,我們不僅僅 在實現一個應用,同時還實現了整個 HTTP 服務器。
事實上,我們的 Web 應用以及對應的 Web 服務器基本上是一樣的。
創建一個簡單的HTTP服務器:
這里我們使用創建文件,然后執行的方式,來創建此實例。
在E:\NodejsDemo文件夾下,創建“server.js”文件,代碼如下:
1 var http = require("http"); 2 3 http.createServer(function(request,response){ 4 response.writeHead(200, {"Content-Type" : "text/plain"}); 5 response.end("Hello World!\n"); 6 }).listen(88); 7 8 console.log("Server running at http://127.0.0.1:88/")
上述代碼中,我們先引入了http模塊,並存入本地的http對象中。
然后使用http對象創建一個服務,設置文檔響應類型等,最后結束並返回響應一串字符串。
啟動監聽在88端口。
以上代碼,我們已經完成了一個簡單Node.js的HTTP服務器的創建。
下面我們在DOS下使用node命令來運行它:

此時,防火牆可能會提示,點擊允許訪問即可:

然后、我們打開瀏覽器,訪問地址:http://127.0.0.1:88,效果如下:

看到這個界面了,是不是很雞凍,哈哈。
強化案例:
不知道大家是否了解類似於JSP、ASP.NET的運行機制。
例如JSP,解析的時候,最后生成的是HTML源碼文件,將源JSP文件中的代碼一行行拼接輸出。
按照這個原理,我們能不能也實現一個HTML的服務器呢?
主程序“main.js”的代碼如下:
1 var http = require("http"); 2 3 var html = ""; 4 html += "<!DOCTYPE html>"; 5 html += "<html>"; 6 html += " <head>"; 7 html += " <meta charset='utf-8' />"; 8 html += " <title>孤影'Blog</title>"; 9 html += " <style>body{background:black; color:#0F6; text-align:center; text-shadow:0px 0px 10px #0F6;}</style>"; 10 html += " </head>"; 11 html += " <body>"; 12 html += " <h1>孤影'Blog</1>"; 13 html += " <h2>Welcome to my blog!</h2>"; 14 html += " </body>"; 15 html += "</html>"; 16 17 http.createServer(function (request, response) { 18 response.writeHead(200, { "Content-Type": "text/html" }); 19 response.end(html); 20 }).listen(88);
OK、打開DOS、運行“node main.js”,效果如下:

有沒有腦洞大開?!呵呵。下山自行修煉去吧。哈哈。。
簡單分析Node.js的HTTP服務器:
這里,我奉承簡單入門為主,所以就不做過多的介紹了,大家理解就好。
W3C官方的解釋如下:
- 第一行請求(require)Node.js 自帶的 http 模塊,並且把它賦值給 http 變量。
- 接下來我們調用 http 模塊提供的函數: createServer 。這個函數會返回 一個對象,這個對象有一個叫做 listen 的方法,這個方法有一個數值參數, 指定這個 HTTP 服務器監聽的端口號。
個人介紹:
- require表示引入一個模塊,在這里,我們引入的是系統的http模塊,從而創建了一個http模塊服務。
- 然后,我們把它賦值保存到了一個http對象中。
- 下面,我們使用該對象的createServer方法,執行了一個function函數。
- 該函數傳入一個request和response的請求及響應對象,設置響應狀態碼為200,響應類型為text文本,響應內容為“Hello World!”。
- 最后,調用其“listen”方法,啟動監聽,監聽端口為88。
- 命令結束的時候,我們輸出了一段日志:“Server running at http://127.0.0.1:88”。
小結:
我也是剛學,所以深刻體會,這個東西慢慢的理解就好,別太死扣語法了。循序漸進的而已。
希望大家趕緊上手吧,呵呵。
