五.开发进阶(加载静态html/js/css文件)
下面我们在上面例子的基础上实现:能够加载.html页面、.js文件和.css文件。这里只需要对server.js进行修改即可,server.js的内容如下:
var http = require("http");
var url = require("url");
var fs = require('fs');
var path = require('path');
var root = '/home/zhaolianxiang1/test_nodejs'; //定义文件的根目录
function start(route, handle) {
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
console.log("Request for " + pathname + " received.");
//获取文件的后缀名
var ext = path.extname(pathname);
switch (ext) {
case '.html':
case '.css':
case '.js':
var realpath = root + pathname;
//判断请求的文件是否存在
path.exists(realpath, function (exists) {
if (exists) {
//存在的话,读取文件
fs.readFile('.' + request.url, 'utf-8', function (err, data) {
if (err) throw err;
response.writeHead(200, {
"Content-Type" : {
".html": "text/html",
".css" : "text/css",
".js" : "application/Javascript",
}[ext]
});
response.write(data);
response.end();
});
} else {//请求的文件不存在
response.writeHead(404, {"Content-Type" : "text/html"});
response.end("<h1>404 Not Found</h1>");
}
});
break;
default://其他请求进行路由
route(handle, pathname, response);
}
}
http.createServer(onRequest).listen(65535);
console.log('Server has started.');
}
exports.start = start;
然后,我们在当前目录下再建一个文件index.html。
好,接下来我们来看下运行结果,在浏览器输入::65535/index.html,运行结果如下:
在浏览器输入::65535/start,运行结果如下: