koa2+html模板,Koa2 路由

第一步 引入koa 和 fs模块读取html用

const Koa = require('koa')

const app = new Koa()

const fs = require('fs')

//正常操作

app.use(async (ctx) => {

let url = ctx.request.url

let html = await route(url)

ctx.body = html

})

app.listen(3001, () => {

console.log('router is listen port 3001..')

})

第二步新建几个页面

527546ecd089

第三步

//这里没啥好说的

async function route(url) {

let page = '404.html'

switch (url) {

case '/':

page = 'index.html'

break

case '/index':

page = 'index.html'

break

case '/todo':

page = 'todo.html'

break

case '/404':

page = '404.html'

break

default:

break

}

let html = await render(page)

return html

}

function render(html) {

//使用promise包一下处理一下异步

return new Promise((resolove, reject) => {

let pageUrl = `./page/${html}`

//参数1:文件路径名, 参数2:二进制, 参数3:回调

fs.readFile(pageUrl, "binary", (err, data) => {

if (err) {

reject(err)

} else {

resolove(data)

}

})

})

}

使用koa-router

npm 安装koa-router中间件

npm install --save koa-router

示例代码

const Koa = require('koa')

const Router = require('koa-router')

const app = new Koa()

const router = new Router({

// 添加路由前缀层级

prefix: '/cengji'

})

router

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

ctx.body = 'Hello word'

})

.get('/todo', (ctx, next) => {

ctx.body = 'Todo page'

})

app

.use(router.routes())

//router.allowedMethods() 推荐用法:router.allowedMethods()用在了路由匹配router.routes()之后

// 所以在当所有路由中间件最后调用.此时根据ctx.status设置response响应头

.use(router.allowedMethods())

app.listen(3333, () => {

console.log('app is starting at port 3333...')

子路由

const Koa = require('koa');

const app = new Koa();

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

let aaa= new Router();

aaa

.get('/aaa',async(ctx)=>{

ctx.body="aaa";

})

.get('/bbb',async(ctx)=>{

ctx.body ='bbb';

})

let bbb= new Router();

bbb

.get('/aaa',async(ctx)=>{

ctx.body="aaa";

})

.get('/aaa',async(ctx)=>{

ctx.body ='bbb';

})

//装载所有子路由

let router = new Router();

router.use('/aaa',home.routes(),home.allowedMethods());

router.use('/bbb',page.routes(),page.allowedMethods());

//加载路由中间件

app.use(router.routes()).use(router.allowedMethods());

app.listen(3000,()=>{

console.log('[demo] server is starting at port 3000');

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值