开始一个koa2-(1)-分文件路由

6 篇文章 0 订阅
  • 1,首先 新建一个文件夹testkoa2;
  • 2,在这个文件夹里打开控制台;输入nmp init 进行配置; 或者,直接自己新建一个package.json;

{
  "name": "hello-koa2",
  "version": "1.0.0",
  "description": "Hello Koa 2 example with async",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "keywords": [
    "koa",
    "async"
  ],
  "author": "",
  "license": "Apache-2.0",
  "repository": {},
  "dependencies": {
    "glob": "^7.1.3",
    "koa": "^2.0.0",
    "koa-bodyparser": "3.2.0",
    "koa-compose": "^4.1.0",
    "koa-router": "7.0.0"
  }
}

  • 3 ,在控制台中输入 npm install
  • 4,在app.js 中;
// 导入koa,和koa 1.x不同,在koa2中,我们导入的是一个class,因此用大写的Koa表示:
const Koa = require('koa');
// 创建一个Koa对象表示web app本身:
const app = new Koa();
const bodyParser = require('koa-bodyparser');//用来解析body的中间件
let registerRouter=require('./registerRouter.js')()//路由注册;
app.use(bodyParser());//这个koa-bodyparser必须在router之前被注册到app对象上。
app.use(registerRouter);
console.log(__dirname,"__dirname")
// 对于任何请求,app将调用该异步函数处理请求:

app.use(async (ctx, next) => {
  console.log(`Process ${ctx.request.method} ${ctx.request.url}...`);
  await next();
});

;

// 在端口3000监听:
app.listen(3000);
console.log('app started at port 3000...');
  • 5,新建文件夹 myrouter;
  • 6,在文件夹中新建多个js,根据业务命名,举个例子,比如说login.js;
const router = require('koa-router')();
router.get('/login', async (ctx, next) => {
  ctx.response.body = '<h1>login home</h1>';
});
router.get('/login/:name', async (ctx, next) => {
  ctx.response.body = '<h1>login</h1> '+ctx.params.name;
});
module.exports = router;
  • 7,做一个统一管理的路由注册 registerRouter.js ,
//compose模块可以将多个中间件函数合并成一个大的中间件函数,然后调用这个中间件函数就可以依次执行添加的中间件函数,执行一系列的任务。
const compose = require('koa-compose')
const glob = require('glob')  //允许你使用 *等符号, 来写一个glob规则,像在shell里一样,获取匹配对应规则的文件
const { resolve } = require('path') //resolve方法会把一个路径或路径片段的序列解析为一个绝对路径。

registerRouter = () => {
  let routers = [];
  glob.sync(resolve(__dirname, './myrouter', '**/*.js'))//同步 得到地址数组;__dirname  == E:\myKun\testKoa2 
	  .filter(value => (value.indexOf('index.js') === -1))//过滤掉首页;
	  .map(router => { //将所有的元素添加到路由
		console.log(router,"=======registerRouter")    //   E:/myKun/testKoa2/myrouter/login.js ========registerRouter

		routers.push(require(router).routes())
		routers.push(require(router).allowedMethods())
	  })
  return compose(routers)//获得中间件函数集合
}

module.exports = registerRouter

  • 8最终效果图;

在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值