Некоторые рекомендации для разработчиков Node.js по созданию эффективных и удобных в сопровождении приложений.

Node.js — один из самых популярных фреймворков для веб-разработки. Он используется несколькими компаниями, начиная от небольших проектов и заканчивая крупными решениями.
С его помощью вы можете создавать легкие, масштабируемые, быстрые и надежные серверные веб-приложения, написав код JavaScript для браузера.

Сегодня мы поговорим о некоторых передовых методах разработки с помощью Node.js, которые помогут всем типам разработчиков создать эффективное и удобное в сопровождении приложение, от новичков до самых опытных.

Перезапускайте приложение при каждом изменении

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

Ниже приведены некоторые из самых популярных пакетов мониторинга кода для Node.js:

  1. Nodemon: он предлагает функцию автоматического перезапуска всякий раз, когда вносятся новые изменения кода. Чтобы использовать Nodemon, просто замените node на Nodemon.
  2. Навсегда: он также предлагает функцию автоматического запуска наряду с дополнительными настройками, такими как запись журналов и установка рабочего каталога для определенного файла.
  3. PM2: Еще один инструмент управления процессами с отличным контролем и функциями по сравнению с двумя предыдущими.

И Forever, и PM2 можно использовать в производственной среде. С ними можно гарантировать восстановление кода после ошибки времени выполнения, а также гарантировать быстрый запуск в случае выхода из строя сервера.

Замените обратные вызовы на асинхронные

Вначале обратные вызовы использовались для создания асинхронных методов в Node.js, но при непрерывном вложении они, как правило, выходили из-под контроля. Именно в этот момент код становится нечитаемым. С введением async/await разработчики заметили уменьшение этой проблемы. Однако, чтобы избежать обратных вызовов, необходимо обеспечить использование async/await. Вы можете легко избежать этого плохого сценария обратного вызова, заменив его вызовами async и await.

Кластер приложений

Среда выполнения Node.js ограничена одним ядром ЦП, и развертывание некластеризованных приложений Node.js на огромном сервере может быть пустой тратой ресурсов. Вместо этого выберите добавление поддержки кластера в свое приложение, чтобы вы могли в полной мере использовать преимущества нескольких ядер. Благодаря поддержке кластера вы получаете гибкость, даже если запускаете один процесс на небольшом оборудовании.

Избегайте мусора

Node.js имеет медленный сборщик мусора с ограничением по умолчанию в 1,5 ГБ. Этот сборщик мусора будет ждать, пока не освободится неиспользуемая память. Если вам не хватает памяти, это не из-за утечки, а из-за ленивого поведения сборщика мусора. Однако вы можете получить полный контроль над сборщиком мусора, предоставив флаги для V8.

web: node — optimize_for_size — max_old_space_size=920 — gc_interval=100 server.js

Это очень важно, особенно когда вы запускаете узел в среде с объемом памяти менее 1,5 ГБ.

web: node — optimize_for_size — max_old_space_size=460 — gc_interval=100 server.js

Приведенный выше код можно использовать для настройки узла для контейнера 512 МБ.

Чистый код

В предыдущем посте мы уже говорили о преимуществах чистого кода и о том, как его внедрение помогает улучшить качество кода. Чтобы помочь этому принятию, я расскажу, как использование IDE вместе с плагинами для семантической и стилистической коррекции помогает программисту во время написания кода. Наряду с Node мы можем использовать плагин «Lint» для поиска и предупреждения о семантических и синтаксических кодах ошибок, в то время как мы можем использовать средство форматирования, которое работает со стилистическими факторами, чтобы обеспечить согласованность набора форматирования и стилей во всем проекте. У нас есть некоторые довольно известные плагины, такие как ESLint, JSLint и JSHint, которые принимаются большинством IDE/редакторов кода, таких как Atom и VSCode, которые ценят качество кода и предлагают плагины для форматирования. Эти IDE предлагают дополнительные функции, такие как рефакторинг, автозаполнение, поддержка документации, автоматический импорт, инструменты отладки, навигация по коду и многое другое.

Внедрение зависимости

Этот дизайн программного обеспечения поддерживает внедрение или передачу зависимостей или служб в качестве параметров модулям, а не их создание. Этот причудливый термин делает ваши модули независимыми, гибкими, масштабируемыми и тестируемыми в рамках всего приложения. С внедрением зависимостей вы можете сделать свои функции более универсальными и гибкими. Помимо внедрения зависимостей, есть и другие практики, которые сделали ваше программное обеспечение лучше, поэтому я рекомендую прочитать эту статью, в которой я рассказываю о принципах S.O.L.I.D. Ниже приведены некоторые рекомендуемые передовые методы:

  • Не повторяй
  • Принцип единой ответственности
  • Будь проще (будь проще)
  • Отдел проблем
  • Избегайте ранней оптимизации
  • Внедрение зависимости

Используйте безопасную, иерархическую конфигурацию с учетом среды

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

Создайте свое веб-приложение с помощью Helmet

Создание веб-приложений — это очень весело. Чтобы сделать кодирование еще проще, сначала защитите свое приложение. Использовать:

  • XSS-защита
  • Установите заголовок Context-Security-Policy
  • Убедитесь, что все соединения являются HTTPS
  • Избегайте кликджекинга с помощью X-Frame-Options
  • Отключите заголовок X-Powered-By, чтобы злоумышленники не могли проникнуть в ваши атаки на определенное программное обеспечение.

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

Заключение

Никакая разработка не будет слишком сложной, а язык — слишком простым, пока вы не найдете лучшие рекомендуемые практики. Я рекомендую лучшие практики для вашего бэкэнд-проекта, созданного на Node.js, которые рассматриваются в этой статье.

Я надеюсь, что это помогло вам найти способ создания надежного, масштабируемого и гибкого программного обеспечения.

Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.