架构设计小思
现在做系统越来越倾向于把系统与外界的交互设计的很薄,和封装一层很薄的一层
为什么呢?
因为你的系统与外界交互的部分变化的最快,如: 一个网站中 controller层,还有一个mvvm 的 v和vm 层。
下面是我自己的原则:
controller 只会跟 http 有关的东西进行处理 ,严禁把 res, req 对像以任何行式传入 service。
controller 会对 http 方法的请求参数,cookie, session, template, redirect, 进行调用,而在 service 不能有任何调用。
而在前后端分离的项目中,还会有一个 api 层进行接口的调用,如果是数据库,则 model 是直接返回数据库中的数据,不需要进行处理。
mvvm 框架如 vue 中,由于界面的交互操作对象的数据模型,与后端接口的模型不一致,多出了一个 vm。vm 与 m,还要实现双向互转,vm => m,还有 m => vm ,这样中间就需要一个转化层。
因此在 vue 中,我会写一个 api 层专门调用接口,而 service 则专门进行 vm与m 的互转, vue 中的 method 则调用 service 进行转换,并对 vm 进行操作。
service 代码的多少,是接口有多不匹配 vm 决定的。越不匹配,service 的代码会越多。