赖同学


  • 首页

  • 标签

  • 分类

  • 归档

  • 站点地图

  • 留言

  • 搜索

Nodejs实战 —— 服务器端框架

发表于 December 7, 2018|分类于 NodeJS|阅读次数: –
字数统计: 872|阅读时间: 5 min

读 《node.js 实战 2.0》,进行学习记录总结。

当当网购买链接

豆瓣网 1.0 链接

服务器端框架

本章内容

  • '使用热门的 Node Web 框架'
  • '选择合适的框架'
  • '用 Web 框架搭建 Web 程序'

如何为给定项目选择最好的框架。

![选择 Node 框架](/images/posts/2018-12-07-NodeJs2-Part5-选择 Node 框架.png)

Koa

Koa 是以 Express 为基础开发的,但它用 ESS2015 中的生成器语法来定义中间件,可以用 yield 退出和重入中间件。

主要特点:HTTP 服务器库,基于生成器的中间件,请求/响应模型,应用于轻型 Web 程序、不严格的 HTTP API、单页 Web 程序。

这段代码演示了 在 Koa 如何使用 yield 转到下一个中间件组件,等它执行完再回来继续执行调用者中间件的逻辑。

const koa = require('koa');
const app = koa();
app.use(function*(next) {
            const start = new Date();
            // yield 以运行下一个中间件组件
            yield next;
            const ms = new Date - 'start;'
            console.log('%s %s - ' % s ',this.method, this.url, ms);'
            }); app.use(function*() {
            // 运行完后回到最初 yield 的位置继续执行
            this.body = 'Hello World';
        }); app.listen(3000);

注意关键字 function *,这里是不可能用箭头函数的。用 yield 关键字将执行步骤转到中间件的栈中去,然后在下一个中间件返回后再回来。使用生成器函数带来的额外好处是只要设定 this.body 就好了。Express 则需要用函数发送响应:res.send(response)。在 Koa 中间件中, this 就是上下文。每个请求都有对应的上下文,用来封装 Node 的 HTTP request 和 response 对象。在需要访问请求里的东西时,比如 Get 参数或者是 cookie,可以通过这个请求上下文来访问。响应也是如此, 设定 this.body 的值就可以控制送什么给浏览器。

设置

Koa 项目的设置工作包括安装模块和定义中间件。如果需要更多功能,比如要通过路由 API 定义和响应各种 HTTP 请求,则需要安装路由中间件。

定义路由

koa-router 是一个流行的路由器中间件组件。它也是基于 HTTP 动词的,这点跟 Express 一样,不同之处是它的链式 API。下面这段代码演示了它的路由定义:

router
  .post("/pages", function* (next) {
    // 创建页面
  })
  .get("pages/:id", function* (next) {
    // 渲染页面
  })
  .put("pages-update", "/pages/:id", function* (next) {
    // 更新页面
  });

可以提供额外的参数给路由命名。这可以用来生成 URL,并不是所有 Node Web 框架都支持这一功能。这里有个例子:

router.url("pages-update", "99");

优缺点

官网

总结

  • 'Koa 轻便、极简,在中间件中使用 ES2015 生成器语法。适合依赖外部 Web API 的单页 Web 程序'
  • 'hapi 的重点是 HTTP 服务器和路由。适合由很多小服务器组成的轻便后台。'
  • 'Flatiron 是一组解耦的模块,既可以当作 Web MVC 框架来用,也可以当作更轻便的 Express 库。Flatiron 跟 Connect 中间件是兼容的'
  • 'Kraken 是基于 Express 的,添加了安全特性。可以用于 MVC。'
  • 'Sails.js 是 Rails/Django 风格的 MVC 框架。有 ORM 和模板系统。'
  • 'DerbyJS 是个同构框架,适合实时程序'
  • 'LoopBack 帮我们省掉了写套路化代码的工作。它可以快速生成带有数据库支持的 REST API,并有个 API 管理界面。'
NodeJS
Nodejs实战 —— 深入了解Connect 和 Express
Nodejs实战 —— 前端构建系统
  • 文章目录
  • 站点概览
  1. 1.服务器端框架
  2. 2.Koa
    1. 1.<strong>设置</strong>
    2. 2.<strong>定义路由</strong>
    3. 3.<strong>优缺点</strong>
    4. 4.总结
© 2018 — 2023赖彬鸿
1.6k
载入天数...载入时分秒...
0%