美文网首页
NodeJs+Koa学习3、路由改造

NodeJs+Koa学习3、路由改造

作者: 那钱有着落吗 | 来源:发表于2022-03-09 11:25 被阅读0次

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

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

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

    2.使用koa-router

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


    3.路由拆分

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

    • 1.app.js因为是入口文件,所以仅仅实例化koa模块,然后再引入主题和书籍的路由
    • 2.主题和书籍里导入路由中间件,然后写接口,最后导出路由这样才能被app.js所引入

    参考下图:

    4.路由的自动注册

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

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

    5.项目初始化

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

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

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


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

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

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


    相关文章

      网友评论

          本文标题:NodeJs+Koa学习3、路由改造

          本文链接:https://www.haomeiwen.com/subject/ypqtdrtx.html