Где я должен управлять расширенными алгоритмами / сервисами на стороне сервера в структуре моего проекта?
Я работаю с nodejs, expressjs, mongodb и angular с RESTful API.
Вот моя структура проекта.
-- config
-- models
-- public
---- css
---- js
------ controllers
------ services
---- views
-- routes // API route
Все было хорошо, потому что мои вызовы API были просты, и большая часть логики управляется с помощью сервисов.
Но теперь я должен реализовать продвинутые алгоритмы и немного логики на стороне сервера, и я не знаю, где это сделать.
Должен ли я добавить еще одну папку со службами на стороне сервера? Как бы вы справились?
2 ответа
Зависит от вашего приложения. Так как ваше приложение имеет бэкэнд node.js. и вы хотите реализовать продвинутые алгоритмы, это должно быть на стороне сервера. Всегда разумно, чтобы интерфейсный свет был как можно более легким, потому что вы не хотите, чтобы пользователь ждал.
Держите некоторый вес на бэкэнде, но опять же все зависит от того, о каком приложении вы говорите. Все ваши продвинутые алгоритмы должны быть записаны в контроллерах или файлах.js.
Пример структуры на стороне сервера для приложения корзины покупок:
Обратите внимание на то, как разделены категории .js, product.js, models.js, api.js.
В итоге:
Если ваши продвинутые алгоритмы связаны с ценой на продукт со ссылкой на пример приложения для корзины покупок, лучше записать его в product.js, а если он связан с категориями сортировки или отображением категорий в соответствии с пользователем, то лучше написать эту логику в категория.js. Это будет удобно для существующего и нового разработчика, входящего в приложение. Помните, что организованные приложения интересно обновлять.
Да, я бы порекомендовал вам добавить папку служб, содержащую js-файлы на стороне сервера, которые выполняют некоторые бизнес-задачи, и эти файлы могут быть в свою очередь организованы в соответствии с вашими бизнес-моделями, например, вы можете иметь services/products.js
который обрабатывает некоторые бизнес-операции на products
Коллекция / стол.
В свою очередь вы можете внедрить эти файлы в ваши контроллеры / маршруты, используя что-то вроде
var productsBiz = require('./services/products.js');
и использовать это productsBiz
позвонив любому из его открытых членов.
Кстати, я вижу, что некоторые другие люди занимаются этим делом, добавляя пользовательские функции на сами модели db, что было бы неплохо, но логически допустимо только для функций, связанных с этой конкретной моделью db, например, делая некоторую пользовательскую проверку или изменение значений перед сохранением, но для бизнеса, связанного со всем приложением, а не специально для модели БД, например, для обработки заказов, которые будут включать несколько моделей БД, таких как продукты, заказы, отгрузка, счета и т. д., в таком случае я рекомендую сделать такой бизнес в services/*file*.js
,