[2023.09.11]: Yew的SSR中的Cargo.toml配置

由于各种原因,我最后还是打算把Yew应用的开发从csr模式转成ssr模式。没想到这里面的水还是挺深的,这里面的Cargo.toml配置包含的信息量之大,着实让我头疼了一番。

Cargo.toml的配置如下

[package]
name = "app"
version = "0.1.0"
edition = "2021"

[[bin]]
name="ssr_hydrate"
required-features=["hydration"]

[[bin]]
name="ssr_server"
required-features=["ssr"]

[dependencies]
yew = { version = "0.20" }
...
[features]
hydration = ["yew/hydration"]
ssr = ["yew/ssr"]

上面的文档包含的信息量比较大,我这里只挑4个地方来说一下(其它点,我自己也是在学习中)。

1. [package].name

这个字段用来指定 package 的名称。之前我对这个名称的定义并没有太在意,但在Yew的SSR开发模式中,这个名称会被 bin 模块所引用。如果 package 的名称与 bin 模块中引用的名称不一致,cargo clippy 并不会给出警告,只有在运行 trunk build index.html 时才会报错。

error[E0432]: unresolved import `app`
 --> src/bin/ssr_hydrate.rs:1:5
  |
1 | use app::App; 
  |     ^^^ use of undeclared crate or module `app`

2. [[bin]]

"[[bin]]“这种用法让我感到意外。使用过ini配置文件的同学都知道”[]“用于表示section,这里的”[[]]"是啥意思?
经过查阅文档,我才发现这是 toml 对数组的一种定义方式,即允许我们配置多个 bin。这意味着我们可以在同一个 Cargo.toml 文件中定义多个二进制可执行文件,并为它们分别指定不同的配置。这一特性在开发多个相关的工具或应用程序时非常有用。我们只需在 [[bin]] 下添加多个条目,每个条目中配置一个 bin 的名称、入口文件以及其他相关的设置。这样,我们就能更加灵活地管理和构建我们的项目。
回到Yew的SSR开发中,上面的文档定义了2个bin,ssr_hydrate和ssr_server。

3. [[bin]].name

bin的名称,在这个项目中,它们是ssr_hydrate和ssr_server,即bin的名称直接对应于文件的名称。它们存放在src/bin目录下。在这个项目中,它的目录结构式这样的。

.
├── Cargo.lock
├── Cargo.toml
├── index.html
├── index.scss
└── src
    ├── bin
    │   ├── ssr_hydrate.rs
    │   └── ssr_server.rs

4. [[bin]].required-features

bin的required-features,它是一个数组,数组中的数据来源于[features]。我个人比较害怕这种用法,因为它不能让你一眼看出它们之间的关系。
在上面的Cargo.toml中,[features]包含了hydration和ssr,这两个值正是被required-features所引用。
关于required-features,我这里只是带出了一点皮毛,里面的信息量比较大,我后面结合我的开发经历再来逐步展开。

更多的Cargo.toml配置,请参考官方文档文章来源地址https://www.uudwc.com/A/ZGd2x/

原文地址:https://blog.csdn.net/firefox1/article/details/132817115

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

上一篇 2023年09月12日 03:06
python 使用requests爬取百度图片并显示
下一篇 2023年09月12日 03:06