nodejs之koa2框架

koa2会自己吧服务器框架搭建好,如果自己用nodejs,需要引入一些http的包,然后写端口,写一堆乱七八糟的,用koa2的话,都只有一个入口文件,就是路由文件,里面包括几大块:

  • 静态文件目录的生命,告诉服务器那个目录是用来放静态文件的,就是一些html,css,js,image什么。

  • 还有一块就是路由地址的指向,路由文件给每个子路由文件都分配了一个地址,比如smallCourse,给他分配的可能就是/smallCourse/api。

  • 还有一部分是服务器的简单配置,端口号啊等等。

浏览器拿到一个URL地址后,先通过localhost:3000后面的前几个名字去总的路由文件里匹配,找到一样的就去下面的文件下面再匹配,找到一样的地址的函数,就调用。

express

express的入门非常简单,通过创建express的Application就构建了一个expressweb实例。下面我们看看例子来感受一下:

var express = require('express');
var app = express();

app.get('/', function (req, res) {
      res.send('Hello World!');
});

var server = app.listen(3000, function () {
      var host = server.address().address;
      var port = server.address().port;

      console.log('Example app listening at http://%s:%s', host, port);
});

express本身封装了路由模块,因此,可以利用express直接处理各种http路由请求。

在express用四个主要模块:

  • Application:web服务器模块,抽象了web服务器的主要接口,如监听、事件、加载中间件、get\post请求等
  • Request:请求
  • response:响应
  • Router:路由

express用Application、Request、Response、Router四个主要模块,模拟了一个完整的web服务器功能,对了,express还在相当长的一段时期中受到了Connect的影响。在使用express的过程中,你会发现express是一个极简的、灵活的 web 应用开发框架,它提供的这一系列强大的特性,可以帮助你快速创建各种 web 和移动设备应用。

koa

koa 是由 express原班人马打造的(TJ),致力于构建更小、更富有表现力、更健壮的 web 框架。使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,并极大地提升错误处理的效率。koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 koa 应用变得得心应手。
Koa 包含了像 content-negotiation(内容协商)、cache freshness(缓存刷新)、proxy support(代理支持)和 redirection(重定向)等常用任务方法。 与提供庞大的函数支持不同,Koa只包含很小的一部分,因为Koa并不绑定任何中间件。

koa中也包含4个主要模块,Application、Request、Response、Context。此时,router已经被排除在内核之外了。其实,koa只是一个“中间架”,几乎所有的功能都需要由第三方中间件来协同完成。例如koa的router模块,就有20多个,优胜劣汰,自由选择……虽然有不规范之嫌,但是,koa是规范的这就足够了。使用koa,可以最大限度的发挥自己的想象力,利用koa,构建各种个性化的web与移动应用。下面我们看看例子来感受一下:

var koa = require('koa');
var app = koa();

app.use(function *(){
      this.body = 'Hello World';
});

app.listen(3000);

没错,就是这么简单,使用了Generator函数,这也是koa和express最大的不同,express是回调函数,koa是用Generator来作为响应器的。

另外,那个替代了router的context是怎样的呢?下面我们看看例子来感受一下:

app.use(function *(){
      this; // is the Context
      this.request; // is a koa Request
      this.response; // is a koa Response
});

另外,koa中还有co这个工具。co是一个“皮”,通过co来包装Generator和yeild,下面我们看看例子来感受一下:

koa2

目前,koa2结合了async/await已经成为了最好的web开发框架。上一节,已经讲了koa的主要模块和实现原理,此处,我只是简单说说koa2和koa不同之处,下面我们看看例子来感受一下:

const Koa = require('koa');
const app = new Koa();

app.use(ctx => {
      ctx.body = 'Hello World';
});

app.listen(3000);

函数式编程,async/await功能,程序简单,好用,真可谓是居家旅行的不二之选呀。通过查看代码,koa2去除了co中间件,进一步的精简了内核,这一点也正好符合当下性冷淡风格的设计潮流……不禁想赞叹一句,TJ不愧是设计师出身呀……

作者:白昔月
链接:http://www.jianshu.com/p/3806417a1991
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。