1 安装 npm install --save koa-static
2 引入 const static =require("koa-static");
3 使用
app.use(static("static"))
//目录
4 之后就可以在html中 获的本地静态资源了 但是需要注意的是 因为你中间件已经定义了目录
所以 <link rel="stylesheet" href="css/header.css"> 找的是static(中间件定义目录下) 开始找的
5 可以设置多个中间件 来设置多个静态目录
art-template
1 安装 npm install --save art-template
npm install --save koa-art-tempalte
2 引入 const render=require("koa-art-template");
3 配置
render(app, {
root: path.join(__dirname, 'view'), //视图位置
extname: '.html', //后缀
debug: process.env.NODE_ENV !== 'production' //是否启动调试
});
4 使用
var Koa =require("koa");
var app=new Koa();
var Router=require("koa-router");
var router =new Router();
const views =require("koa-views");
var bodyParser=require("koa-bodyparser");
const static =require("koa-static");
const render=require("koa-art-template");
var path =require("path")
app.use(static("static"))
//目录
app.use(bodyParser());
app.use(views('views',{map:{html:'ejs'}}));
render(app, {
root: path.join(__dirname, 'view'), //视图位置
extname: '.html', //后缀
debug: process.env.NODE_ENV !== 'production' //是否启动调试
});
app.use(async (ctx,next)=>{
await next();
if(ctx.status==404){
ctx.status=404
ctx.body="错误404"
}
})
// 使用
router.get("/",async (ctx,next)=>{
let name="姓名";
let password="密码"
await ctx.render("index")
})
router.post("/p",async (ctx,next)=>{
ctx.body=ctx.request.body
})
app.use(router.routes())
app.use(router.allowedMethods())
app.listen(8081)
绑定数据
<%=name %>
<% 1+2 %>
绑定html
<%-list %>
更多语法 http://aui.github.io/art-template/zh-cn/docs/syntax.html 与ejs基本一样
需要注意的是 引入其他外部文件(子模块 与ejs不一样 )
<% include("./....html") %>
cookie
1 koa 设置cookie的值
ctx.cookies.set(name,value,[options]) 名字 值 和一些参数 maxAge 过期参数 毫秒计算
expires 过期日期 path cookie路径 默认是"/" domain cookie域名 seure 布尔值 默认false true时只有https可以访问
httpOnly 只有服务器访问
2 ctx.cookies.get("name") 获取 需要注意的是 cookie的值 不能是中文
router.get("/",async (ctx,next)=>{
ctx.cookies.set("userinfo","123",{maxAge:60*1000*60})
await ctx.render("index")
})
router.get("/new",async (ctx)=>{
ctx.body=ctx.cookies.get("userinfo")
})
3 koa 中设置中文cookie(转换成base64 保存 取出来以后在转换出来)
router.get("/",async (ctx,next)=>{
let name=new Buffer("找死").toString("base64");
ctx.cookies.set("userinfo",name,{maxAge:60*1000*60})
await ctx.render("index")
})
router.get("/new",async (ctx)=>{
let nameBase=ctx.cookies.get("userinfo")
let name=new Buffer(nameBase,"base64").toString()
ctx.body=name
})