NodeJS 中的基本静态文件服务器

2023-11-29

我试图在 Node.js 中创建一个静态文件服务器,更多的是作为理解 Node 的练习,而不是作为一个完美的服务器。我很了解 Connect 和 node-static 等项目,并完全打算使用这些库来编写更多可用于生产的代码,但我也喜欢了解我正在使用的基础知识。考虑到这一点,我编写了一个小型 server.js:

var http = require('http'),
    url = require('url'),
    path = require('path'),
    fs = require('fs');
var mimeTypes = {
    "html": "text/html",
    "jpeg": "image/jpeg",
    "jpg": "image/jpeg",
    "png": "image/png",
    "js": "text/javascript",
    "css": "text/css"};

http.createServer(function(req, res) {
    var uri = url.parse(req.url).pathname;
    var filename = path.join(process.cwd(), uri);
    path.exists(filename, function(exists) {
        if(!exists) {
            console.log("not exists: " + filename);
            res.writeHead(200, {'Content-Type': 'text/plain'});
            res.write('404 Not Found\n');
            res.end();
        }
        var mimeType = mimeTypes[path.extname(filename).split(".")[1]];
        res.writeHead(200, mimeType);

        var fileStream = fs.createReadStream(filename);
        fileStream.pipe(res);

    }); //end path.exists
}).listen(1337);

我的问题是双重的

  1. 这是在节点中创建和流式传输基本 html 等的“正确”方法还是有更好/更优雅/更健壮的方法?

  2. 节点中的 .pipe() 基本上只是执行以下操作吗?

.

var fileStream = fs.createReadStream(filename);
fileStream.on('data', function (data) {
    res.write(data);
});
fileStream.on('end', function() {
    res.end();
});

感谢大家!


少即是多

只需首先在您的项目中进入命令提示符并使用

$ npm install express

然后编写你的 app.js 代码,如下所示:

var express = require('express'),
app = express(),
port = process.env.PORT || 4000;

app.use(express.static(__dirname + '/public'));
app.listen(port);

然后,您将创建一个“公共”文件夹来放置文件。我首先尝试了更困难的方法,但你必须担心 mime 类型,这只是需要映射耗时的内容,然后担心响应类型等。等等等等......不,谢谢。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NodeJS 中的基本静态文件服务器 的相关文章

随机推荐