Часть 1: Построение Пользовательского Интерфейса

В первой части этой книги мы рассмотрим построение пользовательских интерфейсов на стороне клиента используя Leptos.

"Под капотом" Leptos и Trunk добавляют на страницу небольшой код на Javascript, который подзагружает Leptos UI, скомпилированный в WebAssembly для обеспечения реактивности вашего CSR (client-side rendered) веб-сайта.

Часть 1 познакомит вас с простыми инструментами, которые вам понадобятся, чтобы построить реактивный пользовательский интерфейс с помощью Leptos и Rust. К концу первой части вы наверняка сможете создать шустрый синхронный веб-сайт, который рендерится в браузере и который можно будет развернуть на любом хостинге статических сайтов, таком как Github Pages или Vercel.

Чтобы извлечь максимум из этой книги мы советуем вам запускать код примеров по ходу чтения.  
В главах [Начало работы](https://book-ru.leptos.dev/getting_started/) и [Leptos DX](https://book-ru.leptos.dev/getting_started/leptos_dx.html), 
мы разобрали настройку простого проекта с Leptos и Trunk, включая обработку ошибок WASM в браузере.
Этого простого сетапа вам будет достаточно для начала разработки с Leptos.

Если вы предпочитаете начать используя более полнофункциональный шаблон, демонстрирующий как настроить ряд обыденных
вещей, которые можно встретить в реальных Leptos проектах, например: маршрутизация (она описана далее в книге), 
вставка тегов `<Title>` и `<Meta>` в `<head>`, и несколько других фишек, тогда смело используйте репозиторий
 [шаблона leptos-rs `start-trunk`](https://github.com/leptos-rs/start-trunk) чтобы начать работу.

Шаблон `start-trunk` требует установленных `Trunk` и `cargo-generate`, которые можете поставить выполнив `cargo install trunk` и `cargo install cargo-generate`.

Чтобы создать проект, используя этот шаблон, просто выполните

`cargo generate --git https://github.com/leptos-community/start-csr`

затем выполните

`trunk serve --port 3000 --open`

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