目前炙手可热的2大框架express和koa。Express诞生已有时日,是一个简洁而灵活的web开发框架,使用简单而功能强大。Koa相对更为年轻,是Express框架原班人马基于ES6新特性重新开发的敏捷开发框架,现在可谓风头正劲,大有赶超Express之势。虽然两个框架为同一个团队开发,但是express中的很多函数和用法在koa2中已经不适用了,koa2用更多的中间件来实现原本express自带的功能;
言归正传,首先我们来看一下express4.x res.sendFile()的实现:
var app = require('express')();
var http = require('http').Server(app);
app.get('/', function(req, res){
res.sendFile(__dirname+'/index.html');
});
http.listen(5566, function(){
console.log('listening on *:5566');
});
当我们使用koa2时,我们发现这个函数已经不适用了(包括 res.send()),取而代之的是ctx.response.body
,对于要加载的HTML文件,我们采用读取文件再写入到body中的方式实现。
// index.html位于根目录下
router.get('/', async(ctx, next) => {
var htmlFile = await (new Promise(function(resolve, reject){
fs.readFile('index.html', (err, data) => {
if (err){
reject(err);
}else{
resolve(data);
}
});
}))
ctx.type = 'html';
ctx.body = htmlFile;
});
//还可以是用ReadStream,更简单
router.get('/',(ctx, next) => {
ctx.type = 'html';
ctx.body = fs.createReadStream('index.html');
});