Некоторые рекомендации для разработчиков Node.js по созданию эффективных и удобных в сопровождении приложений.
Node.js — один из самых популярных фреймворков для веб-разработки. Он используется несколькими компаниями, начиная от небольших проектов и заканчивая крупными решениями.
С его помощью вы можете создавать легкие, масштабируемые, быстрые и надежные серверные веб-приложения, написав код JavaScript для браузера.
Сегодня мы поговорим о некоторых передовых методах разработки с помощью Node.js, которые помогут всем типам разработчиков создать эффективное и удобное в сопровождении приложение, от новичков до самых опытных.
Перезапускайте приложение при каждом изменении
Во время разработки приложение останавливается и перезапускается при каждом изменении кода, это может быть неприятно и может привести к потере внимания и производительности. Чтобы решить эту проблему, вы можете использовать инструменты, которые позволяют избежать повторного перезапуска приложения для отражения изменений.
Ниже приведены некоторые из самых популярных пакетов мониторинга кода для Node.js:
- Nodemon: он предлагает функцию автоматического перезапуска всякий раз, когда вносятся новые изменения кода. Чтобы использовать Nodemon, просто замените node на Nodemon.
- Навсегда: он также предлагает функцию автоматического запуска наряду с дополнительными настройками, такими как запись журналов и установка рабочего каталога для определенного файла.
- 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.