Java基础、中级、高级、架构面试资料

node.js Koa 框架 的基本用法

HTML5 herman 3846浏览 0评论
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

Node 主要用在开发 Web 应用。这决定了使用 Node,往往离不开 Web 应用框架。

Koa框架

Koa 就是一种简单好用的 Web 框架。它的特点是优雅、简洁、表达力强、自由度高。本身代码只有1000多行,所有功能都通过插件实现,很符合 Unix 哲学。

安装

Koa 目前需要 >=0.11.x版本的 node 环境。并需要在执行 node 的时候附带 –harmony 来引入 generators 。 如果您安装了较旧版本的 node ,您可以安装 n (node版本控制器),来快速安装 0.11.x。

$ npm install -g n
$ n 0.11.12
$ node --harmony my-koa-app.js

如果你已经安装了Node,那么可以使用下面的命令检查版本。Koa 必须使用 7.6 以上的版本。如果你的版本低于这个要求,就要先升级 Node。

$ node -v
v8.0.0

架设 HTTP 服务

上面我们已经做好了前期的准备公司,下面我就开始用 Koa 架设一个 HTTP 服务。

const Koa = require('koa');
const app = new Koa();
app.listen(3000);

新建一个xttblog.js文件,将上面的代码写入文件,运行下面的命令:

$ node xttblog.js

打开浏览器,访问 http://127.0.0.1:3000 。你会看到页面显示"Not Found",表示没有发现任何内容。这是因为我们并没有告诉 Koa 应该显示什么内容。

Context 对象

Koa 提供一个 Context 对象,表示一次对话的上下文(包括 HTTP 请求和 HTTP 回复)。通过加工这个对象,就可以控制返回给用户的内容。
Context.response.body属性就是发送给用户的内容。

我们再新建一个codedq.js,写入下面的代码:

const Koa = require('koa');
const app = new Koa();
const main = ctx => {
  ctx.response.body = 'Hello World';
};
app.use(main);
app.listen(3000);

上面代码中,main函数用来设置ctx.response.body。然后,使用app.use方法加载main函数。
你可能已经猜到了,ctx.response代表 HTTP Response。同样地,ctx.request代表 HTTP Request。

然后在执行下面的命令:

$ node codedq.js

访问 http://127.0.0.1:3000 ,现在就可以看到"Hello World"了。

HTTP Response 的类型

Koa 默认的返回类型是text/plain,如果想返回其他类型的内容,可以先用ctx.request.accepts判断一下,客户端希望接受什么数据(根据 HTTP Request 的Accept字段),然后使用ctx.response.type指定返回类型。

在 ifxvn.js 文件中写入下面的代码:

const main = ctx => {
  if (ctx.request.accepts('xml')) {
    ctx.response.type = 'xml';
    ctx.response.body = '<data>Hello World</data>';
  } else if (ctx.request.accepts('json')) {
    ctx.response.type = 'json';
    ctx.response.body = { data: 'Hello World' };
  } else if (ctx.request.accepts('html')) {
    ctx.response.type = 'html';
    ctx.response.body = '<p>Hello World</p>';
  } else {
    ctx.response.type = 'text';
    ctx.response.body = 'Hello World';
  }
}

然后运行这个文件:

$ node ifxvn.js

访问 http://127.0.0.1:3000 ,现在看到的就是一个 XML 文档了。

网页模板

实际开发中,返回给用户的网页往往都写成模板文件。我们可以让 Koa 先读取模板文件,然后将这个模板返回给用户。看下面的代码:

const fs = require('fs');
const main = ctx => {
  ctx.response.type = 'html';
  ctx.response.body = fs.createReadStream('./hellword.html');
};

运行这个 ndislwf.js。

$ node ndislwf.js

访问 http://127.0.0.1:3000 ,看到的就是hellword.html文件的内容了。

限于篇幅,我们下章继续学习 koa 框架的路由功能。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » node.js Koa 框架 的基本用法