Node.js笔记-Koa2与Redis在项目中安装使用

发布时间:2022-08-19 12:11

目录

环境搭建

async和await语法

Koa中间件

Koa的路由

Cookies和Session

Redis(高速读写)

安装

session运用Redis

终端查询Redis

跳过session用Redis


环境搭建

  1. 全局安装koa2脚手架,终端输入:sudo npm install -g koa-generator;
  2. 创建项目:koa2 -e koa2-learn;(-e:ejs,koa2-learn:文件夹名字)

注:复制: DEBUG=koa2-learn:* npm start,可运行项目

      3.在创建的文件夹下安装npm:npm install

注:若提示Pass --update-binary to reinstall,再次执行npm install --update-binary

     4.终端执行:DEBUG=koa2-learn:* npm start,端口号3000,运行项目

     5.在package.json中启动项目

"scripts": {

"start": "node bin/www",

"dev": "./node_modules/.bin/nodemon bin/www",

"prd": "pm2 start bin/www",

"test": "echo \"Error: no test specified\" && exit 1"

},

npm start;npm run dev(可实时自启动);npm run prd;npm test;

注:

global.console.log('index')//koa2中global相当于vue中的window

 

async和await语法

在routes目录下的index新建接口,浏览器访问3000/asaw:

//新建接口

//await在async中才起作用,且返回的是Promise对象,

//若无await下面返回的是空值

router.get('/asaw',async(ctx)=>{//箭头函数

global.console.log('start',new Date().getTime())

const a = await new Promise((resolve,reject)=>{//

setTimeout(function () {

global.console.log('async a',new Date().getTime())

resolve('zou')

},1000);

})

const b = await 11

const c = await new Promise((resolve,reject)=>{

setTimeout(function () {

global.console.log('async c',new Date().getTime())

resolve('zouzou')

},2000);

})

ctx.body={//render在视图上

a,b,c

}

})

// "a": "zou",

// "b": 11,

// "c": "zouzou"

 

Koa中间件

  1. 创建中间件文件koa-pv.js

function pv(ctx) {

global.console.log('pv'+ctx.path)

}

//中间件输出

module.exports=function () {

return async function (ctx,next) {//异步

pv(ctx)

await next()//交给下一个中间件处理,

// 等下一个中间件处理结束返回再执行await下行代码,类似栈

}

}

  1. 中间件在app.js 中引入与使用

const pv = require('./middleware/koa-pv')//导入中间件

app.use(pv())//使用中间件

Koa的路由

分模块路由

const router = require('koa-router')()

 

router.prefix('/users')//在3000/users/模块下访问下面路由

router.get('/', function (ctx, next) {

ctx.body = 'this is a users response!'

})

router.get('/bar', function (ctx, next) {

ctx.body = 'this is a users/bar response'

})

module.exports = router//路由导出

App.js中路由搭载

// routes

app.use(index.routes(), index.allowedMethods())//路由搭载

app.use(users.routes(), users.allowedMethods())

Cookies和Session

cookies设置:ctx.cookies.set('name', 'tobi', { signed: true });

在index设置在3000/下中例

ctx.cookies.set('pvid',Math.random())//cookies设置

cookies读取:ctx.cookies.get(‘name’)

在3000/json读例:

router.get('/json', async (ctx, next) => {

ctx.body = {

title: 'koa2 json',

cookie: ctx.cookies.get('pvid')//打印cookies

}

})

Redis(高速读写)

定义:Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

 

它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

安装

  1. 安装Redis:brew install redis,安装成功Node.js笔记-Koa2与Redis在项目中安装使用_第1张图片
  2. 查看版本:brew search redis
  3. 运行:redis-server,运行成功:

Node.js笔记-Koa2与Redis在项目中安装使用_第2张图片

session运用Redis

1.在项目目录下安装中间件koa-generic-session与koa-redis:

npm i koa-generic-session koa-redis  安装成功

Node.js笔记-Koa2与Redis在项目中安装使用_第3张图片

  1. 在app.js引入中间件

const session = require('koa-generic-session')//导入npm搭载的中间件

const Redis = require('koa-redis')//导入redis数据库中间件

3.使用Redis、session

//使用redis

app.keys=['keys','keyskeys']//加密处理了,任意输入即可

app.use(session({

key:'mt',//改变cookies中的name

prefix:'mtpre',//改变前缀

store:new Redis()//链接数据库

}))

  1. 在任意中间件方法中添加语句记录用户访问次数

ctx.session.count++//用户访问多少次,会在cookies中加入

此时在网页上的cookies上出现两个mt与mtpre

终端查询Redis

1.查询keys:先终端执行:redis-cli,进入端口,在执行:keys *;查看

2.得到在上例中添加到Redis的count:get key(这里的key从keys中拷贝)

跳过session用Redis

  1. 在路由接口users.js实现,导入Redis中间件

const Redis = require('koa-redis')//导入

  1. 新建接口

//新建接口:Redis存储

router.get('/fix',async function (ctx) {//与数据库相关用异步

//存储key:fix,值为random

const st = await Store.hset('fix','name',Math.random())

//提示程序完成,终端打印

ctx.body={code:0}

})

  1. 终端打印值。先终端请求网址:curl http://localhost:3000/users/fix
  2. 在127.0.0.1:6379> 下执行:hget fix name,得到存储值

 

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号