使用Node在浏览器中显示文件内容,我首先尝试了以下方法:
var express = require('express')
, fs = require('fs')
, app = express()
, port = process.env.PORT || 5000;
app.use(express.logger());
var data = fs.readFileSync('index.html');
app.get('/', function(req, res){
res.send(data);
});
app.listen(port, function(){
console.log('Listenting on ' + port);
});
然而,这并没有像预期的那样起作用。实际上,浏览器提供了 index.html
的内容作为一个文件,我首先必须下载它,然后手动在文本编辑器中打开它。接着,我尝试使用缓冲区来做同样的事情:
var express = require('express')
, fs = require('fs')
, app = express()
, port = process.env.PORT || 5000;
app.use(express.logger());
var data = new Buffer(fs.readFileSync('index.html'));
app.get('/', function(req, res){
res.send(data.toString('utf-8'));
});
app.listen(port, function(){
console.log('Listenting on ' + port);
});
这段代码按预期工作,index.html
的内容在浏览器窗口中显示。然而,在我有限的了解Node.js的情况下,Buffer类是处理二进制数据的全局类型。然而,index.html
文件没有包含任何二进制数据。所以我的问题是:
- 在上述代码中,为什么
index.html
的内容被提供为文件下载(没有缓冲区),而不是直接在浏览器中显示(使用缓冲区)? - 当文件只包含字符串数据而没有二进制数据时,为什么需要使用缓冲区?
- 缓冲区用于哪些其他场景?
- 如果我想了解更多关于缓冲区及其在Node中的使用,请问应该去哪里?