В этой статье я объясню простой пошаговый процесс создания нового сервера с Express в TypeScript.
Этот пример требует базовых знаний Node.js, npm и Visual Studio Code.
Настроить проект
Прежде чем мы начнем, нам нужно создать каталог для нашего проекта. Для этого мы вводим mkdir typescript-express
и подтверждаем нажатием Enter.
Переходим в каталог с помощью cd typescript-express
и настраиваем проект.
Сначала мы создаем пакет Node.js с помощью команды npm init -y
.
После этого мы можем установить модули для нашего проекта. Поэтому мы устанавливаем Express с npm i express
.
Поскольку мы работаем с TypeScript, нам также нужны TypeScript и Typings для Express. Мы делаем это с помощью команды npm i -D typescript @types/express
.
И последнее, но не менее важное: давайте создадим конфигурацию для TypeScript. Для этого используем команду npx tsc --init
. Компилятор TypeScript создаст предопределенный файл со всеми возможными настройками.
Здесь все команды одна за другой…
mkdir typescript-express cd typescript-express npm init -y npm i -D typescript @types/express npm i express npx tsc --init
Для получения дополнительной информации о настройке проекта для TypeScript я могу обратиться только к одной из моих предыдущих статей Простая настройка для вашего следующего проекта TypeScript.
После этого у вас должно получиться примерно следующее:
Напишите приложение Hello World
Для облегчения старта воспользуемся примером прямо со экспресс-страницы и скорректируем его минимально.
Обратите внимание, как мы назначаем порт. Я могу только рекомендовать всегда настраивать порт таким образом. Это также подходит для других проектов, которые не используют Express. Если вы позже реализуете службы и развернете их, например, в Google App Engine (Google Cloud), Google установит эту переменную среды (PORT).
Настроить проект
Мы настраиваем компилятор для TypeScript для создания SourceMaps для отладки и вывода файлов JavaScript в папку dist
.
Для этого мы вносим следующие изменения в tsconfig.json
Чтобы наш проект можно было перенести на JavaScript, мы добавляем скрипт для сборки. Для этого мы добавляем новую запись build
в раздел scripts
файла package.json
. Этот сценарий просто запускает компилятор TypeScript tsc
(взяв наши настройки из tsconfig.json
).
И последнее, но не менее важное: мы настраиваем наш код Visual Studio так, чтобы мы могли запускать проект с отладчиком из кода Visual Studio.
Для этого нажимаем комбинацию клавиш Ctrl+D
(в Windows) и выбираем «создать файл launch.json». В открывшемся меню выбираем Node.js (legacy)
.
В созданном впоследствии launch.json
мы настраиваем следующие значения:
- программа: мы переходим в выходной каталог нашего файла JavaScript.
- sourceMaps: имеет значение true, чтобы мы могли отлаживать исходный код в TypeScript позже (например, с помощью точек останова).
- preLaunchTask: всегда выполняется перед тем, как мы хотим запустить нашу программу (только при отладке или фактически при запуске непосредственно из кода Visual Studio).
Запустите сервер
Пока все настроено, можно нажать F5
. На этом мы запускаем отладчик Visual Studio Code и нашего сервера.
В качестве альтернативы node dist/main.js
также можно ввести в терминал, но только после того, как проект будет перенесен в JavaScript (например, с помощью npm run build
).
Теперь мы можем открыть наш браузер и ввести адрес localhost:3000
. Мы должны увидеть что-то похожее на следующее изображение.
Небольшая отладка
И последнее, но не менее важное: мы вносим изменения в исходный код.
Мы добавляем еще один маршрут Hello
, который должен выводить только World!
. Дополнительно мы устанавливаем точку останова для обоих маршрутов. Это позиция в коде, где отладчик должен остановиться при достижении этой позиции в коде.
Мы снова запускаем сервер с F5
, переключаемся в браузер и переходим прямо к localhost:3000
. Код Visual Studio должен немедленно выйти на передний план и выделить позицию в исходном коде.
С F5
мы позволяем серверу продолжить работу и снова переключаемся на браузер. Теперь мы должны увидеть Hello World!
. Мы в последний раз меняем адрес на localhost:3000/Hello
.
Мы должны снова войти в Visual Studio Code и на этот раз увидеть выделенный маршрут для Hello
.
Мы можем снова нажать F5
в Visual Studio Code, чтобы продолжить работу с сервером. Теперь мы должны увидеть World!
в браузере.
Чего я хотел добиться с помощью дополнительного маршрута и точек останова?
Во многих руководствах мне не хватает подхода к настройке отладчика, чтобы программа могла отлаживаться непосредственно из среды разработки. В частности, с TypeScript, чтобы это работало, необходимо заранее сделать несколько настроек. Здесь я увидел хорошую возможность вкратце коснуться этого в конце.
Заключение
Это простая установка Express в TypeScript (+ настройки для отладчика).
Я решил показать пример с Express, потому что, несмотря на свой возраст, Express все еще широко используется сегодня. Существует достаточно альтернатив (например, Nest.js), которые также используют Express в своей базовой структуре или построены аналогичным образом. Преимущество Express состоит в том, что он очень подходит для обучения и предлагает легкое введение в разработку серверов. Это не значит, что Express не подходит для готовых к производству проектов, как раз наоборот.
В зависимости от отзывов, это будет первая часть серии «Экспресс». Пока что запланировано:
- Промежуточное ПО / обработчики
- упрощенный пример REST API
- упрощенный GraphQL API (на основе тех же Mock-Data) и сравнение с REST API
- развертывание в Google Cloud.
Надеюсь, вам понравилась статья, если у вас есть какие-либо вопросы или предложения, просто свяжитесь со мной.
Полный пример доступен на GitHub: https://github.com/bromix/typescript-express-tutorial