koa初体验(1)

koa搭建本地服务器

新建文件夹 npm init 初始化

新建app.js文件

安装

npm i koa -S // 安装koa模块
npm i koa-router -S // 安装koa路由模块
const Koa  = require('koa')
const Router  = require('koa-router')

const app = new Koa()
const router = new Router()

router.get('/test:id',(ctx)=>{
	ctx.body = "测试页面"; 
	
	ctx.query();	// 获取参数对象形式返回 
	ctx.querystring();	// 获取参数,字符串返回
	ctx.url();	// 获取当前页面url
	
	localhsot:3000/test:id=123
	console.log(ctx.params) // 获取动态传递的参数
	// 获取到的返回值{id:'123'}
})

app.use(router.routers()) // 启动路由
app.use(router.allowedMethods()) // 默认添加响应头内容


app.listen(3000); //监听本地的端口

koa中间件

匹配路由之前或者之后的操作,对于url的路径作为一个处理

app.use(async(ctx,next)=>{
	console.log('这是一个中间件')
	next(); // 是否继续匹配
})

// 判断当前响应状态
app.use(async(ctx,next)=>{
	if(ctx.status == 404){
		// 如果页面找不到的时候
		ctx.body = "404页面"
	}else{
		next(); // 是否继续匹配
	}
})

ejs模板引擎

安装

npm i koa-views -S	// 安装koa-views
npm i ejs -S	// 安装ejs

使用

const views =require('koa-views')(); // 引入并实例化
const ejs = require('ejs')

// 配置中间件
app.use(views('views'),{
	extension:'ejs'	// 使用ejs模板引擎
})

// 同上相同效果 使用的时候views文件夹中的文件后缀为html
//app.use(views('views'),{
//	map:{
//		html:'ejs'
//	}
//})

// 创建views文件夹,文件夹下新建index.ejs文件
router.get('/',async(ctx)=>{
	// 传递参数
	let title = '传递的参数标题:测试'
	await ctx.render('index',title) // 此处会对ejs文件进行匹配渲染到对应的路由
})

views = > index

<h2><%=title%></h2> // 将传递的title进行显示


// 循环
<ul>
	<%for(var i=0;i<+list.length;i++){%>
		<li><%=list[i]%></li>	
	<%}%>
</ul>

// 条件判断
<%if(num>24){%>
	大于24
<%}else{%>
	其他
<%}%>

// html解析 定义content = <h1>我是传递过来的标题</h1>
<%-=content%>

ejs公共模块

<% include public/header.ejs%>

ejs公共数据处理 (放置到中间件中,方便每一个页面使用)

ctx.state =  {
	title:'公共数据'
}
缓存
options

maxAge	 数字从Date.now()得到的毫秒数
expires	 cookie过期时间
path	 cookie的路径,默认为'/'
domain	 cookie域名
secure	 安全的cookie,默认为false,设置为true表示
httpOnly 是否只是服务器可以访问cookie,默认是true
使用

router.get('/',async(ctx)=>{
	// 设置cookies
	key:对应的cookies名称
	value:对应名称设置的值
	maxAge:设置过期时间
	path:设置可以访问设置cookies的页面
	ctx.cookies.set('key',value,{
		maxAge:60+100*24,
		path:'/home'
	});
})

router.get('/',async(ctx)=>{
	// 获取cookies
	const getCookies = ctx.cookies.get('key');
})

tip:koa中无法设置中文的cookies - value 

解决
将文字转化为base64编码之后对base64进行转化

koa session

安装

npm i koa-session -S

使用

const session = require('koa-sseion')

// 配置session中间件

app.keys = ['some secret hurr']; // 签名
const CONFIG = {
  key: 'koa.sess',
  maxAge: 86400000, /** 过期时间 [需要配置]*/ 
  autoCommit: true, /** 默认*/
  overwrite: true, /** 默认设置 */
  httpOnly: true, /** 默认 true表示只有服务端可以获取cookie */
  signed: true, /** 默认签名 */
  rolling: false, /** 更新 */
  renew: false, /** */
  secure: false, /** 每次请求的时候强制设置cookie,这会重置cookie的过期时间*/
  sameSite: null, /** 即将过期的是时候,重新设置  [需要配置] */
};
 
app.use(session(CONFIG, app));

router.get('/',async(ctx)=>{
	// 设置session
	ctx.session.userinfo = '张三';
})

router.get('/',async(ctx)=>{
	// 获取session
	console.log(ctx.session.userinfo)
})
愿以往所学皆有所获
原文地址:https://www.cnblogs.com/Azune/p/14101905.html