分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

node.js中 koa 框架的基本使用方法

发布时间:2023-09-06 02:30责任编辑:赖小花关键词:js

一、安装 koa

npm install koa --save

  

二、简单使用

const koa = require(‘koa‘);//注意使用koa需要new,跟express有点不同let app = new koa();app.listen(8888);//use()方法将中间件加入应用中app.use(async function (ctx, next) { ???//ctx.res 原生res ???//ctx.req 原生req ???//ctx.request 被koa包装过的req对象 ???//ctx.response 被koa包装过的res对象 ???ctx.response.body = ‘ok‘;});//发生错误时触发app.on(‘error‘, function (err) { ???console.log(err);});

  

三、级联中间件的概念

const koa = require(‘koa‘);let app = new koa();app.listen(8888);app.use(async function (ctx, next) { ???console.log(‘1‘); ???await next(); ???console.log(‘2‘);});app.use(async function (ctx, next) { ???console.log(‘3‘); ???await next(); ???console.log(‘4‘);});app.use(async function (ctx, next) { ???console.log(‘5‘);});

上述代码最终会打印出 1 3 5 4 2,koa中间件里的 await next() 之前的代码会一级一级向下执行,直到没有更多中间件执行,然后再像栈一样的执行 await next() 之后的代码。

四、获取get请求参数

