本文主題是使用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 //m.sbmmt.com/:8085/");
啟動
#當node安裝完成及上述server.js檔案也新建好之後。將其與你要存取的資料夾放在一起,可以放同層或直接下層。例如,如果你要存取d:\test\debug資料夾。
你可以先將目前檔案放入同層或直接下,然後輸入如下指令啟動web服務:
先開啟`cmd`,進入server檔案所在目錄,例如是`test`目錄;
然後輸入:`node server debug
`(同層), 或`node server
`(子層),
此時會提示`server running at //m.sbmmt.com/:8085/
`,表示啟動服務成功;
最後開啟瀏覽器,進入:`127.0.0.5:8085`,即可存取此資源。
最後
#簡單解釋下上面的程式碼。
首先最上面的require表示需要用到那幾個模組,先引用一下;
arg表示輸入的命令列的第三個參數,上面是做了手動截取;
createServer方法表示建立一個http服務,以函數為參數,本文程式碼中傳入了一個匿名函數;