Источник: Nuances of Programming
В прошлые выходные мне удалось выкроить время и выполнить обещание, данное команде Wasp, — опробовать на практике их язык.
Что такое Wasp
Новые языки, фреймворки и библиотеки появляются регулярно, а разбираться во всем этом все более утомительно, особенно если вы работаете в интернете. С начала моей карьеры веб-разработчика прошло уже 10 лет, но некоторые моменты профессиональной деятельности по-прежнему вызывают у меня восторг. Поэтому, когда я узнал о Wasp, мне стало очень интересно.
Вот что говорят создатели Wasp:
Wasp — это язык программирования для создания веб-приложений полного стека. Это означает, что Wasp берет на себя все три основные части веб-приложения: клиент (фронтенд), сервер (бэкенд) и развертывание.
По сути, вы получаете DSL — доменно-специфичный язык. Скорее всего, вы уже сталкивались с таким явлением, но все же упомяну несколько DSL. Безусловно, самым популярным и известным DSL является HTML, а также SQL и MATLAB.
Wasp (в моем понимании) — это DSL, который объединяет традиционные области веб-разработки в одну, но при этом позволяет использовать ваши любимые внешние библиотеки, такие как React. Это видно в данном фрагменте кода:
import createTask from '@wasp/actions/createTask'
import updateTask from '@wasp/actions/updateTask'
import logout from '@wasp/auth/logout.js'
import Clocks from './Clocks'
const MainPage = () => {
const { data: tasks, isFetching, error } = useQuery(getTasks)
return (
<div>
<NewTaskForm />
{tasks && <TasksList tasks={tasks} />}
{isFetching && 'Fetching...'}
{error && 'Error: ' + error}
<div> <Clocks /> </div>
<button onClick={logout}> Logout </button>
</div>
)
}
Конечно, можно как обычно использовать React и другие сторонние библиотеки. Если вы уже писали код на React, вам все будет понятно.
Но не будем забегать вперед.
Приложение ToDo
Тем, кто зарегистрируется для альфа-тестирования, предоставляется удобное и подробное руководство по созданию приложения для списка дел. Такие приложения — отличный способ научиться программированию!
Приложение Wasp, которое вы будете создавать, — это полностью функционирующее приложение со всеми необходимыми элементами. В руководстве говорится, что на его создание потребуется около 30 минут. И это действительно так.
Конечно, если писать весь код React, можно потратить на это больше часа. Это важно отметить, поскольку в реальной жизни мы, как правило, набираем большую часть кода сами, а не пользуемся готовыми сниппетами. Причина, по которой я набирал вручную код Wasp, заключалась в том, что почти каждый день я трачу несколько часов на написание React, а это не то, что мне было интересно изучать. Я настоятельно рекомендую писать код Wasp вручную.
Итак, мы подошли к следующему пункту — синтаксису.
Не могу сказать точно, нравится мне этот синтаксис или нет. Он определенно имеет индивидуальные особенности и напоминает {= your code =} в Wasp, как, например, в этом сниппете Prisma:
entity User {=psl
id Int @id @default(autoincrement())
email String @unique
password String
tasks Task[]
psl=}
К этому синтаксису стоит немного привыкнуть — вот все, что я могу сказать. IDE (или по крайней мере WebStorm) еще не знают, что делать с файлами .wasp, и в этом нет ничего удивительного, поэтому определение синтаксиса и его подсветка отсутствуют.
В руководстве рассказывается о нескольких основных темах, таких как базовые функции CRUD, аутентификация и внешние зависимости. На выходе вы получите довольно интересное приложение, которое по большей части создано с помощью конфигурационного файла — main.wasp. Если хотите ознакомиться с кодом, то он находится в открытом доступе на GitHub. Что еще более интересно — клон Medium на Wasp. Если хотите изучить тему подробнее, воспользуйтесь этим репозиторием.
Главный плюс с моей точки зрения: после того, как вы поймете, как все работает, Wasp станет вполне понятен. Объявите действия и сущности в конфигурационном файле Wasp, наложите пользовательский интерфейс — и все готово. Добавить функции входа и регистрации очень просто, а если вы внимательно посмотрите на готовое приложение, то увидите, насколько легко повторно использовать код для других проектов.
В веб-разработке дьявол всегда кроется в деталях, но с Wasp все кажется не таким уж сложным. Поняв его шаблон, вы готовы к дальнейшей работе.
Однако к некоторыми элементам все же придется привыкать. Работа с полусгенерированным приложением не всем по душе, но если вы любите все контролировать (и код в том числе), то Wasp станет для вас многообещающим инструментом.
Кроме того, есть еще инструмент Prisma.db. Не могу сказать, что являюсь его поклонником, но, возможно, причина в том, что я использовал его слишком мало. Но пусть Prisma не отталкивает вас от попытки попробовать Wasp. Работая с Prisma на практике, вы быстрее поймете основы этого инструмента.
Наконец, стоит обратить внимание на то, что не все элементы в приложении поддерживают перезагрузку в реальном времени. Однако это проблема не Wasp, а скорее Webpack. Удаление или добавление файлов в моем случае обычно требовало перезапуска приложения с помощью wasp start. Еще пара команд, которые вы будете часто использовать — это wasp db migrate-dev и wasp db studio.
Вывод
Спойлер: если вы зарегистрируетесь для прохождения альфа-теста, вам пообещают несколько подарков от Wasp. Полагаю, это сделано для того, чтобы отблагодарить людей за потраченное время. Но я зарегистрировался, потому что хотел показать возможности Wasp другим людям и подбодрить команду Wasp в их стремлении сделать этот инструмент популярным среди большего числа разработчиков.
Стану ли я большим поклонником Wasp? Пожалуй, нет. Как я уже говорил ранее, я не верю в безоговорочное принятие чего-либо в разработке ПО. Я рассматриваю Wasp в качестве потенциально отличного инструмента, который следует использовать в конкретных случаях. В текущем состоянии я бы охарактеризовал Wasp так:
Wasp может стать “крепким орешком”, если вы привыкли писать код для веб-приложения по принципу “фронтенд, бэкенд, инфраструктура”. Он многое упрощает, но при этом позволяет сохранять контроль над ситуацией.
Стоит ли попробовать Wasp? Точно стоит. Стоит ли использовать Wasp для всех веб-приложений в будущем? Конечно, нет. Вы ведь инженер-программист, и часть вашей работы заключается в использовании подходящих языков, фреймворков и библиотек для проектов. Wasp — это не то решение, которое не требует абсолютно никакого кода, он не предназначен для статичных и презентационных сайтов.
Wasp — это очень перспективный инструмент. Используйте его с умом.
Читайте также:
Перевод статьи Attila Vágó: I Tried Wasp, A DSL For Modern Web Applications