在网络上找到的大多数示例中,index.html
文件的提供方式如下:
function serveIndexPage(response) {
fs.readFile('__dirname + /public/index.html', function (err, data) {
response.end(data);
});
};
这似乎是一个坏主意,因为整个文件被读入内存然后发送到客户端。有没有更好的方法来做到这一点?我知道像Connect和Express这样的库提供了这样的功能,但是对于我的项目,我想使用plain node.js。
修改
此外,您有时会看到使用readFileSync
,这更糟糕的是恕我直言。
答案 0 :(得分:1)
理论上,您可以逐行读取文件response.write()将每行发送到客户端。
答案 1 :(得分:1)
通过管道传输数据,因此一个简单的静态HTTP服务器如下所示:
var Http = require('http'),
Url = require('url'),
Path = require('path'),
Fs = require('fs');
Http.createServer(function(req, res) {
var path = Url.parse(req.url).pathname;
var file = Path.join(process.cwd(), path);
path.exists(filename, function(exists) {
if(!exists) {
res.writeHead(404);
res.end();
}
res.writeHead(200, /* mime type */);
var fileStream = Fs.createReadStream(filename);
fileStream.pipe(res);
});
}).listen(process.env.PORT || 1999);
管道是
之类的简写var s = Fs.createReadStream(filename);
s.on('data', function (data) {
res.write(data);
});
s.on('end', function() {
res.end();
});