100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > node.js htttp文件服务器 遇到目录时搜索目录内默认html页面 廖雪峰javascript教程

node.js htttp文件服务器 遇到目录时搜索目录内默认html页面 廖雪峰javascript教程

时间:2018-10-16 03:07:32

相关推荐

node.js htttp文件服务器 遇到目录时搜索目录内默认html页面 廖雪峰javascript教程

廖雪峰javascript教程node.js中http部分最后的练习题:

/wiki/1022910821149312/1023025830950720

在浏览器输入http://localhost:8080/时,会返回404,原因是程序识别出HTTP请求的不是文件,而是目录。请修改file_server.js,如果遇到请求的路径是目录,则自动在目录下依次搜索index.htmldefault.html,如果找到了,就返回HTML文件的内容。

如果在funDirFile内用异步方法,则还没有确定文件是否能被读取,函数就返回空值了。因此这里使用的同步方法。

'use strict'var http = require('http');var fs = require('fs');var path = require('path');var url = require('url');var root = path.resolve(process.argv[2] || '.');var funDirFile = function (filePath, str) {var f1 = path.join(filePath, str);if(fs.statSync(f1).isFile())return f1;};var server = http.createServer(function (request, response) {var pathname = url.parse(request.url).pathname;var filePath = path.join(root, pathname);fs.stat(filePath, function (err, stats) {if (!err && stats.isFile()) {console.log(request.method + ': ' + filePath);response.writeHead(200);fs.createReadStream(filePath).pipe(response);return;} else if (!err && stats.isDirectory()) {var f = funDirFile(filePath, 'index.html');if (!f)f = funDirFile(filePath, 'default.html');if (f) {console.log(request.method + ': ' + f);response.writeHead(200);fs.createReadStream(f).pipe(response);return;}}console.log('404 ' + request.url);response.writeHead(404);response.end('404 Not Found');});});server.listen(8080);console.log('Server is running at http://127.0.0.1:8080/');

刚学node.js,不太懂,这里的同步会不会拖慢服务器速度,使之无法处理多种请求?

如果想改成异步应该怎么改?

node.js htttp文件服务器 遇到目录时搜索目录内默认html页面 廖雪峰javascript教程node.js中http部分练习题

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。