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

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

Что такое фреймворк?

Вообще говоря, фреймворк — это система поддержки вашего приложения. Node предоставляет набор инструментов для взаимодействия с вещами, необходимыми вашему приложению, такими как сеть и файловая система. Фреймворк расширяет эти возможности и абстрагирует некоторые из более сложных аспектов разработки. Например, обработчик в вашем коде может получить объект запроса из сети. Фреймворк может перехватить этот объект запроса до того, как он достигнет вашего обработчика, добавляя некоторые дополнительные методы и возможности, облегчающие работу с ним.

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

MVC-фреймворки

Архитектура MVC (Model View Controller) — это полезный шаблон проектирования, который разделяет логику приложения на три части: модели для определения формы данных, представления для организации пользовательского интерфейса и контроллеры для связи между ними. Фреймворки Node, поддерживающие архитектуру MVC, полезны, если вы не хотите тратить слишком много времени на беспокойство о том, как организовать свой код.

Мы также можем сначала убрать Express, так как без него не будет полного списка фреймворков Node. Express по-прежнему является действующим чемпионом среди популярных фреймворков, о чем свидетельствуют его 47,5 тыс. звезд Github, 1,8 тыс. просмотров и 7,7 тыс. форков. Уже одно это делает его отличным выбором. Он надежен, хорошо протестирован, и существует большое сообщество, поддерживающее и работающее с ним, которое может поддержать вас и ответить на вопросы.

Express позиционирует себя как «быстрый, бескомпромиссный, минималистичный фреймворк для Node». Основное внимание уделяется производительности и предоставлению только того, что вам нужно. Фреймворк предоставляет небольшую собственную функциональность вместо того, чтобы позволять обширную цепочку промежуточного программного обеспечения для обработки запросов.

Начиная

Создайте файл server.js или app.js в корне вашего проекта и добавьте следующий код

const express = require('express') const app = express() app.get('/', function (req, res) { res.send('Hello World') }) app.listen(3000)

Запустите сервер с

node ./server.js

и посетите localhost:3000 в своем браузере, чтобы увидеть ответ.

Паруса подчеркивают стабильность и простоту использования и предоставляют намного больше из коробки, чем Express. Он ориентирован на полный стек, обеспечивая поддержку аутентификации, собственный ORM для взаимодействия с базой данных, WebSockets и шаблоны. Sails более самоуверен, чем Express — это означает, что вы вынуждены использовать предоставленный ORM (Waterline) и механизм шаблонов (EJS — хотя расширение Consolidate обеспечивает поддержку других механизмов шаблонов, совместимых с Express). Sails также может похвастаться впечатляющим генератором API. под названием Blueprints, который позволяет создавать конечные точки API с минимальным ручным кодированием. Из документации по парусам:

…если вы создадите файл модели User.js в своем проекте, то при включенных схемах вы сможете сразу же посетить /user/create?name=joe, чтобы создать пользователя, и посетить /user, чтобы просмотреть массив пользователи вашего приложения. И все это без написания ни строчки кода!

Sails существует уже давно и является одним из самых популярных фреймворков в соответствии с его звездами, представлениями и форками Github. Многие крупные компании полагаются на Sails, а это означает, что он достаточно надежен для поддержки приложений корпоративного уровня.

Начиная

Sails предоставляет мощный интерфейс командной строки, позволяющий очень быстро начать работу с новым приложением.

npm install -g sails sails new <project_name>

Вам будет предложено выбрать либо шаблон веб-приложения со встроенной аутентификацией и входом в систему, либо пустое приложение. Как только Sails завершит настройку основ, перейдите в папку проекта и запустите

sails lift

Теперь вы можете перейти к localhost:1337, чтобы увидеть сгенерированную домашнюю страницу.

Фреймворки с полным стеком

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

Метеор — второй по количеству звезд, просмотров и разветвлений Node-фреймворк на Github. Сообщество активно, а документация обширна. Документация включает лучшие практики, рекомендуемые руководства по стилю, а также множество руководств и технических статей. Meteor поставляется в комплекте с npm и собственным менеджером пакетов под названием Atmosphere, а также со встроенной поддержкой хранилища данных Mongo и простой интеграцией с React, Angular или Blaze. Он более самоуверен, чем Express или Sails.

Meteor использует «данные по сети», а не рендеринг на стороне сервера, поэтому сервер отправляет данные, а не HTML, а клиент их рендерит. Инструмент сборки Meteor обеспечивает готовую поддержку мобильных устройств через Cordova и поддерживает горячую перезагрузку.

Начиная

Инструмент сборки Meteor — это то, что создает, компилирует и запускает ваше приложение. Загрузите его через curl.

curl https://install.meteor.com/ meteor create <project_name>

Это создаст файловую структуру для всего, что вам нужно в базовом приложении Javascript, организованном в каталоги /client и /server. cd в корень вашего проекта и запустите

meteor run

Теперь приложение должно работать на localhost:3000.

Фреймворки REST API

Если у вас есть клиентская часть вашего приложения, вам может понадобиться фреймворк для серверной части вашего стека. В этом случае вы можете использовать простую структуру REST API только для обработки CRUD-запросов к вашему серверу. Вы можете в значительной степени сделать это с помощью Express, но есть также фреймворки, специально предназначенные для обработки этого конкретного случая.

Loopback — второй по популярности фреймворк REST API по версии Github. Разработанная IBM, это расширяемая среда Node с открытым исходным кодом на основе Express, которая позволяет быстро создавать API и микросервисы. Он поставляется с инструментом командной строки для простой генерации проектов и создания контроллеров и моделей и предоставляет дополнительную поддержку для простой аутентификации и авторизации. Он не поддерживает представления, шаблоны или выделенный ORM, поскольку предназначен для использования только в качестве API.

Loopback позволяет создать динамический API за считанные минуты с минимальным кодированием. Цикл разработки очень быстрый, а файловая структура чистая и полезная. Программа установки включает опции для настройки eslint, prettier, mocha и docker прямо из коробки.

Начиная

npm install -g @loopback/cli lb4 <project_name>

Вам будет предложено ответить на несколько вопросов о том, как вы хотите настроить свое приложение, и файловая структура будет сформирована. cd в корень проекта и запустить

npm start

Чтобы создать новый маршрут, запустите

lb4 controller

и отвечайте на подсказки. После создания файла контроллера вы можете импортировать функцию получения Loopback и использовать ее для настройки контроллера.

import {get} from '@loopback/rest'; export class HelloController { @get('/hello') hello(): string { return 'Hello world!'; } }

Резюме: Лучшие фреймворки Node.js

Выводы

Трудно выбрать окончательный «лучший» фреймворк Node, так как выбранный вами фреймворк будет меняться в зависимости от ваших потребностей. Если вам нужна свобода выбора собственных библиотек и сторонних интеграций, лучше всего подойдет Express или Loopback. Но если ваша команда хочет создать совершенно новое приложение за несколько дней, Meteor или Sails могут лучше удовлетворить ваши потребности.

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

Ссылки по теме

Первоначально опубликовано на https://rapidapi.com 16 октября 2019 г.