6 个版本
0.3.2 | 2023 年 8 月 9 日 |
---|---|
0.3.1 | 2023 年 8 月 7 日 |
0.3.0 | 2023 年 7 月 31 日 |
0.2.1 | 2023 年 7 月 27 日 |
0.1.0 | 2023 年 7 月 2 日 |
#598 在 模板引擎 中
每月 42 次下载
37KB
813 行
HYRO
名词/ˈhɪr.oʊ/
- A : "Hypermedia Rust Orchestration" 的缩写
B : 一个扩展 Axum 的新功能crate,如服务器端渲染 Jinja Templates,捆绑 css,以及更好的开发者体验。
C : 用于 超媒体系统 如 HTMX 的强大 HMR 框架。
D : 针对极客的相当于 Rails 的东西
用法和示例
- 更深入的示例可以在 examples/basic 和 examples/crud 中找到。确保在运行之前
cd
到包含模板和样式文件夹的路径,否则您将收到一个文件未找到错误!
让我们从依赖项开始
cargo new hyro-getting-started
cargo add hyro
cargo add axum
cargo add tokio -F full
mkdir templates
HYRO 模板使用 Jinja2。让我们从一个基本的开始
模板/hello.html.jinja2
<p>Hello, {{ name }}!</p>
然后我们可以设置我们的样板文件
src/main.rs
use std::borrow::Cow;
use axum::response::Html;
use axum::{routing, Router, Server};
use hyro::{context, RouterExt, Template};
#[tokio::main]
async fn main() {
let router = Router::new()
.route("/hello", routing::get(hello))
.into_service_with_hmr();
Server::from_tcp(hyro::bind("0.0.0.0:1380").await)).unwrap()
.serve(router)
.await
.unwrap();
}
async fn hello(template: Template) -> Html<Cow<'static, str>> {
template.render(context! {
name => "World",
})
}
现在,如果我们将浏览器导航到 'localhost:1380/hello',我们可以看到我们的消息!如果您以调试模式运行,您可以在 templates/hello.html.jinja2
中编辑我们的消息,并且应该启动 HMR。
依赖项
~21–31MB
~420K SLoC