koa2 手写简单实现路由功能

2022-05-13  本文已影响0人  灵魂旅者s

实现目标:当客户端请求服务不同地址时,调用目录中不同html文件实现简单路由功能

步骤一:搭建简单koa服务

创建服务

步骤二:创建 拦截客户端访问不同路径的方法

route方法

步骤三:创建 访问真实文件的 render 方法

实现真实访问文件

步骤四:总体代码预览

const Koa = require('koa');

const app = new Koa();

// 使用fs模块实现流功能

const fs = require('fs');

async function render(page) {

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

        //    比如你要访问你的文件夹名称 page

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

        // 使用 fs 暴露出来的 readFile异步异步访问资源的方法

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

            if (err) {

                reject(err);    

            } else {

                resolve(data);

            }

        })

    })

}

async function route(rul) {

    // 例如 你的目录有 这几个路径 index.html 404.html todo.html 。。。。。

    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;

}

app.use(async (ctx) => {

    // 先获取地址

    let url = ctx.request.url

    // route方法返回 html

    let html = await route(url)

    // 输出给客户端

    ctx.body = html;

})

app.listen(3000)

上一篇 下一篇

猜你喜欢

热点阅读