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 在 模板引擎
15KB
233 行
Slime
基于 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 的项目
- https://github.com/jaroslaw-weber/cbt-diary
- https://github.com/jaroslaw-weber/jaroslaw-weber.github
- https://github.com/fishlang/fishlang
二进制模式(未实现)
不写 rust 代码生成页面。
使用以下命令安装 slime
cargo install slime
使用以下命令初始化项目
cargo slime --init
将数据放在 data 文件夹中。将模板放在模板文件夹中。将一切推送到 github。设置 travis 并等待构建完成。您的网站将自动生成和部署!
依赖项
~8MB
~151K SLoC