博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
koa2入门使用总结
阅读量:6693 次
发布时间:2019-06-25

本文共 3428 字,大约阅读时间需要 11 分钟。

koa2的介绍

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

koa2安装

npm install koa

koa middleware

每收到一个http请求,koa就会调用通过app.use()注册的async函数,并传入ctx和next参数

middleware的顺序很重要,也就是调用app.use()的顺序决定了middleware的顺序

对于await next(),如果一个middleware没有调用,则后续的middleware将不再执行了,使用场景

如,一个检测用户权限的middleware可以决定是否继续处理请求,还是直接返回403错误

app.use(async (ctx, next) => {    if (await checkUserPermission(ctx)) {        await next();    } else {        ctx.response.status = 403;    }});

ctx简写

ctx.url相当于ctx.request.url,ctx.type相当于ctx.response.type

url处理 ,使用koa-router

安装koa-router

npm install koa-router
// 注意require('koa-router')返回的是函数:const router = require('koa-router')();这里导入koa-router的语句最后的()是函数调用const router = require('koa-router')();相当于 const fn_router = require('koa-router');const router = fn_router();// add url-route:router.get('/hello/:name', async (ctx, next) => {    var name = ctx.params.name;    ctx.response.body = `

Hello, ${name}!

`;});router.get('/', async (ctx, next) => { ctx.response.body = '

Index

';});// add router middleware:app.use(router.routes());

这样我们在访问http://localhost:3000/hello/kerry时会打印hello,kerry

处理post请求

post请求通常会发送一个表单,或者JSON,它作为request的body发送,但无论是Node.js提供的原始request对象,还是koa提供的request对象,都不提供解析request的body的功能,所以我们需要用到koa-bodyparser中间件来解析request的body

安装koa-bodyparser

npm install koa-bodyparser
const bodyParser = require('koa-bodyparser');// 解决body 需在router之前注册到app对象上app.use(bodyParser());这样我们就可以处理post请求了router.get('/', async (ctx, next) => {    ctx.response.body = `

Index

Name:

Password:

`;});router.post('/signin', async (ctx, next) => { var name = ctx.request.body.name || '', password = ctx.request.body.password || ''; console.log(`signin with name: ${name}, password: ${password}`); if (name === 'koa' && password === '12345') { ctx.response.body = `

Welcome, ${name}!

`; } else { ctx.response.body = `

Login failed!

Try again

`; }});

代码优化

所有的代码都放在了app.js中

我们可以单独将所有路由放到一个js文件中,如果是复杂系统,还可以按模块建立多个路由文件,如
user.js(处理用户管理相关url)、login.js(处理用户登录相关url)

静态资源

安装koa-static

npm install koa-static
const static = require('koa-static')const path = require('path')// 静态资源目录app.use(static(  path.join( __dirname,'./static')));

我们在根目录下建立static文件夹,新建一个json文件,输入如下地址访问

http://localhost:3000/china.geojson

art-template模板引擎

npm install --save art-templatenpm install --save koa-art-template// 模板引擎const render = require('koa-art-template');render(app, {  root: path.join(__dirname, './static'),  extname: '.html',  // debug: process.env.NODE_ENV !== 'production'});// 使用ctx.render渲染页面 可传递数据router.get('/user', async (ctx, next) => {    ctx.render('user',{            data:'hello msg'    });});

html中渲染数据 {

{data}}

更多用法查看

koa2 跨域请求设置

https://github.com/zadzbw/koa2-corsnpm install --save koa2-corsvar cors = require('koa2-cors');app.use(cors());

开发部署 ,使用nodemon在本地开发环境下自动重启项目

1、 项目搭建好后,通过node运行

node app.js

也可以在package.json中添加scripts

"scripts": {    "start": "node app.js"}

这样就可以运行

npm run start

然后访问http://localhost:3000

2、 通过nodemon来运行项目

npm install -g nodemon

之后用 nodemon 来代替 node 来启动应用

nodemon app.js

3、 如果是在线上 我们则使用pm2来管理应用程序,

pm2 是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的

最后

通过以上简单介绍对koa2使用,我搭建了一个koa2本地静态node服务器,已上传至github,欢迎大家star或clone

转载地址:http://wicoo.baihongyu.com/

你可能感兴趣的文章
让元素居中
查看>>
php memcache保存session的一个设置误区
查看>>
鱼眼镜头
查看>>
Scalatra
查看>>
CentOS 7 三者分离编译安装LAMP
查看>>
Linux内核调整,支持4000-8000并发
查看>>
jquery mobile 设置设备适配
查看>>
redis使用总结-redis命令总结
查看>>
创业浪潮:春天蓬勃而来
查看>>
阿里云Linux安装软件镜像源
查看>>
阿里云对象存储OSS支持版本管理特性
查看>>
用python 访问redis的几种常用方式
查看>>
我的友情链接
查看>>
Linux Shell 基本概念及编程(5)
查看>>
RDBMS DBMS MS DB
查看>>
我的友情链接
查看>>
svn 实践
查看>>
在 PowerShell 中使用 SQL Server (3)
查看>>
我的友情链接
查看>>
CSS元素定位
查看>>