nodejs+koa2.x+MongoDB入门实战教程(二)koa-router

390 阅读3分钟

不以风骚惊天下,爱以技术渡佳人。

大家好,我是奶挺老师,江湖人称莒巭萎(lvbuwei),嘿嘿嘿,我又来叨扰大家了。

今天给大家带来的是koa-router这个小娘们,上节课我们学到了如何安装、启动koa服务的技能了,那么在实际项目开发中,我们是不需要自己去反复造轮子,因为已经有很多大神帮我们造好了,我们拿来用就行了。

众所周知哈,我们前端的路由控制有react-router、vue-router等等,那咱们现在后端的路由也要统一控制起来怎么办呢?哎接下来就是我装逼的时刻了嘿嘿嘿。。。来吧小宝贝儿们

koa项目中引入koa-router

1.安装koa-router

cd Desktop/code/koa_demo #这是我自己的项目目录哈,实际操作时请自行更改成大家自己的路径
npm install koa-router --save

装完之后我们可以看到,目前的koa-router的版本是7.4.0

为了大家日后学习方便,我们每节课都新建一个文件夹哈,这样方便以后大家查阅代码,等系列课程结束后我也会把代码放到github上,让大家可以自行下载,好下面我们新建koa_router文件夹

mkdir koa_router
cd koa_router
touch index.js

2.使用koa-router

我们新建完文档之后开始搬砖了啊,我只蹭蹭不进去,那是不可能的

const Koa = require('koa') //引入koa框架
const Router = require('koa-router') //引入koa-roouter中间件
const app = new Koa() //koa实例化为app
const router = new Router() //实例化router

/**
 * [description] 路由配置
 * @param  {[type]} '/'   [description] 路由地址
 */
router.get('/', async (ctx,next) => {
	ctx.body = 'this is a index pages'
})

router.get('/news', async (ctx,next) => {
	ctx.body = 'this is a news pages'
})

/**
 * 应用路由中间件
 */

app
  .use(router.routes()) //将路由挂载到app应用上
  .use(router.allowedMethods()) //如果我们不设置router.allowedMethods()在表现上除了ctx.status不会自动设置,以及response header中不会加上Allow之外,不会造成其他影响.

app.listen(3000)
console.log('service is running in port 3000')

代码写完之后我们返回终端启动服务

node index.js

服务启动成功以后,我们就可以通过客户端来访问了

输入http://localhost:3000

从图中我们可以看到,路由配置已经成功了,我们可以通过路有变化来切换页面,这一下就舒服了,可以随意变换姿势了

2.koa-router其他的一些API

(1)在实际项目中我们可能会遇到这种情况,有一天产品小姐姐跑过来说,大神,能不能在/news这种URL前面都加一层路径啊,这时就是你撩妹装逼的时候,你肯定得说当然可以,看我的,五秒钟就给你干好

其实这就是给路由加一下前缀就可以解决的问题,

var router = new Router({
  prefix: '/project'
});

保存代码后,我们重启服务看看发生了什么。。。

由图可知我们已经全局加上了prefix这个属性了

(2)通过路由传参,这个我们也很常见啊,比如一个类目中的文章,页面结构都一样,我们不可能每篇文章都去创建一个页面,这样不符合我们开发规范,效率和出错几率也会增高,这时候我们就可以通过id或者其他的关键字来控制页面显示什么,我们将上面的/news路由做一下修改

router.get('/news/:id', async (ctx,next) => {
	console.log(ctx.params)
	ctx.body = 'this is a news pages' + ctx.params.id
})

保存代码后,我们重启服务看看发生了什么。。。

可以看到我们可以通过路由传参了

好了,路由的基本知识和项目实际用到的api差不多了,顶层路由设计我们作为进阶教程再讲,这里我们只要入门即可,啦啦啦。。。觉得写得不错的给赞哦,拜拜,各位明天见。

创建了一个qq群695712519,有兴趣的可以添加一下,有免费的科学上网方法哦。。。

个人格言: 花堪折时直须折 莫待无花空折枝。生死看淡,不服就干...