JS: Веб-разработка

Теория: Микрофреймворк Fastify

Цикл «запрос-обработка-ответ» включает множество элементов, которые идентичны для всех сайтов. Поэтому возникли так называемые фреймворки — библиотеки, которые определяют структуру программы. В этом их отличие от обычных библиотек. Благодаря фреймворкам можно сосредоточиться на логике сайта, а не на продумывании базовой архитектуры или разработке вспомогательных инструментов.

Веб-фреймворки подразделяются на две большие группы:

  • Фреймворки
  • Микрофреймворки

Микрофреймворки устроены значительно проще. Они содержат только минимально необходимую обвязку для комфортной работы в архитектуре HTTP — это «запрос-ответ». Они идеально подходят для обучения, потому что просты и не отвлекают от главного.

В этом уроке мы начнем изучать принципы работы веб-приложений через призму фреймворка fastify. Изученные здесь концепции одинаково работают во всех остальных фреймворках.

Установка

Для начала создайте директорию и инициализируйте npm-проект:

mkdir myapp
cd myapp
npm init

Фреймворк поставляется в виде обычного npm-пакета:

npm install fastify

Сам по себе фреймворк не создает никаких файлов и директорий, поэтому добавьте директорию для хранения исходных файлов:

mkdir src

Создайте файл src/index.js со следующим содержимым:

import fastify from 'fastify'

const app = fastify()
const port = 3000

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen({ port }, () => {
  console.log(`Example app listening on port ${port}`)
})

Не забудьте добавить в package.json поддержку импортов:

"type": "module"

Запуск

Перейдем к запуску — он выполняется командой node src/index.js в директории проекта.

node src/index.js
Example app listening on port 3000

По умолчанию сервер стартует на http://localhost:3000. Если открыть адрес в браузере, то должна появиться надпись Hello World.

Сервер останавливается комбинацией клавиш Ctrl-C

Внесение изменений

Когда запускается веб-сервер, то исходный код загружается в память. Любые последующие изменения кода никак не повлияют на запущенное приложение. Это создает определенные неудобства во время разработки, так как придется перезапускать сервер каждый раз, когда результат изменений нужно будет проверять. Но для наших задач этого хватит.

Fastify CLI

Для удобства работы над проектами Fastify была создана специальная утилита fastify-cli. Она позволяет быстро создавать и запускать приложения, а также управлять проектами без необходимости ручной настройки. Мы рассмотрим основные команды, доступные в fastify-cli, и изучим, как с его помощью можно быстро разрабатывать приложения, которые будут легко масштабироваться.

Установка fastify-cli

Перед тем, как погружаться в работу утилиты, нужно ее установить:

npm install fastify-cli

Создание проекта

После установки fastify-cli можно создавать новые проекты. Для этого необходимо перейти в директорию, где вы хотите создать свой проект серверного приложения, и выполнить команду:

npx fastify generate . --esm

Команда generate создаёт структуру нового проекта в текущей директории, включая файлы конфигурации и директорию для хранения ваших приложений. Если в текущей директории уже находится package.json, то к команде нужно добавить флаг --integrate.

После генерации проекта нужно выполнить установку зависимостей:

npm install

Запуск приложения

После того как была создана структура проекта, можно запустить ваше приложение. Утилита добавляет необходимые скрипты, поэтому для запуска доступны следующие команды:

# Запуск в режиме production
npm start

# Запуск в режиме develop
npm run dev

Вторая команда npm run dev используется при разработке и позволяет утилите отслеживать изменения в рабочей директории и автоматически перезапускать сервер. Таким образом не придется каждый раз перезапускать сервер вручную.

Заключение

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

Завершено

0 / 23