实现目标:当客户端请求服务不同地址时,调用目录中不同html文件实现简单路由功能
步骤一:搭建简单koa服务
步骤二:创建 拦截客户端访问不同路径的方法
步骤三:创建 访问真实文件的 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)