1 个不稳定版本
0.1.0 | 2023 年 11 月 19 日 |
---|
#398 在 模板引擎
7KB
60 代码行
yew-askama
这个 crate 提供了一个属性,允许您轻松地将 Askama 模板转换为 Yew 组件。
用法
这个 crate 导出了一个公共成员:名为 template_component
的过程宏属性。此宏可以应用于结构体,并且是侵入性最小的,因为它不会重新定义结构体,而是编辑它。
以下是一个例子
#[template_component]
#[template(path = "card.html")
pub struct Card {
title: &'static str,
content: &'static str,
}
(除了一些导入外)转换为
#[derive(askama::Template, yew::Properties, PartialEq)]
#[template(path = "card.html")
pub struct CardTemplate {
title: &'static str,
content: &'static str,
}
#[function_component]
pub fn Card(template: &CardTemplate) -> Html {
let template_string = template.render().unwrap();
let attr_value = AttrValue::from_str(template_string.as_str()).unwrap();
Html::from_html_unchecked(attr_value)
}
template_component
属性需要 Askama 的 template
属性被定义。更多信息请参见 此处。
注意,Askama 的 Template
特性和 Yew 的 Properties
特性都派生到同一类型。这意味着您必须考虑这两个特性的限制,例如不能使用生命周期。
限制
- 无状态:由于组件是通过结构体定义的,目前无法在代码中从组件中运行任何代码。这不是一个固有的限制,因为这个功能可以通过实现(非常容易)来实现。
- 不可选可见性:虽然不是紧急问题,但 Yew 组件的可见性目前无法配置。
依赖项
~11–15MB
~279K SLoC