node.js初識07
阿新 • • 發佈:2018-03-06
pan 之前 creat list readfile utf8 自帶 目錄 text
之前有說過,nodejs是 沒有web容器的,阿帕奇是自帶的web容器,如果希望node達到阿帕奇的效果,即http://127.0.0.1:3000/a/b/c.html 出現這樣的鏈接訪問頁面,所以需要編程以達到這個效果
文件目錄如下,只需要看static.js和static這個文件夾就好了
static.js
var http = require("http"); var url = require("url"); var fs = require("fs"); var path = require("path"); http.createServer(function(req,res){ var pathname= url.parse(req.url).pathname; if(pathname=="/"){ pathname="index.html"; } //拓展名 var extname = path.extname(pathname); fs.readFile("./static/"+pathname,function(err,data){ if (err) { //如果此文件不存在可以返回一個404頁面 fs.readFile("./static/404.html",function(err,data){ res.writeHead(404,{"Content-type":"text/html;charset=UTF8"}); res.end(data); }) return; }; //MIME類型,就是 //網頁文件:text/html //jpg文件: image/jpg var mime = getMine(extname); res.writeHead(200,{"Content-type":mime}); res.end(data); }); }).listen(3000,"127.0.0.1"); //如果還有不同格式拓展名,可以繼續case下去, function getMine(extname){ switch(extname){ case ".html" : return "text/html"; break; case ".jpg" : return "image/jpg"; break; case ".png" : return "image/png"; break; case ".css" : return "text/css"; break; } }
getMine的目的就是因為在一些老牌的瀏覽器中如果沒有MIME文件類型,即Content-type,瀏覽器就不會識別並加載他
至此,在node中,基本的web容器就編寫完了
node.js初識07