這篇文章主要介紹了用Node.js創建Web伺服器和TCP伺服器的方法和處理技巧,需要的讀者們學習一下吧。
使用http模組建立Web伺服器
Web伺服器的功能:
接受HTTP請求(GET、POST、DELETE、PUT、PATCH)
處理HTTP請求(自己處理,或請求別的程式處理)
回應(傳回頁面、檔案、各類別資料等)
常見的Web伺服器架構:
Nginx、Apache:負責接受HTTP請求,決定誰來處理請求,並回傳請求的結果
php-fpm / php模組:處理指派給自己的請求,並將處理結果傳回給指派者
常見請求類型:
#請求檔:包含靜態檔案(網頁、圖片、前端JavaScript檔案、css文件...),及由程式處理得到的檔案
完成特定的操作:如登入、取得特定資料等
Node.js的Web伺服器:
不依賴其他特定的Web伺服器軟體(如Apache、Nginx、IIS......)
Node.js程式碼處理請求的邏輯
Node.js程式碼負責Web伺服器的各種「設定」
使用Express建立Web伺服器
簡單的Express伺服器
靜態檔案服務
路由
中間件
簡單的Express伺服器:
var express = require('express'); var app = express(); app.get('', function(req, res){ <span style="white-space:pre"> </span>res.end('hello\n'); <span style="white-space:pre"> </span>}); <span style="white-space:pre"> </span>app.listen(18001, function afterListen(){ <span style="white-space:pre"> </span>console.log('express running on http://localhost:18001'); <span style="white-space:pre"> </span>});
#靜態檔案範圍:
網頁、純文字、圖片、前端JavaScript程式碼、 CSS樣式表檔案、媒體檔案、字型檔案
使用Express存取靜態檔案
<span style="white-space:pre"></span>app.use(express.static('./public'));
#路由:
將不同的要求,指派給對應的處理函數
區分:路徑、請求方法
三種路由實作方法:
path:比較簡單
#Router:比較適合同一個路由下的多個子路由
route:比較適合API
中間件
Connect:Node.js的中間件框架
分層處理
#每層實作一個功能
建立TCP伺服器
使用net模組建立TCP伺服器
#使用telnet連線TCP伺服器
使用net建立TCP客戶端
用node.js搭建簡單web伺服器JS程式碼部分:
var http = require('http'); var url = require('url'); var path = require('path'); var fs = require('fs'); var dir, arg = process.argv[2] || ''; // 命令行第三个参数,用来接收目录,可为空,相对当前server.js文件的目录名称 // 比如使用命令 node server debug,意思就是debug文件夹与server.js文件同级 // 且你想以debug文件夹启动web服务 http.createServer(function (req, res) { var pathname = __dirname + url.parse(req.url).pathname; dir = dir ? dir : pathname; // 记住dir(目录) pathname = dir ? pathname.replace(dir, dir + arg + '/') : pathname; // 替换文件静态路径 if (path.extname(pathname) == "") { pathname += "/"; } if (pathname.charAt(pathname.length - 1) == "/") { pathname += "index.html"; // 入口文件,此处默认index.html } fs.exists(pathname, function (exists) { if (exists) { switch (path.extname(pathname)) { case ".html": res.writeHead(200, {"Content-Type": "text/html"}); break; case ".js": res.writeHead(200, {"Content-Type": "text/javascript"}); break; case ".css": res.writeHead(200, {"Content-Type": "text/css"}); break; case ".gif": res.writeHead(200, {"Content-Type": "image/gif"}); break; case ".jpg": res.writeHead(200, {"Content-Type": "image/jpeg"}); break; case ".png": res.writeHead(200, {"Content-Type": "image/png"}); break; default: res.writeHead(200, {"Content-Type": "application/octet-stream"}); } // res可以自己添加信息来简单交互 比如可以修改点header信息 或者修改返回的资源数据 fs.readFile(pathname, function (err, data) { res.end(data); }); } else { res.writeHead(404, {"Content-Type": "text/html"}); res.end("<h1>404 Not Found</h1>"); } }); }).listen(8085, "127.0.0.5"); // 服务器端口 console.log("server running at http://127.0.0.5:8085/");
上面是我整理給大家的,希望今後會對大家有幫助。
相關文章:
以上是在Node.js中如何建立Web、TCP伺服器的詳細內容。更多資訊請關注PHP中文網其他相關文章!