#handlebars #static #flexible #static-site-generator #toml #json #file

slime

基于 handlebars 和 toml 的简单且灵活的静态页面/代码生成库

4 个版本 (有破坏性)

使用旧的 Rust 2015

0.4.0 2018 年 2 月 28 日
0.3.0 2018 年 2 月 9 日
0.2.0 2017 年 10 月 23 日
0.1.0 2017 年 10 月 20 日

#311模板引擎

MIT 许可证

15KB
233

Slime

Build Status Latest Version

基于 handlebars 的灵活静态网站生成库

为什么选择 slime

因为它又瘦又灵活(就像鼻涕虫...)

是什么?

模板 + 数据 = 静态页面!

如何

  • handlebars
  • toml/json
  • 少量简单的辅助函数

为什么?

  • 更灵活的设计 - 可以通过合并或修改加载的 json 来重用/操作数据
  • 模块化 - 支持部分模板
  • 容易学习 - 使用已经流行的 json 和 handlebars 组合
  • 容易开始 - 复制示例并编辑 json/handlebar 文件,创建一个静态页面而无需接触 rust 代码

安装

创建新的二进制 crate。运行

curl -s https://raw.githubusercontent.com/jaroslaw-weber/slime/master/init_slime.sh | bash

(设置文件夹和部署脚本 for github+travis)

展示给我

文件夹结构

- generated (generated html files)
- data (data to insert into templates)
 - index.toml
- templates
 - index.hbs (handlebar templates)
deploy.sh (deploying generated html files to github pages)
.travis.yml (travis build script)

代码

extern crate slime;
use slime::Slime;

fn main() {
    //create new wrapper
    let s = Slime::default();

    s.initialize()

    //load data
    let data1 = s.load_json_data("data1").expect("failed to load json data");
    let data2 = s.load_toml_data("data2").expect("failed to load toml data");

    //generate html files
    s.generate("index", "json_version", &data1)
        .expect("failed to generate page with json data");
    s.generate("index", "toml_version", &data2)
        .expect("failed to generate page with toml data");
}

那么发生了什么?

let mut s = Slime::default();

创建新的包装器。

s.initialize()

加载模板。

let data1 = s.load_json_data("data1").expect("failed to load json data");
let data2 = s.load_toml_data("data2").expect("failed to load toml data");

从数据文件夹中加载一些 toml/json 数据。

s.generate_html("index", "json_version", &data1)
    .expect("failed to generate page with json data");
s.generate_html("index", "toml_version", &data2)
    .expect("failed to generate page with toml data");

生成 html 文件。

什么是新功能?

查看 CHANGELOG.md 文件!

那么接下来是什么?

  • slime 二进制模式(使用 slime 库而不写 rust 代码)
  • 改进 API
  • 改进错误消息(使用 failure crate)
  • 示例:如何使用 css 框架创建漂亮的网站
  • 添加测试
  • 编写教程
  • 将使用 slime 的项目链接添加到 README 文件
  • 添加更多示例
  • 改进安装脚本
  • 为 handlebars 添加自定义辅助函数

使用 Slime 的项目

二进制模式(未实现)

不写 rust 代码生成页面。

使用以下命令安装 slime

cargo install slime

使用以下命令初始化项目

cargo slime --init

将数据放在 data 文件夹中。将模板放在模板文件夹中。将一切推送到 github。设置 travis 并等待构建完成。您的网站将自动生成和部署!

依赖项

~8MB
~151K SLoC