1 个不稳定版本

使用旧的Rust 2015

0.1.0 2016年4月14日

#445 in 模板引擎


用于 borealis_codegen

MIT/Apache

43KB
1K SLoC

北极星

Build Status

北极星是一个用Rust编写的HTML5模板引擎。

文档

// Enable compiler plugins. Note that this only works in nightly.
#![feature(plugin)]
#![plugin(borealis_codegen)]

// Let the plugin derive `SerializeDocument` for us.
#[template_document(file="template.html")]
struct Template {
    value: String,
}

模板文件需要与代码文件在同一个目录下。

<!DOCTYPE html>
<html>
    <body>
        {{ self.value }}
    </body>
</html>

现在您可以在一个 Template 上调用 borealis::serializer::serialize 来将其序列化到一个写入器。

use borealis::serializer;

// Create a buffer which we can write too.
// Normally this would be a TCP stream or similar.
let mut writer: Vec<u8> = Vec::new();

// Create a new template.
let template = Template {
    value: "test".into(),
};

// Turn it into a document and serialize it into our buffer.
serializer::serialize(&mut writer, template);

片段

#![feature(plugin)]
#![plugin(borealis_codegen)]

#[template_fragment(file="template.html", trim)]
struct Template {
    value: u32,
}

trim标志表示插件将在解析片段文件之前删除任何空白。 (这是通过 String::trim 实现的) 如果您的编辑器在文件末尾插入额外的换行符,这可能会很有用。

与文档模板一样,文件需要与代码在同一个目录下。

<ul>
    {{ (0..self.value).map(|v| format!("{}", v)) }}
</ul>

现在可以将在另一个片段或文档中使用片段。

许可证

以下任一许可证下许可

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您提交的任何有意包含在工作中的贡献,都应按上述方式双重许可,没有额外的条款或条件。

依赖

~4MB
~70K SLoC