Команды запуска

Приложение может работать в двух режимах — SPA и SSR. Для обоих режимов свои команды запуска и сборки.

Одностраничное приложение (SPA)

Одностраничное приложение (SPA) загружает все необходимые ресурсы сразу и обновляет содержимое по мере необходимости без рендера на сервере. У приложения всего один html файл. Поэтому приложение называется одностраничным. В единственном html файле указаны загружаемые скрипты приложения без разметки самого содержимого. Сервер вернет один и тот же пустой html файл на запросы с любым URL. Рендер будет выполняться только в браузере, а результат рендера может завесить от множества параметра, в том числе и от текущего URL в строке адреса. Поэтому интерфейс приложения будут обладать множеством состояний или "страниц". Изменение параметров приводит к быстрому рендеру приложения без перезагрузки приложения с сервера. Приложение обычно взаимодействует с сервером АПИ для загрузки только чистых данных, а не html разметки.

Запуск SPA в режиме разработки

npm start

Приложение будет доступно по адресу http://localhost:8050. Адрес можно поменять через переменную окружения HOST и PORT (заданы по умолчанию в файле .env). В режиме разработки приложение в браузере будет автоматически обновляться при изменениях в исходниках без необходимости ручной перезагрузки. Если изменения затрагивают настройки сборки, то приложение потребуется перезапустить — снова выполнить команду npm start.

Сборка SPA

npm run build

Сборка выполняется для подготовки файлов приложения перед публикаций на сервер. Собранные файлы приложения окажутся в директории /dist/client. Среди собранных файлов окажется единственный html файл, файлы css, js, и другие файлы-ресурсы, например изображения.

Сборка и запуск production версии SPA для предпросмотра

npm run preview

В режиме предпросмотра приложение будет собрано для production и запущено на локальном http сервере с помощью Vite. На реальном сервере обычно используется nginx с настройками для отдачи по url адресу всех запрашиваемых файлов приложения.

Одностраничное приложение c рендером на сервере (SSR)

По запросу клиента на сервере выполняется SPA приложение и клиенту возвращается динамически созданный HTML документ как результат исполнения (рендера) приложения. Клиент загрузит HTML документ наполненный содержимым, а также загрузит скрипты SPA приложения. Поэтому последующие обновления в приложении будут происходить за счёт рендера в браузере. Рендер на сервере выполняется только для прямых запросов, когда пользователь загружает сайт. SSR используется для поисковой оптимизации, так как поисковые роботы смогут сразу получить содержимое страниц для индексации и успеют просканировать большее число гиперссылок.

Запуск SSR в режиме разработки

npm start:server

В терминале появится адрес приложения, например http://localhost:8050. В режиме разработки приложение будет автоматически обновляться при изменениях в исходниках без необходимости ручной перезагрузки. Но если изменения затрагивают node.js сервер или настройки сборки/прокси, то приложение потребуется перезапустить.

Сборка SSR

npm run build:server

Выполняется сборка SPA приложения для исполнения на клиенте и на сервере — создаются две версии. Сперва будет собрано клиентское приложение в директорию /dist/client. Следом будет собрано приложение для сервера в директорию /dist/server. Приложение для сервера не является само по себе сервером - это версия SPA приложения, которое синтаксически корректно для исполнения на Node.js. Для запуска рендера предназначено приложение-сервер в ./server. Его сборку выполнять не надо, но в зависимости от режима запуска сервер будет использовать либо исходник SPA приложения из /src, либо production сборку из /dist/server.

Сборка и запуск production версии SSR для предпросмотра

npm run preview:server

В режиме предпросмотра приложение будет собрано для production, и будет запущен сервер рендера на Node.js ./server/index.ts. Сервер будет исполнять собранное SPA приложение из ./dist/server для рендера в соответствии с параметрами запроса, отдавать результат рендера в формате html. Если запрос на ресурсы приложения (файлы js, css), то они отдаются напрямую из директории ./dist/client. На реальном сервере отдача файлов часто делегируется nginx, а остальные запросы проксируются в серверное приложение для рендера.

Если приложение уже собрано, то его можно запустить без пересборки:

npm run node:server

Проверки и тестирование

Выполнения всех юнит-тестов с помощью Jest. Будут найдены и исполнены все тесты в файлах с расширением *.spec.ts *.spec.js *.spec.tsx

npm run test

Проверка правил типизаций на TypeScript

npm run check:type

Проверка ошибок в коде с помощью ESLint и автоматическое исправление, если это возможно.

npm run check:lint
npm run check:lint:fix

Проверка форматирования кода с помощью Prettier и автоматическое исправление, если это возможно.

npm run check:prettier
npm run check:prettier:fix

Новый проект | Внедрение зависимостей