随着Node.js的日益火热,各种框架开始层出不穷的涌现出来,Node.js也开始逐渐的被应用到处理服务端请求的场景中。搭建Web项目的框架也随之开始出现——express、koa、koa2、egg等,当然要了解其好坏还是要自己去啃源码的。本文将不会涉及到源码,只是带领初学者简单了解下Koa2的基本使用,欢迎大家在评论中互相交流学习。
注意:koa2使用了ES7的语法,所以使用时请升级Node版本到最新。了解更详细的源码信息可以到git上的koajs/koa去了解
1. 项目目录结构
2. 代码逻辑解析
2.1. 包结构文件
[package.json]
{ "name": "weixin-node-koa", "version": "1.0.0", "description": "node.js with koa2", "private": true, "dependencies": { "koa": "^2.0.0", "koa-router": "^7.0.0", "mysql":"2.13.0" }, "scripts": { "start": "node app.js" }, "engines": { "node": ">=6.0.0" }, "author": "Fly", "license": "CENTERM" }
2.2. 启动入口文件
[app.js]
const Koa = require('koa'); const app = new Koa(); const router2controller = require('./app/router2controller.js'); const config = require('./config/config.local.js'); app.use(router2controller()); app.listen(config.port); console.log("Server started and listen on port " + config.port);
如果请求的报文体是XML格式,可以添加下面的代码自动解析报文(注意引用koa-xxx的版本要与koa2对应)
const Koa = require('koa'); const app = new Koa(); const router2controller = require('./app/router2controller.js'); const config = require('./config/config.local.js'); //start接收到的xml数据请求单独解析存储 const xmlParser = require('koa-xml-body'); app.use(xmlParser()).use((ctx,next) => { ctx.data = ctx.request.body; return next(); }); //end app.use(router2controller()); app.listen(config.port); console.log("Server started and listen on port " + config.port);
从代码看到引入了一个router2controller.js的文件,这个文件是完成前端请求到具体处理方法的路由过程
2.3. 路由器文件
[router2controller.js]
该类将会自动扫描controller文件夹中的文件来加载请求映射,不需要挨个请求单独配置
koa-router原生提供方法如下:
router .get('/', async (ctx,next) => { this.body = 'Hello World!'; }) .post('/users', async (ctx,next) => { //TODO }) .put('/users/:id', async (ctx,next) => { //TODO }) .del('/users/:id', async (ctx,next) => { //TODO });
内容版权声明:除非注明,否则皆为本站原创文章。