在我的项目结构中,我应该在服务器端的什么地方管理高级 algorithms/services?

Where should I manage advanced algorithms/services on the server side in my project structure?

我正在使用 nodejs、expressjs、mongodb 和 angular 以及 RESTful API。

这是我的项目结构。

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

一切正常,因为我的 API 调用很简单,大部分逻辑由 angular 通过服务管理。

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

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

取决于您的应用。由于您的应用程序有一个 node.js 后端。而你想实现高级算法,应该在服务器端。尽可能保持前端光亮总是明智的,因为您不希望用户等待。

在后端保持一定的权重,但这又完全取决于您所谈论的应用程序类型。你所有的高级算法都应该写在控制器或 .js 文件中。

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

请注意 categories.jsproduct.jsmodels.js ,api.js分解为.

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

是的,我建议您添加一个 services 文件夹,其中包含执行某些业务的服务器端 js 文件,这些文件可以根据您的业务依次组织模型,例如,您可以让 services/products.js 处理 products collection/table.

上的一些业务操作

反过来,您可以使用类似

的方式将这些文件注入您的 controllers/routes

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

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

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

中做这样的生意