Как правильно выбрать бэкенд-фреймворк для рендеринга: Next, Nuxt, Nest?

Node.js

Резюме:3 основных фреймворка для бэкенд-рендеринга.

Введение

В прошлой статье я исследовал различия, преимущества и недостатки трех самых популярных фреймворков Node: Express, Koa и Hapi. В этом посте мы рассмотрим различия между тремя другими очень популярными фреймворками: Next, Nuxt и Nest. Все три фреймворка предназначены для рендеринга на стороне сервера и тесно связаны с React, Vue и Angular (тремя самыми популярными фреймворками на данный момент) соответственно.

Наше сравнение будет основано на следующих моментах:

  • GitHub Stars и загрузки npm
  • Установить
  • Базовое приложение Hello World
  • выгода
  • недостаток
  • представление
  • общественная деятельность

Next

Далее идет платформа React, которая позволяет создавать SSR и статические веб-приложения с использованием React.

  • start

    • GitHub Stars: +36,000
    • npm weekly downloads: +300,000
  • Установить

    следующая реакция

    npm install --save next react react-dom
    

    Добавьте скрипт в package.json следующим образом:

        {
          "scripts": {
            "dev": "next",
            "build": "next build",
            "start": "next start"
          }
        }
    

    затем прочитает файл js в каталоге страницы и проанализирует его в маршрут страницы

  • Hello World

    Создайте файл каталога в проекте ./pages/index.js

        function Home() {
          return <div>Hello world!</div>;
        }
        
        export default Home;
        
        // npm run dev
        // 然后访问 http://localhost:3000
    
  • выгода

    • По умолчанию каждый компонент обрабатывается сервером.
    • Автоматическое разделение кода для более быстрой загрузки страницы
    • Не загружайте ненужный код
    • Простая маршрутизация на стороне клиента (постраничная)
    • Среда разработки на основе Webpack, поддерживающая горячее обновление модулей (HMR)
    • Получить данные легко
    • Поддерживает любую реализацию HTTP-сервера Node, такую ​​как Express
    • Поддержка настройки Babel и Webpack
    • Может быть развернут на любой платформе, которая может запускать Node.
    • Встроенная обработка поисковой оптимизации (SEO) на странице
  • недостаток

    • Next не является серверной службой и должен открываться независимо от фоновой операции.
    • Если вы просто хотите создать простое веб-приложение, то это может оказаться тупиком.
    • Данные будут многократно загружаться на клиенте и сервере
    • Без реализации проекта с прямым разделением переход на Next будет болезненным и может потребовать вдвое больше работы.
  • представление

    Производительность основана на двух пунктах

    • 1. Используйте Apache Bench для тестирования пропускной способности.
    • 2. Используйте маяк для тестирования производительности, доступности, лучших практик, SEO.

这是Next基本HelloWorld程序。每秒能处理550.87个请求。每个请求花费的平均时间为18.153ms

В отчете о тестировании маяка вы можете видеть, что Preformance, Accessibility, Best Practices и SEO выше 70. Хотя это ниже, чем у двух других фреймворков, следует сказать, что это уже относительно хорошие данные. Оценка Best Practices nuxt выше, чем у двух других частей.

  • общественная деятельность
    • Количество участников: 678
    • Pull Requests: 3,029
    • Сообщество достаточно активно

