所以我有一个快递应用。我使用MVC模型,对于模型层具有Sequelize,对于View具有Handlebars,对于Controller具有Express。
我的应用程序对DB进行了一些琐碎的操作,我通过扩展Sequelize函数并在Controller内部尽可能多地使用Model来实现此目的。
但是,我确实有一些更复杂的任务,其中:
为了保持可读性,我该将该代码放在哪里?
models/
文件夹中,它不是Sequelize Model
类controllers/
文件夹中的单独文件中,因为它不具有表达兼容功能,因此本身不是控制器。我确实有utils/
文件夹,但这似乎是一个懒惰的选择。疾病最终会带来随机性,我在一个地方没有比这更好的地方了。
你们在哪里把这样的代码放在您的应用程序中(该代码可与模型一起使用,但不属于单个代码)?
编辑
我最终以
db/
---models/
---interactors/
------invoicing/
------user-manipulation/
...
结构
答案 0 :(得分:1)
我的经验是,您将拥有一个服务层或business logic层。
您可以采用明显的方式来构造它,例如,您有用于controllers
,services
,models
等的单独文件夹。或者执行由模块化或基于组件的结构,并按型号/ API类型,其中users
将包含基于用户的文件。当使用多种模型时,服务可以依赖于其他服务,而控制器可以依赖于多种服务,但要确保控制器没有任何业务逻辑。
在链接中的提示:
与软件的其余部分形成对比,其余部分可能与管理数据库或显示用户界面,系统基础结构或通常连接程序各个部分的底层细节有关。
对于MVC应用程序,这意味着至少四层。模型,视图,控制器和服务;这很常见。但是将db访问权限拉入其自己的层也很有价值。这样,您就不必受限于特定的存储类型,供应商或框架,并且有助于测试。例如,这就是服务使用ORM的地方。