10 个版本
0.2.7 | 2024 年 5 月 16 日 |
---|---|
0.2.6 | 2024 年 3 月 14 日 |
0.2.5 | 2024 年 1 月 18 日 |
0.2.4 | 2023 年 8 月 18 日 |
0.1.1 | 2023 年 8 月 6 日 |
10 在 #glue
每月 70 次下载
46KB
561 代码行
rstml-component-axum: 与 rstml-component 集成 Axum
rstml-component-axum
是一个用于在 Axum 项目中简化 rstml-component
使用的 crate。此 crate 提供粘合代码和辅助工具,以便更容易在您的 Axum 应用程序中使用 rstml-component
创建动态 HTML 内容。
功能
-
简化集成: 无缝将
rstml-component
集成到您的 Axum 处理程序中,以实现高效的 HTML 生成。 -
针对 Axum 优化: 享受
rstml-component
和 Axum 的双重优势,用于构建高性能服务器应用程序。
安装
要在您的 Axum 项目中使用 rstml-component-axum
,请将其添加到您的 Cargo.toml
依赖项中。
[dependencies]
rstml-component-axum = "0.1.0"
用法
以下是一个基本示例,演示了如何使用 rstml-component-axum
将 rstml-component
集成到 Axum 处理程序中。
use axum::{response::IntoResponse, routing::get, Router};
use rstml_component::{move_html, write_html, For, HtmlComponent, HtmlContent};
use rstml_component_axum::HtmlContentAxiosExt;
use std::net::SocketAddr;
#[derive(HtmlComponent)]
struct Book {
title: &'static str,
author: &'static str,
}
impl Book {
fn new(title: &'static str, author: &'static str) -> Self {
Self { title, author }
}
}
impl HtmlContent for Book {
fn fmt(self, formatter: &mut rstml_component::HtmlFormatter) -> std::fmt::Result {
write_html!(formatter,
<div>
<h1>{self.title}</h1>
<h2>"("{self.author}")"</h2>
</div>
)
}
}
// Your Axum handler
async fn index() -> impl IntoResponse {
let books = [
("Moby Dick", "Herman Melville"),
("Lord of the Rings", "John Ronald Reuel Tolkien"),
];
move_html!(
<div class="books">
<For items={books}>
{ |f, book| Book::new(book.0, book.1).fmt(f) }
</For>
</div>
)
.into_html()
}
#[tokio::main]
async fn main() {
let app = Router::new().route("/", get(index));
let addr = SocketAddr::from(([0, 0, 0, 0], 3000));
println!("listening on {}", addr);
axum::Server::bind(&addr)
.serve(app.into_make_service())
.await
.unwrap();
}
有关更详细的说明和更多示例,请参阅 rstml-component-axum
的文档。
许可证
本项目采用 MIT 许可证。
依赖项
~8–15MB
~186K SLoC