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:'公共数据'
}
缓存
koa Cookie
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)
})