Web应用开发框架-koa(一)——koa入门与使用、context对象 & 读取并返回html片段之response把读取的内容返回给客户端

Web应用开发框架-koa(一)——koa入门与使用、context对象 & 读取并返回html片段之response把读取的内容返回给客户端

web应用开发框架

内容简介

  • koa入门与使用
  • egg介绍以及实战
  • adonis简介

学习目标

  • 掌握nodejs后端开发思想
  • 掌握koa基本使用以及其生态
  • 能使用egg开发实际项目

第一章 koa入门与使用

在这里插入图片描述

简介

Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。

  • 下一代, 超前
  • 新的语法, es7
  • 优雅

安装

Koa 依赖 node v7.6.0 或 ES2015及更高版本和 async 方法支持.

你可以使用自己喜欢的版本管理器快速安装支持的 node 版本:

$ nvm install 7
$ npm i koa

基本用法

1.架设http服务

只要三行代码,就可以用 Koa 架设一个 HTTP 服务。

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

app.listen(3000);
2. context对象

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

Context.response.body属性就是发送给用户的内容。

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。

实例

app.js

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

const main = (ctx) => {  // koa提供的context对象
    // ctx.status = 200;
    ctx.response.body = 'hello world'; // 为什么 修改body之后 status就变为了200.  通过set劫持,只要修改了body就会自动把status改为200.
}

app.use(main);  //  接收一个函数
app.listen(3000);  // 起服务 , 监听3000端口
3. http response类型

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

// demos/03.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';
  }
};
4. 网页模板

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

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

const main = (ctx) => {
    ctx.response.type = 'html';
    ctx.response.body = fs.createReadStream(path.resolve(path.join(__dirname, './demo.html')));
}

app.use(main);
app.listen(3000);
实例

http.js

var koa = require('koa');
var app = new koa();
var fs = require('fs');
var path = require('path');
// 1.  使用nodejs读取html文件
// 2. response把读取的内容返回给客户端

const main = (ctx) => {  // koa提供的context对象
    ctx.response.type = 'html';
    ctx.response.body = fs.createReadStream(path.resolve(path.join(__dirname, './demo.html')));  // 一定要区别路径,好好体会一下!!!!!
}

app.use(main);  //  接收一个函数
app.listen(3000);  // 起服务 , 监听3000端口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值