美文网首页
Koa2 路由

Koa2 路由

作者: 叶叶叶xxx | 来源:发表于2020-04-21 14:50 被阅读0次

第一步 引入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..')
})

第二步新建几个页面

第三步

//这里没啥好说的
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');
});

相关文章

  • Koa 2 初体验(二)

    Koa2 路由 Koa2 原生路由的实现 路由在web中的作用不言而喻,而要先实现原生路由,需要的到地址栏输入的路...

  • 关于koa2的基础知识

    1、koa2 路由配置 2、koa2 中的 get 传值以及获取 get 传值 在 koa2 中,GET 传值通过...

  • koa2 自学笔记(二)

    此系列文章会持续更新。。。 这篇主要讲 koa2 的路由 首先,我们先用 koa2 原生实现一个简单的路由然后再使...

  • node-koa-路由传值

    一、Koa路由post传值 二、Koa路由get传值 在koa2中GET传值通过request接收,但是接收的方法...

  • Koa2 路由

    第一步 引入koa 和 fs模块读取html用 第二步新建几个页面 第三步 使用koa-router npm 安装...

  • AdonisJs v4学习笔记 3 - 路由

    官网文档 路由其实基本上就是Laravel那套东西,跟Koa2也很像,一看就明白了。默认的路由文件在/start/...

  • Node.js中Koa2在控制台输出请求日志的方法

    Koa2真的是个很轻量的框架,轻量到路由都作为了模块单独了出来,Koa2也没有日志功能,如果我们需要有一些请求的日...

  • 跟我一起学koa2之路由开发、日志处理

    路由开发 我们在前面已经熟悉了koa2的中间件,路由等。也学会了怎么去使用redis存session。下面我们就开...

  • Koa2脚手架框架搭建流程

    Koa2脚手架框架搭建流程 记录一下自己之前使用koa2创建项目时初始化的整个流程: 路由 数据库 返回结构定义 ...

  • koa2入门系列

    koa2入门系列(一) koa2入门系列(二) koa2入门系列(三) koa2入门系列(四) koa2入门系列(...

网友评论

      本文标题:Koa2 路由

      本文链接:https://www.haomeiwen.com/subject/afbuihtx.html