使用原生的HTTP API
我们构建这样的文件结构:
var http = require("http");
var fs = require("fs");
var server = http.createServer(function (req, res) {
console.log("***"+req.url+"***");
if (req.method == "GET" &&'/images'==req.url.substr(0,7)&&'.jpg' == req.url.substr(-4)) {
console.log("successfully");
fs.stat(__dirname + req.url, function (err, stat) {
if (err || !stat.isFile()) {//如果错误存在或者路径并非是文件时返回错误信息
res.writeHead(404);
res.end('NOT FOUND');
return;
}
console.log(__dirname+"--"+req.url);
serve(__dirname + req.url, 'image/jpg');
});
}
else if ('GET' == req.method && '\/' == req.url) {
serve(__dirname + "\\" + 'index.html', 'text/html');//因为一个/表示转义字符,所以要两个才能表示一个/
}
else {
console.log("website lost"+"--"+req.method+"--"+req.url);
res.writeHead(404);
res.end('NOT FOUND');
}
function serve(path, type) {
res.writeHead(200, { 'Content-Type': type });
fs.createReadStream(path).pipe(res);//创建一个读文件流pipe到res上去
}
})
server.listen(3000);
node server以后
我们在终端可以看见打印出来的信息:
可以看见一开始打印出来的req.url是‘/’,然后根据:
else if ('GET' == req.method && '\/' == req.url) {
serve(__dirname + "\\" + 'index.html', 'text/html');//因为一个/表示转义字符,所以要两个才能表示一个/
}
载入html文件,里面有三张图片,就又刷新一遍,开始进入到images文件夹
所以我们试一下将这一段 else if的代码注释掉,就发现
没错,果然是这样!!
这就是利用原生的API托管一个简单网站,后面的一篇文章将会介绍利用Connect实现一个简单的网站