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

每次以为看懂了的东西,回过头再来看一遍的时候又懵圈了,我总是这么佩服自己!正如上一节业务逻辑部分,我以为我真的看懂了,但今天看到控制器部分的时候真的傻眼了,代码差不多呀,这又有啥不同呢,差别在哪里,之间又有啥关联,一连串的问号,带着这些疑问再来学习。
继续上一章所理解的,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测试
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,596评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,446评论 25 707
  • Express是Node社区里的超级明星,他的作者TJ Holowaychuk也因此成为了社区里大红大紫的开发者。...
    2MuchT阅读 2,986评论 1 30
  • 开活动启动会的一般流程: 1.开场预热 2.活动方案讲解 3.店面执行方案讲解 4.团队PK方案讲解 5.团队激励...
    谢有为阅读 6,201评论 0 1
  • 完成了一整天的工作,有一种要虚脱了的感觉,感觉自己处于工作疲惫期,怎么着都无解。 今天深圳下雨晚上回家时在路上感觉...
    山顶的黑狗兄阅读 271评论 0 0