Nuxt

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

  • star

    • Звезды GitHub: +19 000
    • npm weekly downloads: +100,000
  • Установить

    Чтобы быстро приступить к работе, команда Nuxt.js создала инструмент создания шаблонов create-nuxt-app.

        // 确保安装了npx(npx在NPM版本5.2.0默认安装了)
        npx create-nuxt-app <项目名>
    

    Это позволит вам сделать выбор: в интегрированных серверных фреймворках, таких как: Express, Koa, Hapi, Feathers, Micro, Adonis (WIP); выбрать свой любимый UI-фреймворк: Bootstrap, Vuetify, Bulma, Buefy и т. д.

  • Hello World

    Nuxt автоматически генерирует конфигурацию маршрутизации модуля vue-router на основе структуры каталогов страниц.

        // ./pages/index.vue
        <template>
          <div>
            <h1>Hello world!</h1>
            <NLink to="/about">
              About Page
            </NLink>
          </div>
        </template>
    
  • выгода

    • Его основная область применения — рендеринг пользовательского интерфейса при абстрагировании от распределения клиент/сервер.
    • Статический рендеринг, разделение спереди и сзади
    • Автоматическое наслоение кода
    • Можно настроить как сервисы, так и шаблоны
    • четкая структура проекта
    • Плавное переключение между компонентами и страницами
    • ES6/ES7 поддерживается по умолчанию
    • Горячее обновление поддержки разработки
    • Асинхронная выборка данных на уровне маршрута
    • Поддержка статического обслуживания файлов
    • Подготовка стилей: Sass, Less, Stylus и т. д.
  • недостаток

    • Меньше окружающих ресурсов
    • Разработка сложных компонентов может быть обременительной
    • Пользовательская конфигурация громоздка
    • Множество операций с данными с побочными эффектами. this.Items [key] = Value
    • Высокий трафик может вызвать нагрузку на сервер
    • DOM можно запрашивать и манипулировать только в определенных хуках.
  • представление

    Базовое приложение HelloWorld в Nuxt. Может обрабатывать 190,05 запросов в секунду. Среднее время запроса составляет 52,619 миллисекунды. Nuxt показывает худшие результаты по сравнению с двумя другими фреймворками по этому показателю.

Отчет о тестировании Lighthouse имеет самые высокие оценки по трем пунктам: производительность, доступность и SEO.

  • активное сообщество
    • Количество участников: 191
    • Запросы на вытягивание: 1385

Nest

Nest — это прогрессивный фреймворк Node, сильно вдохновленный Angular. Фреймворк для создания эффективных, масштабируемых серверных приложений Node. Построенный на TypeScript, он сохраняет совместимость с чистым JS и объединяет ООП (объектно-ориентированное программирование), FP (функциональное программирование) и FRP (адаптивное программирование). Service hood использует Express по умолчанию, но также обеспечивает совместимость с различными другими библиотеками, такими как Fastify, что позволяет легко использовать множество доступных сторонних плагинов.

  • Установить

    Nest предоставляет cli использовать эту команду cli для установки Nest и создания нового проекта.

        npm i @nestjs/cli
        nest new project-name
    

    В качестве альтернативы используйте Git для установки начального проекта TypeScript:

        git clone https://github.com/nestjs/typescript-starter.git project
        cd project
        npm install
        npm run start
    
  • Hello World

    После использования команды npm cli для создания нового проекта в каталоге src появится несколько основных файлов, а main.ts — наша точка входа.

        // 创建一个服务然后监听3000端口
        import { NestFactory } from '@nestjs/core';
        import { ApplicationModule } from './app.module';
        
        async function bootstrap() {
          const app = await NestFactory.create(ApplicationModule);
          await app.listen(3000);
        }
        bootstrap();
        
        // 启动起来 
        npm start
    
    
  • выгода

    • В качестве веб-фреймворка на основе TypeScript возможны строгие определения типов.
    • Автоматически генерировать документацию Swagger
    • Структура папок в Nest в основном основана на Angular.
    • Фреймворк на основе модулей, повторно используемый код
    • Структура проекта понятна, нужно только сосредоточиться на бизнесе, а не на архитектуре
    • Использование последней версии TypeScript означает, что функции JS в основном доступны.
    • Меньше переключений контекста для разработчиков. Переход с кода Angular на Nest относительно прост.
    • Подобно Angular, Nest также имеет хороший инструмент командной строки.
  • недостаток

    • Отсутствие документации. Фреймворк имеет хорошую интеграцию с другими фреймворками, но документация скудна.
    • За спиной нет поддержки со стороны крупных предприятий
    • В целом, Nest имеет меньшее сообщество по сравнению с другими фреймворками.
  • представление

    Базовое приложение HelloWorld в Nest. Он может обрабатывать 928,18 запросов в секунду. Среднее время на запрос составило 10,774 мс. По этому показателю Nest показала лучшие результаты среди трех сравнимых фреймворков.

    В отчете, предоставленном Lighthouse, у Nest очень высокая производительность, но низкие показатели доступности, лучших практик и SEO.

    Nest — не самый популярный фреймворк, но попробовать стоит!

  • Участие сообщества

    • Количество участников: 81
    • Запросы на вытягивание: 469

Сравнение Next, Nuxt, Nest здесь.

** Оригинал: [Выбор правильной платформы Node.js: Next, Nuxt, Nest?