7 个版本
0.2.0 | 2024 年 6 月 23 日 |
---|---|
0.1.2 | 2024 年 5 月 2 日 |
0.1.1 | 2024 年 4 月 17 日 |
0.0.3 | 2024 年 4 月 14 日 |
0.0.2 | 2023 年 8 月 26 日 |
632 在 Web 编程 中
67KB
1.5K SLoC
博客工具
blog-tools
是一组帮助在 Rust 中制作博客的工具。
要使其工作,您应该有一个文件夹,例如,blog
作为根目录。在此文件夹内,您必须有以下结构
- blog
- 2023
- 2023-01-01
- my_first_blog.json
- my_first_blog.md
- (其他文件夹)
- 2023-01-01
- 2023
即按年份组织,按日期(yyyy-mm-dd)组织,然后在 blog.md
和 blog.json
旁边。
JSON 必须符合以下模式
{
"title": String,
"date": ISO 8601 Date i.e. YYYY-MM-DD,
"desc": Optional<String>,
"slug": String,
"tags": [String],
"keywords": Optional<[String]>,
"canonical_link": Optional<String>,
"author_name": Optional<String>,
"author_webpage": Optional<String>,
"last_modified": Optional<Date>, (ISO 8601)
"priority": Optional<float>
}
Slugs
在 blog-tools
中,所有 slugs 都是 /{date}/{sub-slug}。
请确保 JSON 中的 "slug" 字段 仅 为最终的子 slugs
本包的组织方式
有三个模块值得关注
高
中
低
这些指的是这些系统在运行时预期的 RAM 使用量。请选择最适合您博客数量的样式。请注意,这个 crate 不旨在处理数百万的
高
使用最多的 RAM,通过在整个时间内将整个博客存储在内存中,这样做最好的方式是使用类似于懒静态的
lazy_static! {
pub static ref STATIC_BLOG_ENTRIES: HighBlog =
get_high_blog(PathBuf::from(BLOG_ROOT), None, None, URL, &SitemapOptions::default());
}
中
存储博客的大部分内容,但不是博客文章本身的渲染 HTML。这些将在请求时渲染
lazy_static! {
pub static ref STATIC_BLOG_ENTRIES: MediumBlog =
get_medium_blog(PathBuf::from(BLOG_ROOT), None, None, URL, &SitemapOptions::default());
}
let this_blog = match all_blogs.hash.get(&complete_slug) {
Some(x) => x,
None => return None,
};
context.insert(
"blog",
&this_blog
.render(PathBuf::from_str(BLOG_ROOT).unwrap())
.unwrap(),
);
最后,低
完全不存储任何内容,旨在在运行时获取一切。
let preview = preview_blogs(PathBuf::from_str(BLOG_ROOT).unwrap(), 2, None);
let tags = get_blog_tag_list(PathBuf::from_str(BLOG_ROOT).unwrap());
let blog_post = render_blog_post(PathBuf::from_str(BLOG_ROOT).unwrap(), date, slug, None).unwrap();
let sitemap = create_sitemap(BLOG_ROOT, URL, &SitemapOptions::default());
此方法可能会在运行时性能方面产生严重影响,但如果有必要将博客放入内存中,则可能有必要
示例
此 crate 包含三个示例 - 使用 rocket 和 tera 模板创建的相同博客网站 - 使用每个模块的一个。您可以通过以下方式运行它们
cargo run --example high
cargo run --example medium
cargo run --example low
然后您可以从 localhost:8080 查看它们
待办事项
- 更富有教育意义的错误信息和更好的错误处理
- 此 crate 非常需要更多的测试和反馈!
依赖关系
~3–12MB
~130K SLoC