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

Download history 7/week @ 2024-04-14 3/week @ 2024-04-21 5/week @ 2024-04-28 2/week @ 2024-05-05 154/week @ 2024-05-12 22/week @ 2024-05-19 7/week @ 2024-05-26 4/week @ 2024-06-02 6/week @ 2024-06-30 64/week @ 2024-07-28

每月 70 次下载

MIT 许可证

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-axumrstml-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