跳到主要内容

构建一个简单的应用

一旦您准备好环境,您可以选择使用包含基本 Yew 应用程序的样板模板,或手动设置一个小型项目。

使用样板模板

按照其安装说明安装 cargo-generate,然后运行以下命令:

cargo generate --git https://github.com/yewstack/yew-trunk-minimal-template

手动设置应用程序

创建项目

要开始,请创建一个新的 Cargo 项目。

cargo new yew-app

打开新创建的目录。

cd yew-app

运行 Hello World 示例

为了验证 Rust 环境是否设置好,使用 cargo run 运行初始项目。您应该会看到 "Hello World!" 消息。

cargo run
# output: Hello World!

将项目设置为 Yew web 应用程序

要将此简单的命令行应用程序转换为基本的 Yew web 应用程序,需要进行一些更改。

更新 Cargo.toml

yew 添加到依赖项列表中。

Cargo.toml
[package]
name = "yew-app"
version = "0.1.0"
edition = "2021"

[dependencies]
# this is the development version of Yew
yew = { git = "https://github.com/yewstack/yew/", features = ["csr"] }
信息

如果您正在构建应用程序,只需要 feature csr。它将启用 Renderer 和所有与客户端渲染相关的代码。

如果您正在制作库,请勿启用此功能,因为它会将客户端渲染逻辑拉入服务器端渲染束缚。

如果您需要 Renderer 用于测试或示例,则应在 dev-dependencies 中启用它。

更新 main.rs

我们需要生成一个模板,设置一个名为 App 的根组件,该组件在单击按钮时会更新其值。用以下代码替换 src/main.rs 的内容。

备注

main 函数内的 yew::Renderer::<App>::new().render() 调用启动您的应用程序并将其挂载到页面的 <body> 标记上。 如果您想以任何动态属性启动应用程序,您可以改为使用 yew::Renderer::<App>::with_props(..).render()

main.rs
use yew::prelude::*;

#[function_component]
fn App() -> Html {
let counter = use_state(|| 0);
let onclick = {
let counter = counter.clone();
move |_| {
let value = *counter + 1;
counter.set(value);
}
};

html! {
<div>
<button {onclick}>{ "+1" }</button>
<p>{ *counter }</p>
</div>
}
}

fn main() {
yew::Renderer::<App>::new().render();
}

创建 index.html

最后,在应用程序的根目录中添加一个 index.html 文件

index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Yew App</title>
</head>
</html>

查看您的 Web 应用程序

运行以下命令在本地构建并启动应用程序:

trunk serve

如果您修改了任何源代码文件,Trunk 将会重新构建您的应用程序。

恭喜

您现在已经成功设置了 Yew 的开发环境,并构建了您的第一个 Web 应用程序。

尝试使用这个应用程序,并查看 examples 进一步学习。