const koa = require(‘koa‘);const router = require(‘koa-router‘);let app = new koa();let route = new router();app.listen(8888);route.get(‘/:id‘, function (ctx, next) { ???//获取请求方法 ???console.log(ctx.method); ???//获取请求URL ???console.log(ctx.url); ???//获取请求路径 ???console.log(ctx.path); ???//获取请求查询字符串对象 ???console.log(ctx.query); ???//获取请求查询字符串 ???console.log(ctx.querystring); ???//获取路由参数 ???console.log(ctx.params); ???//获取请求头对象 ???console.log(ctx.headers);});app.use(route.routes());

  

五、获取post表单数据和文件上传

安装 koa-better-body 用于解析

npm install koa-better-body --savenpm install koa-convert --save

 注意使用 koa-better-body 需要用 koa-convert 转换一下。

const fs = require(‘fs‘);const path = require(‘path‘);const koa = require(‘koa‘);const router = require(‘koa-router‘);const betterBody = require(‘koa-better-body‘);const convert = require(‘koa-convert‘);let app = new koa();let route = new router();app.listen(8888);//使用koa-better-body需要用koa-convert转一下app.use(convert(betterBody({ ???//指定上传的目录 ???uploadDir: path.join(__dirname, ‘uploads‘), ???//是否保留扩展名 ???keepExtensions: true, ???//设置上传文件大小最大限制,默认2M ???maxFileSize: 1024 * 1024 * 1024})));route.get(‘/‘, function (ctx, next) { ???ctx.response.set(‘Content-Type‘, ‘text/html;charset=utf-8‘); ???ctx.body = fs.readFileSync(‘./index.html‘);});route.post(‘/post‘, function (ctx, next) { ???//post表单数据 ???console.log(ctx.request.fields); ???//上传文件的详细信息 ???console.log(ctx.request.files);});app.use(route.routes());

index.html的代码:

<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>表单</title></head><body><form action="http://localhost:8888/post" method="post" enctype="multipart/form-data"> ???用户名:<input type="text" name="name"><br> ???密码:<input type="password" name="pwd"><br> ???头像:<input type="file" name="head"><br> ???信息1:<input type="file" name="info"><br> ???信息2:<input type="file" name="info"><br> ???<input type="submit" name="提交"></form></body></html>

  

 六、路由中间件 koa-router

npm install koa-router --save

路由是可以设置多级的,可以嵌套。方便我们自由拆分。

const koa = require(‘koa‘);const router = require(‘koa-router‘);let app = new koa();app.listen(8888);let users = new router();let order = new router();users.get(‘/‘, function (ctx) { ???ctx.body = ‘用户页面‘;});users.get(‘/add‘, function (ctx) { ???ctx.body = ‘用户添加页面‘;});order.get(‘/‘, function (ctx) { ???ctx.body = ‘订单页面‘;});order.get(‘/add‘, function (ctx) { ???ctx.body = ‘订单添加页面‘;});let route = new router();route.use(‘/users‘, users.routes());route.use(‘/order‘, order.routes());app.use(route.routes());

  

七、cookie的设置与读取

koa中可以直接通过 ctx.cookies.set() 或 ctx.cookies.get() 进行设置和获取cookie

const koa = require(‘koa‘);const router = require(‘koa-router‘);let app = new koa();app.listen(8888);//设置cookie签名加密时,需要配置密钥app.keys = [ ???‘2dsfjo3rt3pt934rjh2‘];let route = new router();route.get(‘/‘, function (ctx, next) { ???//参数一表示,cookie名称 ???//参数二表示,cookie的值 ???//参数三表示,cookie的配置选项 ???ctx.cookies.set(‘test‘, ‘test‘, { ???????//cookie所在的域名 ???????domain: ‘localhost‘, ???????//cookie所在的路径 ???????path: ‘/‘, ???????//有效时间,单位毫秒 ???????maxAge: 3600 * 1000, ???????//失效时间 ???????expires: new Date(Date.now() + 3600 * 1000), ???????//是否只能在http中获取 ???????httpOnly: true, ???????//是否允许重写 ???????overwrite: true ???}); ???//设置cookie是否签名加密,如果设置签名加密,需配置app.keys ???ctx.cookies.set(‘name‘, ‘xiaoxu‘, {signed: true}); ???//获取cookie ???console.log(ctx.cookies.get(‘test‘)); ???console.log(ctx.cookies.get(‘name‘));});app.use(route.routes());

  

八、session的使用

安装 koa-session 中间件

npm install koa-session --save

koa-session默认会话是基于cookie实现的,当然会话信息也可以保存到其它地方。

const koa = require(‘koa‘);const router = require(‘koa-router‘);const session = require(‘koa-session‘);let app = new koa();app.listen(8888);//设置签名加密的密钥app.keys = [ ???‘rj345jptjgadsfjeasltrg‘];let route = new router();//使用koa-session中间件app.use(session({ ???//cookie的名称 ???key: ‘session‘, ???//有效时间 ???maxAge: 3600 * 1000, ???//是否自动提交头信息 ???autoCommit: true, ???//是否充许重写 ???overwrite: true, ???//是否只能http获取 ???httpOnly: true, ???//是否签名加密 ???signed: true}, app));route.get(‘/‘, function (ctx, next) { ???if (ctx.session.count) { ???????++ctx.session.count; ???} else { ???????ctx.session.count = 1; ???} ???ctx.body = `您是第 ${ctx.session.count} 次访问`;});app.use(route.routes());

  

九、模板引擎ejs的使用

npm install koa-ejs --save

通过ejs模板引擎,我们可以很方便的渲染页面。

const path = require(‘path‘);const koa = require(‘koa‘);const router = require(‘koa-router‘);const ejs = require(‘koa-ejs‘);let app = new koa();app.listen(8888);let route = new router();//模板引擎配置ejs(app, { ???//模板目录 ???root: path.join(__dirname, ‘views‘), ???//布局文件 ???layout: false, ???//模板扩展名 ???viewExt: ‘html‘, ???//是否开启缓存 ???cache: false, ???//是否开启调试信息 ???debug: true});route.get(‘/‘, async function (ctx, next) { ???await ctx.render(‘index‘, { ???????name: ‘xiaoxu‘, ???????age: 24 ???});});app.use(route.routes());

  

十、静态资源中间件

我们使用 koa-static-cache 这个中间件。

npm install koa-static-cache --save

使用 koa-static-cache 帮我们处理静态资源

const path = require(‘path‘);const koa = require(‘koa‘);const static = require(‘koa-static-cache‘);let app = new koa();app.listen(8888);//使用中间件,并配置静态资源目录app.use(static(path.join(__dirname, ‘public‘), { ???//是否压缩文件 ???gzip: true, ???//缓存有效时间 ???maxAge: 60}));

  

node.js中 koa 框架的基本使用方法

原文地址:https://www.cnblogs.com/jkko123/p/10296491.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved