Резюме:Узел тройка.
FundebugПерепечатано с разрешения, авторские права принадлежат оригинальному автору.
Введение
Node.js впервые был запущен 10 лет назад, и теперь он стал крупнейшим проектом с открытым исходным кодом в мире с +59 000 звезд на GitHub и более 1 миллиарда загрузок. Одной из причин быстрого роста популярности является то, что Node.js позволяет разработчикам использовать один и тот же язык как для клиентской, так и для серверной части приложения: JavaScript. Node.js — это кроссплатформенная среда выполнения JavaScript с открытым исходным кодом, предназначенная для создания масштабируемых веб-приложений на стороне сервера и обладающая характеристиками высокого параллелизма и высокой масштабируемости. Из-за его экспоненциального роста и популярности в сообществе было создано множество фреймворков для повышения производительности. В этой статье мы рассмотрим различия между тремя самыми популярными фреймворками в Node.js: Express, Koa и Hapi. В будущих статьях мы рассмотрим Next, Nuxt и Nest.
Сравнение основано на:
- GitHub Stars и загрузки npm
- Установить
- Базовое приложение Hello World
- выгода
- недостаток
- представление
- Безопасность
- Участие сообщества
Express
Express — это минимальная и гибкая структура веб-приложений, которая предоставляет мощный набор функций для веб-приложений и мобильных приложений. Она действует как промежуточное программное обеспечение, помогающее управлять серверами и маршрутами.
-
star
- Звезды GitHub: +43 000
- 6 881 035 загрузок npm в неделю
-
Установить
Убедитесь, что у вас установлены node и npm
// 你可以将express安装到项目依赖 npm install express --save // 如果要临时安装Express而不是将其添加到依赖项列表,则可以使用 npm install express --no-save
-
Hello World
Это самый простой пример того, как создать экспресс-приложение, которое прослушивает порт 3000 и отвечает «Hello World!».
// 这里只创建根目录 其他目录返回404 const express = require('express') const app = express() const port = 3000 app.get('/', (req, res) => res.send('Hello World!')) app.listen(port, () => console.log(`Example app listening on port ${port}!`))
-
выгода
- В значительной степени стандарт для веб-промежуточного программного обеспечения Node.js.
- Простой, минималистичный, гибкий и масштабируемый
- Быстрая разработка приложений
- Полностью настраиваемый
- низкая кривая обучения
- Простая интеграция сторонних сервисов и промежуточного ПО
- Основное внимание уделяется интеграции с браузером, шаблонами и рендерингом из коробки.
-
недостаток
Хотя Express.js — очень удобный и простой в использовании фреймворк, у него есть небольшие недостатки, которые могут повлиять на процесс разработки.
- Организации должны быть очень четкими, чтобы избежать проблем при сопровождении кода.
- Рефакторинг становится очень сложным по мере увеличения размера кодовой базы.
- Требуется много ручного труда, так как вам нужно создать все конечные точки
-
представление
Express — это базовая инкапсуляция веб-приложений, наследующая функции Node.js.
Существуют также некоторые передовые методы повышения производительности, в том числе:
- Сжать с помощью gzip
- не использовать синхронизацию
- Должным образом документировано (для отладки используйте специальные модули, такие как отладка, активность приложения используйте winston или bunyan)
- Правильно обрабатывать исключения с помощью try-catch или promises
- Убедитесь, что ваше приложение автоматически перезагружается с помощью диспетчера процессов или систем вроде systemd или upstartinit.
- Запустите приложение в кластере. Вы можете значительно повысить производительность своего приложения Node.js, запустив кластер процессов.
- Кэшируйте результаты запроса, чтобы ваше приложение не повторяло операции для обслуживания одного и того же запроса снова и снова.
- Запустите несколько его экземпляров и распределите трафик с помощью балансировщика нагрузки, такого как Nginx или HAProxy.
- Используйте обратный прокси для статических ресурсов. Он может обрабатывать страницы ошибок, сжатие, кэширование, обслуживание файлов и балансировку нагрузки и т. д.
- Дополнительные рекомендации по повышению производительности
Простое приложение «Hello World» имеет следующие запросы производительности в секунду:
-
Безопасность
Уязвимость Node.js напрямую затрагивает Express, поэтому обязательно используйте последнюю стабильную версию Node.js.
- Посмотреть экспресслучшие практики безопасности
-
Участие сообщества
- Количество участников: 220
- Запросов на вытягивание: 821
- Регулярные мероприятия сообщества Express, включая Gitter, IRC-каналы, проблемы, Wiki и многое другое.
Наконец, Express, вероятно, является самой популярной средой для Node.js, и есть много других популярных сред, построенных на Express.
koa
Koa — это новая веб-инфраструктура, созданная теми же людьми, что и Express, и призвана стать меньшим, более выразительным и более надежным краеугольным камнем в мире разработки веб-приложений и API. Используя асинхронные функции, Koa позволяет вам отказаться от обратных вызовов и значительно улучшить обработку ошибок Koa не связывает промежуточное программное обеспечение, но предоставляет элегантный способ помочь вам быстро и с удовольствием писать серверные приложения.
-
star
- Звезды GitHub: +25 000
- Еженедельные загрузки npm: +300 тыс.
-
Установить
Koa требует поддержки nodev7.6.0 или более поздней версии, поскольку функции ES6 используются внутри компании.
npm i koa node my-koa-app.js
-
Hello World
Создайте веб-службу, которая прослушивает порт 3000 и возвращает «Hello World».
const Koa = require('koa'); const app = new Koa(); app.use(async ctx => { ctx.body = 'Hello World'; }); app.listen(3000);
-
выгода
- Koa улучшает совместимость, надежность и делает написание промежуточного программного обеспечения более приятным.
- Интегрировано большое количество веб-API, но промежуточное ПО не привязано
- Очень легкий, основной модуль Koa состоит всего из 2 тысяч строк кода.
- Имеет очень хороший пользовательский опыт
- Лучшая обработка ошибок с помощью try/catch
- Асинхронный контрольный поток для более читаемого кода
-
недостаток
- Сообщество коа относительно невелико.
- Несовместимо с ПО промежуточного слоя в стиле Express (в настоящее время есть ПО промежуточного слоя, совместимое с другими фреймворками).
-
представление
Koa сама по себе является очень легкой структурой для создания веб-приложений с отличной производительностью. Читаемость кода и ремонтопригодность относительно высоки
Конечно, некоторые передовые методы повышения производительности также важны, например:
- кластер
- пробежать параллельно
- Использование асинхронного кода API
- код должен быть небольшим и легким
- а также с использованием сжатия gzip и т. д.
Простое приложение «Hello World» имеет следующие запросы производительности в секунду:
-
Безопасность
Koa имеет большое количество промежуточного программного обеспечения, предоставляющего соответствующие функции.
-
Сообщество
- Количество участников: 169
- Запросов на вытягивание: 577
- Некоторые рассуждения о коа
Наконец, Koa фокусируется на основной функциональности промежуточного программного обеспечения, а дизайн явно использует асинхронность/ожидание, чтобы сделать асинхронный код более читабельным.
Hapi
Hapi — это фреймворк с относительно богатыми базовыми функциями. Разработчики больше сосредоточены на бизнесе, чем тратят время на создание инфраструктуры. Режим, управляемый конфигурацией, отличается от традиционной работы веб-сервера. Также у него есть уникальная функция создания сервера на определенном IP, с аналогичной функцией на PreHandler. Когда вам это снова понадобится, вы можете перехватить специальные запросы на выполнение некоторых необходимых операций.
-
star _ GitHub Stars: +11000
- Еженедельные загрузки npm: +222 293
-
Установить
убедитесь, что у вас установлен узел
npm install hapi
-
Hello World
В следующем примере показано самое простое приложение hello world, использующее hapi:
'use strict'; const Hapi=require('hapi'); // 创建一个服务监听8000端口 const server=Hapi.server({ host:'localhost', port:8000 }); // 添加路由 server.route({ method:'GET', path:'/hello', handler:function(request,h) { return'hello world'; } }); // 启动服务 const start = async function() { try { await server.start(); } catch (err) { console.log(err); process.exit(1); } console.log('Server running at:', server.info.uri); }; start();
-
выгода
- Предоставляет мощную систему плагинов, позволяющую быстро добавлять новые функции и исправлять ошибки.
- Расширяемый API
- Получите более глубокий контроль над обработкой запросов.
- Лучший выбор для создания (REST) API, которые обеспечивают маршрутизацию, ввод, проверку вывода и кэширование.
- Напишите один раз и адаптируйтесь к каждому концу
- Подробный справочник по API и хорошая поддержка для создания документации
- Используйте с любой внешней средой, такой как React, Angular и Vue.js, для создания одностраничных приложений.
- Псевдопромежуточное ПО на основе конфигурации
- Обеспечивает кэширование, аутентификацию и проверку ввода
- Предоставляет архитектуру расширения на основе плагинов.
- Предоставить очень хороший бизнес плагин, например, Joi, Yar, Catbox, Boom, TV и Travelog
-
недостаток
- сложная структура кода
- Плагины несовместимы, вы можете использовать только определенные плагины, такие как: catbox joi boom tv good travelogue и т. д.
- Конечные точки создаются вручную и должны быть протестированы вручную
- Рефакторинг выполняется вручную
-
представление
Исследование 017 фреймворков Node показало, что hapi был худшим по производительности по сравнению с другими фреймворками.
Простое приложение «Hello World» имеет следующие запросы производительности в секунду:
-
Безопасность
Безопасность hapi в основном зависит от плагиновВыбор плагина
-
Сообщество
- Количество участников: 184
- Запросов на вытягивание: 1176
Наконец, Express по-прежнему остается самым популярным на данный момент, koa набирает обороты, поскольку поддерживает ES6, а hapi по-прежнему является лучшим выбором для крупных проектов.
Будь то Express, Koa или Hapi, в настоящее время являются очень зрелыми фреймворками. Почти может удовлетворить ваши потребности, нет лучшего, только самое подходящее
Choosing the right Node.js Framework: Express, Koa, or Hapi?
О Фундебаге
FundebugСосредоточьтесь на JavaScript, апплете WeChat, мини-игре WeChat, апплете Alipay, React Native, Node.js и мониторинге ошибок онлайн-приложений Java в режиме реального времени. С момента официального запуска Double Eleven в 2016 году Fundebug обработал в общей сложности более 1 миллиарда ошибок, а платными клиентами являются Google, 360, Kingsoft, People.com и многие другие бренды. приветствую всехБесплатная пробная версия!