Skip to content

Commit

Permalink
reactivity (#8)
Browse files Browse the repository at this point in the history
* view/README

* view

* Minor changes

* 06_control_flow.md

* view

* view

* view

* view

* view

* Style

* Style

* Style

* Style

* Style

* Style

* Style

* working_with_signals

* Style

* 14_create_effect

* /reactivity and style changes

* Style

* Style

* Style

* More cowbell

* More cowbell

* More cowbell

* More cowbell
  • Loading branch information
kakserpom authored Jul 1, 2024
1 parent 8785088 commit b9cd117
Show file tree
Hide file tree
Showing 21 changed files with 810 additions and 176 deletions.
8 changes: 4 additions & 4 deletions src-russian/01_introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@
начиная от простого приложения с рендерингом в браузере и постепенно перейдём к полностековому
приложению с рендерингом на стороне сервера и гидратацией.

Данное руководство не предполагает, что вы уже знаете что-либо о мелкозернистой реактивности (_англ. [fine-grained reactivity](https://www.google.com/search?q=fine-grained+reactivity)_)
или о особенностях современных Веб-фреймворков. Оно предполагает, что вы знакомы
с Rust, HTML, CSS, а также с DOM и с простыми Web API.
Данное руководство не требует от вас каких-либо знаний о мелкозернистой реактивности (_англ. [fine-grained reactivity](https://www.google.com/search?q=fine-grained+reactivity)_)
или об особенностях современных Веб-фреймворков.
Но мы предполагаем, что вы знакомы с Rust, HTML, CSS, а также с DOM и с простыми Web API.

Leptos больше всего похож на такие фреймворки как [Solid](https://www.solidjs.com) (JavaScript)
и [Sycamore](https://sycamore-rs.netlify.app/) (Rust). У него есть схожие черты и с другими фреймворками,
такими как React (JavaScript), Svelte (JavaScript), Yew (Rust), и
Dioxus (Rust). Так что знание одного из этих фреймворков может
помочь вам понять Leptos.

Вы можете найти более детальную документацию каждой части API на [Docs.rs](https://docs.rs/leptos/latest/leptos/).
Более детальную документацию по каждой части API можно найти на [Docs.rs](https://docs.rs/leptos/latest/leptos/).

> Исходный код этой книги доступен [здесь](https://github.com/leptos-rs/book-ru).
> Запросы Pull с исправлениями опечаток и уточнениями всегда кстати.
2 changes: 1 addition & 1 deletion src-russian/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
- [Реактивность](./reactivity/README.md)
- [Работа с сигналами](./reactivity/working_with_signals.md)
- [Реагирование на изменения с помощью `create_effect`](./reactivity/14_create_effect.md)
- [Примечание: Реактивность и функции](./reactivity/interlude_functions.md)
- [Примечание: Реактивность и Функции](./reactivity/interlude_functions.md)
- [Тестирование](./testing.md)
- [Асинхронность](./async/README.md)
- [Подгрузка данных с помощью ресурсов (Resource)](./async/10_resources.md)
Expand Down
50 changes: 25 additions & 25 deletions src-russian/getting_started/README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# Начало работы

Есть два пути чтобы начать работу с Leptos:
1. **Рендеринг на клиенте (CSR) с [Trunk](https://trunkrs.dev/)** - отличный вариант если вы просто хотите сделать шустрый сайт на Leptos,
1. **Рендеринг на клиенте (CSR) с [Trunk](https://trunkrs.dev/)** - отличный вариант если просто хочется сделать шустрый сайт на Leptos,
или работать с уже существующим сервером или API.
В режиме CSR, Trunk компилирует ваше Leptos приложение в WebAssembly (WASM) и запускает его в браузере как обычное
В режиме CSR, Trunk компилирует Leptos приложение в WebAssembly (WASM) и запускает его в браузере как обычное
одностраничное Javascript приложение (SPA). Примущества Leptos CSR включают более быструю сборку и ускоренный
итеративный цикл разработки, а также более простую ментальную модель и больше вариантов развёртывания вашего приложения.
CSR приложения имеют и некоторые недоставки: время первоначальной загрузки для ваших пользователей будет дольше
CSR приложения имеют и некоторые недоставки: время первоначальной загрузки для пользователей будет дольше
в сравнении с подходом серверного рендеринга (SSR), а ещё пресловутые проблемы SEO, которыми сопровождаются
одностраничники на JS, применимы и к приложениям на Leptos CSR. Также стоит заметить, что "под капотом" используется
автоматически генерируемый скрипт на JS, подгружающий бинарник WASM с Leptos, так что JS *должен* быть включен
Expand All @@ -15,19 +15,20 @@ CSR приложения имеют и некоторые недоставки:

2. **Full-stack, серверный рендеринг (SSR) c [`cargo-leptos`](https://github.com/leptos-rs/cargo-leptos)**
— SSR это отличный вариант для построения веб-сайтов в стиле CRUD и кастомных веб-приложений если вы хотите,
чтобы Rust был и на клиенте и на сервере. При использовании варианта Leptos SSR, ваше приложение рендерится
чтобы Rust был и на клиенте и на сервере. При использовании варианта Leptos SSR, приложение рендерится
в HTML на сервере и отправляется в браузер; затем в дело вступает WebAssembly, вооружая HTML, чтобы ваше приложение
стало интерактивным — этот процесс называется "гидратация". На стороне сервера, Leptos SSR приложения тесно интегрируются
либо с фреймворком по вашему выбору — [Actix-web](https://docs.rs/leptos_actix/latest/leptos_actix/index.html) или [Axum](https://docs.rs/leptos_axum/latest/leptos_axum/index.html), таким образом вы можете крейты этих сообществ,
чтобы они помогли вам в построении вашего сервера Leptos.
либо с фреймворком на выбор — [Actix-web](https://docs.rs/leptos_actix/latest/leptos_actix/index.html)
или [Axum](https://docs.rs/leptos_axum/latest/leptos_axum/index.html),
так что можно использовать крейты этих сообществ при построении сервера Leptos.
Преимущества выбора Leptos SSR включают в себя помощь в получении наилучшего времени первоначальной загрузки и оптимальные
очки SEO для вашего веб-приложения. SSR приложения могут также кардинально упростить клиент-серверное взаимодействие
с помощью Leptos-фичи под названием "серверные функции", которая позволяет вам прозрачно вызывать функции на сервере
из вашего клиентского кода (об этом позже). Full-stack SSR, впрочем, это не только пони, питающиеся радугой,
с помощью Leptos-фичи под названием "серверные функции", которая позволяет прозрачно вызывать функции на сервере
из клиентского кода (об этом позже). Full-stack SSR, впрочем, это не только пони, питающиеся радугой,
есть и недоставки, они включают в себя более медленный цикл разработки (потому что вам нужно перекомпилировать
и сервер и клиент, когда вы меняете Rust код), а также некоторую дополнительную сложность, которую вносит гидратация.

К концу этой книги вы будете иметь ясное представление о том на какие компромиссы идти и какой путь избирать — CSR или SSR
К концу этой книги у вас будет ясное представление о том, на какие компромиссы идти и какой путь избирать — CSR или SSR
— в зависимости от требований вашего проекта.

В Части 1 этой книги мы начнём с клиентского рендеринга Leptos сайтов и построения реактивных UI используя `Trunk`
Expand All @@ -41,11 +42,11 @@ Leptos в его full-stack SSR режиме.
самый простой способ понять разницу между ними — это по аналогии:
CSR режим в Leptos похож на работу с React (или с фреймворком основаным на сигналах, таким как SolidJS) и сфокусирован
на создании UI на клиентской стороне, который вы можете использовать с любым серверным стеком.
на создании UI на клиентской стороне, который можно использовать с любым серверным стеком.
Использование режима SSR в Leptos похоже на работу с full-stack фреймворком как Next.js в мире React
(или "SolidStart" фреймворком в SolidJS) — SSR помогает строить сайты и приложения, которые рендрятся на сервере и затем отправляются клиенту.
SSR может помочь улучшить производительность загрузки вашего сайта и доступность,
SSR может помочь улучшить производительность загрузки и доступность сайта,
а также упростить работу одному человеку *сразу* и над клиентом и на сервером без необходимости переключать контекст
между разными языками для frontend и backend.
Expand All @@ -57,7 +58,7 @@ SSR может помочь улучшить производительност

Первым делом убедитесь что Rust установлен и обновлен ([здесь инструкции, если нужны](https://www.rust-lang.org/tools/install))

Если инструмент `Trunk` ещё не установлен, вы можете установить его для запуска сайтов на Leptos CSR, путем выполнения следующей команды:
Если инструмент `Trunk` для запуска сайтов на Leptos CSR ещё не установлен, его можно установить так:

```bash
cargo install trunk
Expand All @@ -69,21 +70,21 @@ cargo install trunk
cargo init leptos-tutorial
```

`cd` в директорию вашего нового проекта `leptos-tutorial` и добавьте `leptos` в качестве зависимости
`cd` в директорию только что созданного проекта `leptos-tutorial` и добавьте `leptos` в качестве зависимости

```bash
cargo add leptos --features=csr,nightly
```

Или вы можете убрать `nightly` если вы используете стабильную версию Rust
Или без `nightly` если вы на стабильной версии Rust

```bash
cargo add leptos --features=csr
```

> Использование `nightly` Rust, и `nightly` feature в Leptos включает синтаксис вызова функции для геттеров и сеттеров сигналов, который использован в большей части этой книги.
>
> Чтобы использовать nightly Rust, вы можете либо выбрать nightly для всех ваших Rust проектов, выполнив команды
> Чтобы использовать nightly Rust, можно либо выбрать nightly для всех Rust проектов, выполнив
>
> ```bash
> rustup toolchain install nightly
Expand All @@ -100,19 +101,19 @@ cargo add leptos --features=csr
>
> [Здесь больше подробностей](https://doc.rust-lang.org/book/appendix-07-nightly-rust.html)
>
> Если вы бы предпочли использовать стабильную версию Rust с Leptos, то так тоже можно. В этом руководстве и примерах
> Если хотите использовать стабильную версию Rust с Leptos, то так тоже можно. В этом руководстве и примерах
> просто используйте методы
> [`ReadSignal::get()`](https://docs.rs/leptos/latest/leptos/struct.ReadSignal.html#impl-SignalGet%3CT%3E-for-ReadSignal%3CT%3E)
> и [`WriteSignal::set()`](https://docs.rs/leptos/latest/leptos/struct.WriteSignal.html#impl-SignalGet%3CT%3E-for-ReadSignal%3CT%3E)
> вместо вызова геттеров и сеттеров как будто они функции.
Убедитесь, что вы добавили цель сборки `wasm32-unknown-unknown`, чтобы Rust мог компилировать ваш код в WebAssembly для запуска в браузере.
Убедитесь, что добавили цель сборки `wasm32-unknown-unknown`, чтобы Rust мог компилировать код в WebAssembly для запуска в браузере.
```bash
rustup target add wasm32-unknown-unknown
```
Создайте простой файл `index.html` в корне вашей директории `leptos-tutorial`
Создайте простой файл `index.html` в корне директории `leptos-tutorial`

```html
<!DOCTYPE html>
Expand All @@ -132,7 +133,7 @@ fn main() {
}
```

Ваша структура директорий должна выглядеть как-то так
Структура директорий должна выглядеть как-то так

```
leptos_tutorial
Expand All @@ -143,18 +144,17 @@ leptos_tutorial
```

Теперь запустите `trunk serve --open` из корня вашей директории `leptos-tutorial`.
Trunk должен автоматически скомпилировать ваше приложение и открыть ваш браузер по-умолчанию.
Если вы вносите правки в `main.rs`, Trunk перекомпилирует ваш исходный код и перезагрузит страницу.

Trunk должен автоматически скомпилировать приложение и открыть браузер по-умолчанию.
При внесении правок в `main.rs`, Trunk перекомпилирует исходный код и перезагрузит страницу.

Добро пожаловать в мир разработки UI с помощью Rust и WebAssembly (WASM), приводимый в действие Leptos и Trunk!

```admonish note
Если вы используете Windows, учтите что `trunk server --open` может не работать. Если у вас проблемы с `--open`, просто
Под Windows, нужно учитывать, что `trunk server --open` может не работать. При проблемах с `--open` просто
используйте `trunk serve` и откройте вкладку браузера вручную.
```

---

Теперь прежде чем мы начнем строить ваше первый реальный UI c Leptos, есть пара вещей, о которых вам возможно стоит знать,
чтобы сделать ваш опыт с Leptos чуточку проще.
Теперь прежде чем мы начнем создавать ваш первый реальный UI c Leptos, есть пара вещей, о которых стоит знать,
чтобы сделать вашу разработку с Leptos чуточку проще.
Loading

0 comments on commit b9cd117

Please sign in to comment.