美文网首页
node.js 学习第五小节 控制器和路由

node.js 学习第五小节 控制器和路由

作者: 哈哈乐哈 | 来源:发表于2017-06-26 23:17 被阅读0次

    每次以为看懂了的东西,回过头再来看一遍的时候又懵圈了,我总是这么佩服自己!正如上一节业务逻辑部分,我以为我真的看懂了,但今天看到控制器部分的时候真的傻眼了,代码差不多呀,这又有啥不同呢,差别在哪里,之间又有啥关联,一连串的问号,带着这些疑问再来学习。
    继续上一章所理解的,MVC中的C指的就是控制器,在我们学习的项目--实现图片交换功能里,对应的就是 ~-controller.js 和~-routes.js 这两个文件模块,下面分别来理解这两个文件中的代码。

    控制器 (controller.js)

    先来对比一下以下两个文件的代码:


    Screen Shot 2017-06-26 at 7.32.40 PM.png Screen Shot 2017-06-26 at 7.33.01 PM.png

    看了好几遍,似乎从心理上理解了这两个相似文件的区别在哪里了。

    • 首先,这两个模块文件存在的意义是不一样的,意即他俩的作用是不一样的,虽然它们申明的功能中都包括基本的数据操作CRUD,但image-manager.js只对服务器中数据库中的数据进行CRUD处理,而image-controller.js主要针对客户端中的请求进行的CRUD处理,甚至这其间还可能调用到image-manager.js模块进行深层的处理。也不知道理解得对不对,不对请老师指正呵。
    • 其次,这两个模块文件工作的原理是不一样的,比如在controller.js文件中,每一个函数都包括(req, res, next)这几个参数,从客户端中接收用get/post方式发出的请求,不需要加工处理的直接从服务器端里调用对应的数据返回,需要服务器进行加工处理的请求则需转给业务逻辑层,即调用 manager.js 模块进行深处理后再返回。而 manager.js 文件中的函数所包含的参数只存在于数据库中。
    路由 (routes.js)

    MVC 中的路由,就是路径和 Controller 的对应关系。怎么体现的,还是来解析其代码。


    Screen Shot 2017-06-26 at 9.49.22 PM.png

    老师在教程中写了两点定义路由的注意事项:
    1,路由的定义和匹配,是按** HTTP **方法(get/post) + **URL **两者来标识的。这个不难理解,如代码里头的method,path 申明的内容。

    2,路由定义的顺序是有讲究的。在 module.exports.routes 数组里面,URL 和 Controller 的对应关系,是按顺序注册到 Express 框架里面的。所以,如果一不小心,顺序安排不当,前端发起的请求很可能就被意料之外的 Controller 拦截。
    问题:这个就难理解了,这个顺序指的是什么?是指发起请求的逻辑顺序吗?比如代码中前两个都是打开图片详情页的路径,第三个才是打开图片列表页的路径,但是正常不是先打开图片列表页,再在图片列表页中再打开某张图片的详情页吗?why?

    REST API测试

    相关文章

      网友评论

          本文标题:node.js 学习第五小节 控制器和路由

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