首頁  >  文章  >  web前端  >  利用node.js搭建簡單web伺服器的方法教程

利用node.js搭建簡單web伺服器的方法教程

高洛峰
高洛峰原創
2017-02-21 14:39:231546瀏覽

本文主題是使用node來搭建最簡單的web伺服器,其後可以自己根據需要深入了解,目前在開發過程中可以用來模擬與伺服器進行簡單的交互,例如返回的資源控制等。需要的朋友可以參考學習,下面來一起看看吧。

前言

使用Nodejs建立Web伺服器是學習Node.js比較全面的入門教程,因為要完成一個簡單的Web伺服器,你需要學習Nodejs中幾個比較重要的模組,例如:http協定模組、檔案系統、url解析模組、路徑解析模組、以及301重定向問題,下面我們就簡單講一下如何來建立一個簡單的網頁伺服器。

早先不使用web伺服器的情況下想要在瀏覽器端存取本地資源,可以利用firefox瀏覽器,其可以自己啟動一個小型web伺服器。
為了讓剛接觸node的人也能大體看懂,本文的程式碼我將盡量簡化。

準備

首先,需要安裝nodejs,這個可以去官網下載,目前我本地安裝的v0.12版本。

安裝完成後可以透過命令列測試安裝是否成功,輸入:node -v,應該會顯示目前安裝node版本號。
本文所使用的模組,都是nodejs核心模組,不需要從外部下載,如果有需要,可以使用以下指令安裝:npm install xxx

開始

下一步,新js文件,可以命名為server.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://www.php.cn/:8085/");

啟動

#當node安裝完成及上述server.js檔案也新建好之後。將其與你要存取的資料夾放在一起,可以放同層或直接下層。例如,如果你要存取d:\test\debug資料夾。

你可以先將目前檔案放入同層或直接下,然後輸入如下指令啟動web服務:

  1. 先開啟`cmd`,進入server檔案所在目錄,例如是`test`目錄;

  2. 然後輸入:`node server debug`(同層), 或`node server `(子層),

  3. 此時會提示`server running at http://www.php.cn/:8085/`,表示啟動服務成功;

  4. 最後開啟瀏覽器,進入:`127.0.0.5:8085`,即可存取此資源。

最後

#簡單解釋下上面的程式碼。

首先最上面的require表示需要用到那幾個模組,先引用一下;

arg表示輸入的命令列的第三個參數,上面是做了手動截取;

createServer方法表示建立一個http服務,以函數為參數,本文程式碼中傳入了一個匿名函數;

  1. ##req ,表示http request(請求)對象,其攜帶著來自客戶端此次http請求的相關信息,例如請求method、請求query參數、請求header頭信息等;

  2. res ,表示http response(返回)對象,用來給客戶端返回請求資源用,可以手動添加信息,例如返回的數據、返回的頭信息等、返回的code等;

  3. fs,表示檔案資源對象,具體可以存取nodejs官網的api;

  4. path,表示資源路徑對象,具體可以存取nodejs官網的api。

listen表示建立的服務監聽,一旦訪問了此端口,將進入先前的匿名函數回呼中,將資源傳回給客戶端。

更多利用node.js搭建簡單web伺服器的方法教學相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn