本篇文章主要介绍了"Express、Koa、Hapi框架对比",主要涉及到方面的内容,对于Javascriptjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
中文翻译:http://ourjs.com/detail/5490db1c8a34fa320400000e英文原文:https://www.airpair.co...
4.1.1 Express
var express = require('express');
var app = express();
app.get('/', function(req, res) {
res.send('Hello world');
});
var server = app.listen(3000, function() {
console.log('Express is listening to http://localhost:3000');
});
我们用get()
函数来捕获“GET /”请求然后调用一个回调函数,这个回调函数会被传入req
和res
两个对象。这个例子当中我们只利用了res
的res.send()
来返回整个页面的字符串。Express有很多内置的方法可以用来进行路由控制。get
, post
, put
, head
, delete
等等这些方法都是Express支持的最常用的方法(这只是一部分而已,并不是全部)。
4.1.2 Koa
var koa = require('koa');
var app = koa();
app.use(function *() {
this.body = 'Hello world';
});
var server = app.listen(3000, function() {
console.log('Koa is listening to http://localhost:3000');
});
Koa和Express稍微有点儿不同,它用了ES6的generators。所有带有*
前缀的函数都表示这个函数会返回一个generator对象。根本上来说,generator会同步地yield
出数据(译注:如果对Python比较熟悉的话,应该对ES6的generator不陌生,这里的yield
其实和Python的yield语句差不多一个意思),这个超出本文所探索的内容,不详述。在app.use()
函数中,generator函数设置响应体。在Koa中,this
这个上下文其实就是对node的request
和response
对象的封装。this.body
是KoaResponse
对象的一个属性。this.body
可以设置为字符串, buffer, stream, 对象, 或者null也行。上面的例子中我们使用了Koa为数不多的中间件的其中一个。这个中间件捕获了所有的路由并且响应同一个字符串。
4.1.3 Hapi
var Hapi = require('hapi');
var server = new Hapi.Server(3000);
server.route({
method: 'GET',
path: '/',
handler: function(request, reply) {
reply('Hello world');
}
});
server.start(function() {
console.log('Hapi is listening to http://localhost:3000');
});
这里使用了server
对象给我们提供的server.route
内置的方法,这个方法接受配置参数:path
(必须),method
(必须),vhost
,和handler
(必须)。HTTP方法可以处理典型的例如GET
、PUT
、POST
、DELETE
的请求,*
通配符可以匹配所有的路由。handler函数被传入一个request
对象的引用,它必须调用reply
函数包含需要返回的数据。数据可以是字符串、buffer、可序列化对象、或者stream。
4.2 REST API
Hello world除了给我们展示了如何让一个应用程序运行起来以外几乎啥都没干。在所有的重数据的应用程序当中,REST API几乎是一个必须的设计,并且能让我们更好地理解这些框架是可以如何使用的。现在让我们看看这些框架是怎么处理REST API的。