在项目结构中,我应该在哪里管理服务器端的高级算法/服务?

时间:2015-12-15 09:30:56

标签: angularjs node.js mongodb architecture application-design

我正在使用RESTful API处理nodejs,expressjs,mongodb和angular。

这是我的项目结构。

-- config
-- models
-- public
---- css
---- js
------ controllers
------ services
---- views
-- routes          // API route

一切都很好,因为我的API调用很简单,而且大多数逻辑都是通过角度来管理服务。

但是现在我必须实现高级算法和一些逻辑服务器端,我不知道在哪里做。

我应该添加另一个服务文件夹服务器端吗?你会如何管理它?

2 个答案:

答案 0 :(得分:1)

取决于您的申请。由于您的应用程序具有node.js后端。并且您想要实现高级算法,它应该在服务器端。由于您不希望用户等待,因此始终保持前端灯光始终是明智之举。

在后端保持一定的重量,但这又取决于你所说的应用程序类型。所有高级算法都应该用Controllers或.js文件编写。

购物车应用程序的示例服务器端结构: enter image description here

请注意 categories.js product.js models.js api.js 是如何分解为。

总结:
如果您的高级算法参考示例购物车应用程序的产品定价,最好将其写入product.js,如果它与排序类别相关,或根据用户显示类别,那么最好在category.js。这对于进入应用程序的现有和新开发人员来说非常方便。请记住,有组织的应用程序升级很有趣。

答案 1 :(得分:1)

是的,我建议您添加一个服务文件夹,其中包含执行某些商业活动的服务器端js文件,这些文件可以根据您的商业模式进行组织,例如您可以services/products.js处理products集合/表格上的某些商业操作。

反过来,您可以使用类似

之类的内容将这些文件注入控制器/路由

var productsBiz = require('./services/products.js');

并通过调用任何公开的成员来使用productsBiz

顺便说一句,我看到其他一些人通过在数据库模型本身上添加自定义函数来做那些商业活动,这是一个好主意,但这在逻辑上只对与此特定数据库模型相关的函数有效,例如保存之前的一些自定义验证或更改值,但对于与整个应用程序相关的商业而不是专门用于数据库模型,例如处理订单将涉及多个数据库模型,如产品,订单,运输,发票等,在这种情况下我建议在services/*file*.js中进行此类商业活动。