[−][src]Macro render_macros::html
html!() { /* proc-macro */ }
Render a component tree to an HTML string, using XML-like tags.
The ergonomics are based on JSX:
Simple HTML elements start with a lowercase
let rendered = html! { <div id={"main"}>{"Hello"}</div> }; assert_eq!(rendered, r#"<div id="main">Hello</div>"#);
Custom components start with an uppercase
use render::Renderable; #[derive(Debug)] struct Heading<'t> { title: &'t str } impl<'t> Renderable for Heading<'t> { fn render(self) -> String { html! { <h1>{self.title}</h1> } } } let rendered = html! { <Heading title={"Hello world!"} /> }; assert_eq!(rendered, r#"<h1>Hello world!</h1>"#);
Punning is supported
but instead of expanding to value={true}
, it expands to
value={value}
like Rust's punning
let class = "some_class"; let rendered = html! { <div class /> }; assert_eq!(rendered, r#"<div class="some_class" />"#);
Values are always surrounded by curly braces
let rendered = html! { <div id={"main"} /> }; assert_eq!(rendered, r#"<div id="main" />"#);