NodeJs+Koa学习3、路由改造

2022-03-09  本文已影响0人  那钱有着落吗

编写接口还是使用中间件的方式,而在koa中我们是需要判断获取到的路由

1.粗略版的路由(入门)

如图中,请求的所有信息都在ctx中,我们可以获取到请求的方法类型和方法名,然后做相应的处理,如果想要返回给请求,那就得给ctx的请求体赋值(可以字符串或者对象)。

2.使用koa-router

我们在使用一个新的东西,最简单直接清晰的方法就是取官网,官网中有最官方的讲解:


3.路由拆分

如果做过web项目的朋友,那就知道我们不可能把所有的接口放在一个java类中实现对吧,nodejs同理,我们需要根据业务拆分,下面给出的例子就是以主题和书籍为分类,做了两个路由;

参考下图:

4.路由的自动注册

在上面我们写了两个api,如果有很多很多模块,岂不是要写很多繁复的代码来导入router然后注册,是否可以自动注册呢?
这就需要用到模块:require-directory

首先引入模块,然后再回调函数中做出判断,因为虽然路径下可能都是router,但也有不是router的文件,所以这个回调函数相当于做了一次过滤,把router给挑出来,然后加载到引用中去。

5.项目初始化

上面我们是把路由的加载写在了app.js中,其实这种写法不太好,因为如果什么都写到app.js会显得编码非常混乱不清晰,所以我们单独创建一个目录,然后初始化的编码都写到这里面:

这里面我们肯定是需要app的,因为路由要加载到app中,然后也需要require-directory来加载所有的路由;

最后一行红字,是把这个初始化类给导出去。


上图中运行会报错,还差一个router没有导入。
路径硬编码不合适

有过编程经验的朋友都知道,我们最好不要硬编码,而在图中的路径就是写死的,不太好,万一路径有所改变,这里就会出问题。

process是一个全局变量,而cwd方法可以给出当前文件所在的目录位置,我们就可以使用这个绝对路径来解决上面的问题。


上一篇下一篇

猜你喜欢

热点阅读