yew/examples/function_router
dependabot[bot] 71e24b7e81
Bump the cargo-deps group across 1 directory with 18 updates (#3933)
* Bump the cargo-deps group across 1 directory with 18 updates

Bumps the cargo-deps group with 17 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [tokio](https://github.com/tokio-rs/tokio) | `1.47.1` | `1.48.0` |
| [implicit-clone](https://github.com/yewstack/implicit-clone) | `0.5.1` | `0.6.0` |
| [thiserror](https://github.com/dtolnay/thiserror) | `2.0.16` | `2.0.17` |
| [serde](https://github.com/serde-rs/serde) | `1.0.225` | `1.0.228` |
| [wasm-bindgen-test](https://github.com/wasm-bindgen/wasm-bindgen) | `0.3.53` | `0.3.54` |
| [trybuild](https://github.com/dtolnay/trybuild) | `1.0.111` | `1.0.112` |
| [quote](https://github.com/dtolnay/quote) | `1.0.40` | `1.0.41` |
| [getrandom](https://github.com/rust-random/getrandom) | `0.3.3` | `0.3.4` |
| [clap](https://github.com/clap-rs/clap) | `4.5.47` | `4.5.49` |
| [reqwest](https://github.com/seanmonstar/reqwest) | `0.12.23` | `0.12.24` |
| [regex](https://github.com/rust-lang/regex) | `1.11.2` | `1.12.2` |
| [toml](https://github.com/toml-rs/toml) | `0.9.5` | `0.9.8` |
| [anyhow](https://github.com/dtolnay/anyhow) | `1.0.99` | `1.0.100` |
| [lipsum](https://github.com/mgeisler/lipsum) | ``35060ef`` | ``e1ab664`` |
| [time](https://github.com/time-rs/time) | `0.3.43` | `0.3.44` |
| [warp](https://github.com/seanmonstar/warp) | `0.3.7` | `0.4.2` |
| [axum](https://github.com/tokio-rs/axum) | `0.8.4` | `0.8.6` |



Updates `tokio` from 1.47.1 to 1.48.0
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.47.1...tokio-1.48.0)

Updates `implicit-clone` from 0.5.1 to 0.6.0
- [Commits](https://github.com/yewstack/implicit-clone/compare/v0.5.1...v0.6.0)

Updates `thiserror` from 2.0.16 to 2.0.17
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.16...2.0.17)

Updates `serde` from 1.0.225 to 1.0.228
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.225...v1.0.228)

Updates `wasm-bindgen-test` from 0.3.53 to 0.3.54
- [Release notes](https://github.com/wasm-bindgen/wasm-bindgen/releases)
- [Changelog](https://github.com/wasm-bindgen/wasm-bindgen/blob/main/CHANGELOG.md)
- [Commits](https://github.com/wasm-bindgen/wasm-bindgen/commits)

Updates `trybuild` from 1.0.111 to 1.0.112
- [Release notes](https://github.com/dtolnay/trybuild/releases)
- [Commits](https://github.com/dtolnay/trybuild/compare/1.0.111...1.0.112)

Updates `quote` from 1.0.40 to 1.0.41
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.40...1.0.41)

Updates `getrandom` from 0.3.3 to 0.3.4
- [Release notes](https://github.com/rust-random/getrandom/releases)
- [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/getrandom/compare/v0.3.3...v0.3.4)

Updates `clap` from 4.5.47 to 4.5.49
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.47...clap_complete-v4.5.49)

Updates `reqwest` from 0.12.23 to 0.12.24
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.12.23...v0.12.24)

Updates `regex` from 1.11.2 to 1.12.2
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.11.2...1.12.2)

Updates `toml` from 0.9.5 to 0.9.8
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.9.5...toml-v0.9.8)

Updates `anyhow` from 1.0.99 to 1.0.100
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.99...1.0.100)

Updates `lipsum` from `35060ef` to `e1ab664`
- [Release notes](https://github.com/mgeisler/lipsum/releases)
- [Commits](35060ef81a...e1ab6646e6)

Updates `time` from 0.3.43 to 0.3.44
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.43...v0.3.44)

Updates `warp` from 0.3.7 to 0.4.2
- [Release notes](https://github.com/seanmonstar/warp/releases)
- [Changelog](https://github.com/seanmonstar/warp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/warp/compare/v0.3.7...v0.4.2)

Updates `axum` from 0.8.4 to 0.8.6
- [Release notes](https://github.com/tokio-rs/axum/releases)
- [Changelog](https://github.com/tokio-rs/axum/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/axum/compare/axum-v0.8.4...axum-v0.8.6)

Updates `serde_derive` from 1.0.225 to 1.0.228
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.225...v1.0.228)

---
updated-dependencies:
- dependency-name: tokio
  dependency-version: 1.48.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-deps
- dependency-name: implicit-clone
  dependency-version: 0.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-deps
- dependency-name: thiserror
  dependency-version: 2.0.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: serde
  dependency-version: 1.0.228
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: wasm-bindgen-test
  dependency-version: 0.3.54
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: trybuild
  dependency-version: 1.0.112
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: quote
  dependency-version: 1.0.41
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: getrandom
  dependency-version: 0.3.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: clap
  dependency-version: 4.5.49
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: reqwest
  dependency-version: 0.12.24
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: regex
  dependency-version: 1.12.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-deps
- dependency-name: toml
  dependency-version: 0.9.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: anyhow
  dependency-version: 1.0.100
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: lipsum
  dependency-version: e1ab6646e65fa7fdc201f97919b82d7f44fb6ae5
  dependency-type: direct:production
  dependency-group: cargo-deps
- dependency-name: time
  dependency-version: 0.3.44
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: warp
  dependency-version: 0.4.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: cargo-deps
- dependency-name: axum
  dependency-version: 0.8.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
- dependency-name: serde_derive
  dependency-version: 1.0.228
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: cargo-deps
...

Signed-off-by: dependabot[bot] <support@github.com>

* downgrade warp

* fix implicit_clone upgrade

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Martin Molzer <WorldSEnder@users.noreply.github.com>
2025-10-22 19:36:23 +02:00
..
2022-03-07 18:38:22 +05:00
2022-03-07 18:38:22 +05:00
2025-03-02 23:56:22 +09:00

Function Router Example

This is identical to the router example, but written in function components.

Demo

A blog all about yew. The best way to figure out what this example is about is to just open it up. It's mobile friendly too!

Concepts

This example involves many different parts, here are just the Yew specific things:

  • Uses yew-router to render and switch between multiple pages.

The example automatically adapts to the --public-url value passed to Trunk. This allows it to be hosted on any path, not just at the root. For example, our demo is hosted at /router.

This is achieved by adding <base data-trunk-public-url /> to the index.html file. Trunk rewrites this tag to contain the value passed to --public-url which can then be retrieved at runtime. Take a look at Route for the implementation.

Improvements

  • Use a special image component which shows a progress bar until the image is loaded.
  • Scroll back to the top after switching route
  • Run content generation in a dedicated web worker
  • Use longer Markov chains to achieve more coherent results
  • Make images deterministic (the same seed should produce the same images)
  • Show posts by the author on their page (this is currently impossible because we need to find post seeds which in turn generate the author's seed)
  • Show other posts at the end of a post ("continue reading")
  • Home (/) should include links to the post list and the author introduction
  • Detect sub-path from --public-url value passed to Trunk. See: thedodd/trunk#51

Running

Run this application with the trunk development server:

trunk serve --open

Notes

Content generation can take up quite a bit of time in debug builds. It may be better to run this example in release mode if it is slow.