«Хороший разработчик пишет код, чтобы его понимал следующий разработчик, а не компьютер»

Большинство разработчиков могут испытывать затруднения при создании REST API или могут быть не уверены в том, подходит ли их код для производства или нет. Вот краткое руководство, которое поможет вам начать разработку для производственной среды.

Введение

Здесь мы узнаем, как структурировать приложение node.js для производства. Также используются различные справочники и их назначение. Раньше я много боролся и был очень сбит с толку, пытаясь узнать правильную структуру для создания приложения для производства, но после множества экспериментов и исследований я пришел к следующему.

Эта статья помогает разработчикам с минимальными усилиями создавать REST API для производства. Это включает в себя все необходимые материалы, начиная с инициализации git и заканчивая развертыванием. Однако на данный момент я не рассматривал фронтенд-разработку.

Требования

  1. Git
  2. NodeJs (рекомендуется LTS)

Примечание. Если вы новичок и не знаете, как использовать git и NodeJs, я бы порекомендовал вам прекратить читать дальше и изучить основы, прежде чем продолжить.

Начиная

Клонируем образец шаблона с GitHub.

$ git clone https://github.com/prasannamestha/nodejsboilerplate.git
$ cd nodejsboilerplate

Структура проекта выглядит так.

.
├── bin                     # App startup scripts
│   └── www
│
├── controllers
│   ├── error.js            # Error controller
│   ├── global.js           # Global controller
│   └── user.js             # User controller
│
├── middlewares
│   ├── cors.js             # CORS middleware
│   └── jwt.js              # JWT middleware
│
├── models                  # Define the database schema here
│   └── User.js
│
├── public                  # Front-end for the application
│   └── index.html
│
├── routes
│   ├── index.js            # Global routes
│   └── user.js             # User routes
│
├── spec                    # Write the tests here
│   └── user.spec.js        # Tests for the user
│
├── utils                   # Various utilities
│   ├── constants.js        # App configuration
│   └── mongo.js            # MongoDb Configuration
│
├── .editorconfig           # Sets editor configuration rules
├── .eslintrc               # Linting rules
├── .gitignore
├── app.js                  # App starting point
├── package.json
├── package-lock.json
└── README.md

Позвольте мне получить больше информации о структуре и файлах, содержащихся в каталогах. Архитектор всегда должен знать, каковы соглашения об именах, а также какова цель каждого каталога в проекте.

корзина

Каталог «bin» должен содержать сценарии запуска. Если вы пишете какие-либо действия для таких команд, как $ npm start или $ npm restart, определите их в этом каталоге.

Файл «www» обрабатывает команду $ npm start.

контроллеры

Это буквально двигатель приложения. Основная логика вашего REST API содержится в этом каталоге.

Файл «user.js» в этом каталоге содержит логику для регистрации, входа в систему, обновления пользователей и т. Д. Этот файл взаимодействует с моделью «Пользователь» для связи с базой данных.

промежуточное ПО

Промежуточное ПО служит для управления запросами и ответами. В этом проекте git у нас есть два промежуточного программного обеспечения.

По промежуточного слоя cors.js к каждому ответу добавляются заголовки CORS.

По промежуточного слоя jwt.js аутентифицирует токены JsonWebTokens, отправленные в запросе. Это также запрещает несанкционированный доступ к API, если это не указано в файле «utils / constants.js» (загляните в объект globalPaths).

модели

Определите здесь схему базы данных. В нашем приложении мы используем mongodb с mongoose. Итак, все модели определены в этом каталоге.

Файл «User.js» содержит модель пользователя. Буква «U» в имени файла - это заглавная буква, так как это хорошая практика для именования моделей баз данных.

общественный

Поместите сюда все статические файлы. Настоятельно рекомендуется не использовать эту папку для создания API, а вместо этого, если вы хотите включить также и интерфейсную часть, используйте эту директиву.

Обратите внимание, что для производства рекомендуется хранить интерфейсную и внутреннюю части на отдельных серверах для лучшей масштабируемости. Всегда считайте этот каталог необязательным.

маршруты

Здесь должна быть написана вся логика обработки маршрута.

Маршрут index.js обрабатывает все глобальные пути, такие как домашняя страница api.

Файл «user.js» обрабатывает все пользовательские маршруты. Здесь должны обрабатываться маршруты входа, регистрации, обновления, удаления и т. Д.

Совет: следуйте замечательным рекомендациям из этой статьи для разработки маршрутов api.

спецификация

Это каталог для написания модульных тестов.

Шаблон использует жасмин для модульного тестирования. Напишите все спецификации, чтобы включить «разработку на основе тестирования». Обратите внимание, что на самом деле это необязательный шаг, но настоятельно рекомендуется следовать TDD. Это гарантирует, что ваше приложение не сломается при добавлении новых функций.

утилиты

Наконец, каталог, содержащий служебные библиотеки и функции.

«Constants.js» содержит все глобальные константы. Сюда входят база данных и коллекции mongodb, порт API, глобальные маршруты и т. Д.

«Mongo.js» содержит логику для подключения к базе данных mongodb.

Ну, это в основном назначение каталогов. Теперь нам нужно заглянуть в корневой каталог. Вернее, что написано внутри файлов в корневом каталоге.

.editorconfig

Это файл конфигурации для IDE. Этот файл определяет стиль отступа редактора, интервал отступа, набор символов, стили разрыва строки и т. Д. Это важный аспект для поддержания качества кода. Это не следует путать с конфигурацией линтинга. Файл .editorconfig настраивает редактор кода, тогда как линтер определяет набор правил, которым нужно следовать.

Однако для этого может потребоваться, чтобы в среде IDE были установлены дополнительные плагины для поддержки .editorconfig. Обратитесь к editorconfig.org для получения более подробной информации.

.eslintrc

А вот и правила линтинга. Вы можете определить все правила, которым должен следовать ваш линтер. В нашем шаблоне мы следуем стандартам, установленным Google, а также стандартам ES6.

.gitignore

В этом файле указаны файлы и каталоги, которые git игнорирует. Вам действительно не нужно помещать этот каталог node_modules в репо.

app.js

Что ж, это панель управления приложением. Конфигурация приложения входит в этот файл. Это включает в себя указание промежуточного программного обеспечения, различных маршрутизаторов для обработки различных маршрутов, логики обработки ошибок, подключения к базе данных и т. Д. Внимательно изучите этот файл, чтобы получить хорошее представление о приложении.

package.json и package-lock.json

Мне действительно не нужно объяснять это. Я?

README.md

Наконец, это один из самых важных файлов. Обязательно создайте файл readme, чтобы другие разработчики могли знать, что делает приложение. Кроме того, если вы такой же человек, как я, то вот замечательный веб-сайт, который поможет вам создавать файл README на лету - MakeAReadme. Поверьте, это потрясающе.

Наконец, это было просто руководство по архитектуре приложения nodejs для производства. Я не настраивал переменные среды для этого проекта, но вы можете легко настроить его, если вам это нужно. Кроме того, если вы хотите узнать больше о чем-либо еще или о лучших практиках, просто спросите меня в комментариях, и я отвечу. Спасибо за чтение.

Если вы создаете что-то для производства, обязательно соблюдайте стандарты.