#style #template #markup #once #render #per

markup-css-once

使用 Markup Rust 模板引擎,仅在模板中渲染内嵌样式一次

1 个不稳定版本

0.1.0 2023年1月12日

#360模板引擎

MIT 许可证

6KB

License Crates.io Docs.rs

markup-css-once

使用 Markup Rust 模板引擎,仅在模板中渲染内嵌样式一次

用法

假设我们有一个希望在页面上多次使用的模板。我们还在一个内嵌的 <style> 标签中有关这个模板的样式。

use markup_css_once::{CssOnce, css_once};

markup::define! {
    Hello<'a>(
        css: &'a CssOnce,
        name: &'a str,
    ) {
        @css_once!(css,
            "p { background: blue }"
            "b { color: yellow }"
        )
        p { "Hello, " b { @name } }
    }
}

// We need an tracker for components with already rendered css
let css = CssOnce::new();

// The first time the template is rendered with styles
assert_eq!(
    Hello { css: &css, name: "World" }.to_string(),
    "<style>p { background: blue }b { color: yellow }</style>\n<p>Hello, <b>World</b></p>"
);

// But all subsequent calls will render only it's HTML
assert_eq!(
    Hello { css: &css, name: "World" }.to_string(),
    "<p>Hello, <b>World</b></p>"
);

贡献

我们感激所有形式的贡献,谢谢!

关于 README 的说明

大多数 README 文件是通过 cargo-sync-readme 从 crate 文档自动复制的。这样 README 总是与文档保持同步,并且示例已经过测试。

因此,如果您想更改 <!-- cargo-sync-readme start --><!-- cargo-sync-readme end --> 标记之间的 README 的部分,请不要直接编辑 README.md,而是更改 src/lib.rs 顶部的文档,然后使用以下命令同步 README:

cargo sync-readme

(确保已安装 cargo 命令)

cargo install cargo-sync-readme

如果您已安装 rusty-hook,更改将在提交时自动应用。

许可证

本项目采用 MIT 许可证

无运行时依赖