在我的项目结构中,我应该在哪里pipe理服务器端的高级algorithm/服务?
我正在使用RESTful API使用nodejs,expressjs,mongodb和angular。
这是我的项目结构。
-- config -- models -- public ---- css ---- js ------ controllers ------ services ---- views -- routes // API route
一切都很好,因为我的API调用很简单,大部分的逻辑都是通过服务angular度来pipe理的。
但是现在我必须实现高级algorithm和一些逻辑服务器端,我不知道该怎么做。
我应该添加另一个服务文件夹服务器端? 你将如何pipe理它?
取决于你的申请。 由于你的应用程序有一个node.js后端。 而你想实现高级algorithm,它应该在服务器端。 始终明智的做法是尽可能保持前端光线,因为您不希望用户等待。
保持在后端的一些权重,但这一切都取决于你在谈论什么types的应用程序。 你所有的高级algorithm都应该写在控制器或者.js文件中。
购物车应用程序的示例服务器端结构:
请注意categories.js , product.js , models.js , api.js是如何细分的。
综上所述:
如果您的高级algorithm参考示例购物车应用程序进行产品定价,则最好将其写入product.js中,如果它与sorting类别相关或根据用户显示类别,则最好将其写入category.js。 这对现有的和新的开发者来说是很方便的。 请记住,有组织的应用程序是有趣的升级
是的,我build议你添加一个服务器文件夹来存放服务器端的js文件,这些文件可以根据你的biz模型进行组织,例如你可以使用services/products.js
来处理一些biz在products
收集/表上的操作。
反过来,你可以注入这些文件到你的控制器/路线使用类似的东西
var productsBiz = require('./services/products.js');
并通过调用任何公开的成员来使用该productsBiz
。
顺便说一句,我看到一些其他人在那里通过在数据库模型本身添加自定义函数做这些biz的东西,这将是一个好主意,但是这是逻辑上有效的只有与这个特定的数据库模型相关的function,例如做一些自定义validation或者在保存之前更改值,但是对于整个应用程序而不是专门针对数据库模型的biz,例如处理涉及产品,订单,运输,发票等数据库模型的订单,在这种情况下,我build议您这样的biz在一个services/*file*.js
。