搭建簡單的Node.js本地伺服器
很久以前我還是前端小白,不懂怎麼搭建本地伺服器。每次遇到必須要託管才能用的資源,我只懂得把它放到雲上,特別浪費時間。然後我接觸到了Node,但瞭解很少,只知道它可以做很多事情。正好最近時間多,我嘗試一下用Node搭建本地伺服器。下面是我搭建本地伺服器過程中的一些經歷。
首先當然是四處找示例程式碼。很快就找到了:
var http = require('http');
http.createServer(function(req,res){
res.writeHead(200,{'Content-Type':'text/html'});
res.write('<h1>Node.js</h1>');
res.write('<p>Hello World!</p>');
res.end('');
}).listen(3000);
console.log('HTTP server is listening at port 3000.');
儲存為testnode.js檔案,用Node執行,結果如圖:
簡單吧?
樂了一陣,再仔細想想,伺服器是搭起來了,可是伺服器每次訪問的響應內容都寫死了,如果我想訪問特定的HTML頁面,怎麼辦?
一番搜尋後,找到了一篇博文中的程式碼(博文 連結地址 ,部落格 連結地址,作者shawn.xie),摘錄如下:
http.js
var PORT = 3000;
var http = require('http');
var url=require('url');
var fs=require('fs');
var mine=require('./mine').types;
var path=require('path');
var server = http.createServer(function (request, response) {
var pathname = url.parse(request.url).pathname;
var realPath = path.join("assets", pathname);
//console.log(realPath);
var ext = path.extname(realPath);
ext = ext ? ext.slice(1) : 'unknown';
fs.exists(realPath, function (exists) {
if (!exists) {
response.writeHead(404, {
'Content-Type': 'text/plain'
});
response.write("This request URL " + pathname + " was not found on this server.");
response.end();
} else {
fs.readFile(realPath, "binary", function (err, file) {
if (err) {
response.writeHead(500, {
'Content-Type': 'text/plain'
});
response.end(err);
} else {
var contentType = mine[ext] || "text/plain";
response.writeHead(200, {
'Content-Type': contentType
});
response.write(file, "binary");
response.end();
}
});
}
});
});
server.listen(PORT);
console.log("Server runing at port: " + PORT + ".");
mine.js
exports.types = {
"css": "text/css",
"gif": "image/gif",
"html": "text/html",
"ico": "image/x-icon",
"jpeg": "image/jpeg",
"jpg": "image/jpeg",
"js": "text/javascript",
"json": "application/json",
"pdf": "application/pdf",
"png": "image/png",
"svg": "image/svg+xml",
"swf": "application/x-shockwave-flash",
"tiff": "image/tiff",
"txt": "text/plain",
"wav": "audio/x-wav",
"wma": "audio/x-ms-wma",
"wmv": "video/x-ms-wmv",
"xml": "text/xml"
};
index.html
<!--這個頁面是我自己寫的-->
<h1>Node.js</h1>
<p>Hello World!</p>
目錄結構如下:
--http.js
--mine.js
--assets
|
--index.html
【注:程式碼和檔案裡的mine應為mime(多用途網際網路郵件擴充套件型別),此處應為作者筆誤,未改】
用Node執行http.js,然後在瀏覽器中開啟 localhost:3000/index.html ,效果如圖
【注:到這一步,這個本地伺服器還不穩定,容易崩潰,可能要多試幾次才能成功】
確實可以訪問特定的檔案了,大家可以來試一試。
但是,如果你細心的話,就會發現當我們訪問 localhost:3000 的時候,瀏覽器會顯示無法訪問網站:
如何把我們的本地伺服器設定為預設顯示主頁(index.html)呢?
這確實花了我一番功夫,四處上網找,可是找到的解決方法都不適用。
最後,我在上面提到的那篇博文下方的評論找到了答案:(真是被坑死了)
http.js
...
//console.log(realPath);
//在程式碼中新增這一段
if (pathname.charAt(pathname.length - 1) == "/") {
//如果訪問目錄
pathname += "index.html"; //指定為預設網頁
}
var ext = path.extname(realPath);
...
修改完成後,用Node執行http.js,開啟 localhost:3000 ,果然可以訪問了:
現在,這個伺服器對我來說算得上是暫時可以滿足開發需求了。
當然這個本地伺服器還有一些不完善的地方,比如MIME型別資料不全,沒有和前端頁面通訊的資料介面,啟動步驟麻煩,這些就留著慢慢改進了。
相關文章
- 淺談使用node.js怎麼搭建本地伺服器Node.js伺服器
- TortoiseSVN搭建本地版本庫及簡單操作使用
- Node 學習 -- 搭建簡單的伺服器伺服器
- Ubuntu 搭建簡單 Git 伺服器UbuntuGit伺服器
- 由node.js搭建的一個簡單的web網站Node.jsWeb網站
- 阿里雲+docker搭建簡單node.js服務阿里DockerNode.js
- linux下ftp伺服器的簡單的搭建LinuxFTP伺服器
- 簡單三分鐘,本地搭建 k8sK8S
- vlc簡單搭建流媒體伺服器伺服器
- 快速搭建本地mock伺服器Mock伺服器
- node.js簡單理解Node.js
- node.js搭建動態伺服器Node.js伺服器
- 搭建Node.js靜態伺服器Node.js伺服器
- Nodejs快速搭建簡單的HTTP伺服器詳細教程。NodeJSHTTP伺服器
- 在Windows下使用MaraDNS搭建簡單的DNS伺服器WindowsDNS伺服器
- 用騰訊雲伺服器搭建一個簡單的後臺伺服器
- Node.js 簡單除錯Node.js除錯
- Node.js簡單瞭解Node.js
- Redhat 簡單本地yum 配置Redhat
- Gin 框架的簡單搭建框架
- Node.js stream 流的簡單認識Node.js
- Node.js 系列 – 搭建 “Hello World” HTTP 伺服器Node.jsHTTP伺服器
- node.js輕鬆搭建一個伺服器Node.js伺服器
- Node.js 系列 - 搭建 "Hello World" HTTP 伺服器Node.jsHTTP伺服器
- 使用Dnsmasq搭建本地dns伺服器上網DNS伺服器
- nodejs中express搭建本地web伺服器NodeJSExpressWeb伺服器
- node.js的伺服器端開發框架Hapi.js簡單程式碼例項Node.js伺服器框架API
- 搬瓦工VPS搭建SS伺服器詳細簡單教程伺服器
- Node.js 系列 – 搭建靜態資源伺服器Node.js伺服器
- Node.js 系列 - 搭建靜態資源伺服器Node.js伺服器
- node.js操作mongodb簡單介紹Node.jsMongoDB
- webpack(10)webpack-dev-server搭建本地伺服器WebdevServer伺服器
- 最簡單的 Git 伺服器Git伺服器
- samba伺服器的簡單配置Samba伺服器
- 使用Node.js寫一個簡單的api介面Node.jsAPI
- node.js的編碼規範簡單介紹Node.js
- Node.js Stream(流) 簡單易懂全解析Node.js
- node.js實現的簡單udp廣播伺服器和客戶端程式碼例項Node.jsUDP伺服器客戶端