koa2框架使用
来源:互联网 发布:哪个软件可以群发短信 编辑:程序博客网 时间:2024/06/08 12:22
koa是express框架原班人马打造
更轻量级
最重要的是!
不用写回调
需要啥中间件就引用啥
const Koa = require('koa')
const app = new Koa()
const views = require('koa-views')
const json = require('koa-json')
const onerror = require('koa-onerror')
const bodyparser = require('koa-bodyparser')
const logger = require('koa-logger')
const index = require('./routes/index')
// middlewaresapp.use(bodyparser({ enableTypes:['json', 'form', 'text']}))app.use(json())app.use(logger())app.use(require('koa-static')(__dirname + '/public'))app.use(views(__dirname + '/views', { extension: 'pug'}))// loggerapp.use(async (ctx, next) => { const start = new Date() await next() const ms = new Date() - start console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)})// routesapp.use(index.routes(), index.allowedMethods())app.use(ship.routes(), ship.allowedMethods())app.use(others.routes(), others.allowedMethods())app.use(pscRoute.routes(), pscRoute.allowedMethods())// error-handlingapp.on('error', (err, ctx) => { console.error('server error', err, ctx)});module.exports = app
把路由添加进去后
const router = require('koa-router')()
通过如下办法处理url
router.get('/ship', async (ctx, next) => { await ctx.render('index', { title: 'Hello ship!' })});router.post('/ship/info', async (ctx, next) => { var reqParam=ctx.request.body; const resStr = await shipService.getShipInfo(reqParam); ctx.body=resStr;});ctx
上下文(Context)
Koa Context 将 node 的 request 和 response 对象封装到单个对象中,为编写 Web 应用程序和 API 提供了许多有用的方法。 这些操作在 HTTP 服务器开发中频繁使用,它们被添加到此级别而不是更高级别的框架,这将强制中间件重新实现此通用功能。
每个 请求都将创建一个 Context,并在中间件中作为接收器引用,或者 ctx 标识符
值得一提的是,,这种不用写回调的写法
基本规则
async 表示这是一个async函数,await只能用在这个函数里面。
await 表示在这里等待promise返回结果了,再继续执行。
await 后面跟着的应该是一个promise对象(当然,其他返回值也没关系,只是会立即执行,不过那样就没有意义了…)
service层
this.getShipInfo = async (reqParam) => {
dao调用
res返回串的处理
}
dao
this.getShipInfo = async(ccsno) =>{
var sql = "select ~~~~ where id = :id";
var param = {id:id};
try {
var results = await
oracle.execute(sql,param);
return oracleutil.getKeyValueDataArr(results);
}
catch (e) {
return "error";
}
}
其中oracle执行方法:
exports.execute = async (statement, params=[]) => new Promise((resolve, reject) => { oracledb.getConnection( ).then(connection => { return connection.execute( statement, params ).then(result => { resolve(result); return connection.release(); }).catch(err => { 日志 reject(err); return connection.release(); }) }).catch(err => { 日志 reject(err) }); });exports.getconnection = async ()=>oracledb.getConnection()
- koa2框架使用
- NodeJs之Koa2使用
- nodejs koa2的基础使用
- koa2入门之使用koa-generator生成koa2项目
- 使用Koa2进行Web开发(一)
- 使用koa-generator生成koa2项目
- 使用Node+Koa2+Mysql搭建简易博客
- nodejs6以下使用koa2,async,await
- 为什么使用koa2搭建微信第三方公众平台
- 为什么使用koa2搭建微信第三方公众平台
- koa2 初探
- koa2 笔记
- 使用Koa2进行Web开发(二)静态文件与路由
- 使用pm2部署node koa2项目并实现自动重启
- Node — Koa2
- Koa2 学习文档
- koa2 源码学习
- koa2 hello world 示例
- 漫反射着色
- 设计模式
- 姿态检测整理--01-Stacked Hourglass Networks for Human Pose Estimation
- 让你博客的代码显示得更酷
- 操作系统 — 虚拟内存和物理内存的区别和联系
- koa2框架使用
- PHPSTORM XDEBUG 调试配置
- MySQL常见的三种存储引擎(InnoDB、MyISAM、MEMORY)
- 无侵入埋点之从UIApplicationMain函数的参数入手
- QT中基于QScrollArea封装一个能够动态产生控件的类
- 1、matlab机器人运动学计算
- spring+springmvc+hibernate+thymeleaf 练习
- element-ui框架的知识点总结
- spring基于注解形式配置事物