15 个版本 (1 个稳定版)
新 1.0.0 | 2024 年 8 月 23 日 |
---|---|
0.3.6 | 2024 年 8 月 2 日 |
0.3.5 | 2024 年 6 月 17 日 |
0.3.2 | 2024 年 5 月 29 日 |
0.2.6 | 2024 年 4 月 28 日 |
#59 in 模板引擎
每月 93 次下载
365KB
3K SLoC
Texted - 解放您的文本!
为什么我创建了一个博客系统而不是使用现有的博客平台呢?
- 我在一些其他平台上写作,例如 dev.to/thiagomg,但是如果它们丢失了我的数据或者关闭了平台,我不想失去我所写的。
- 我想学习 Rust,因此我创建了一个博客系统。
- 如果我能以这里的方式获取博客文章,并将它们添加到 github/gitlab 等,那么它们就会正常工作(给文件添加一个标题)
入门
安装
cargo install texted
启动一个新的博客
# Let's create a new directory for our new blog
mkdir ~/my-awesome-blog && cd ~/my-awesome-blog
# And now create the skeleton of a fully functional blog
texted-tool bootstrap --out-dir .
现在,让我们运行并测试它。
# Inside the same ~/my-awesome-blog directory, run
texted
然后在您的浏览器中打开 http://127.0.0.1:8001/
添加新文章
Texted 默认缓存所有 URL 和文章以获得最佳性能。请退出 texted 并再次运行,以在列表中查看新文章。如果您想禁用渲染缓存以在重新启动之前查看文章内容的变化,请在 texted.toml 配置文件中将 rendering_cache_enabled = false
修改为 false。
# Still inside the same ~/my-awesome-blog directory, run
pushd posts/
# This will create one directory such as 20240428_how_to_write_a_new_blog_post
# with a file index.md inside.
texted-tool post --title "How to write a new blog post" -o dir
# And let's run texted again
popd
texted
现在您在文章列表中有一个新的文章可用
从源码构建
如何构建?
cargo build --release
如何运行?
cargo run --bin texted
如何定制我的站点?
您可以使用 mustache 模板 创建您的 HTML 模板。示例显示所有支持的字段。
模板可以包含图片、css 和 js 等。那些支持文件应位于 public 目录中
在文件 texted.toml
中,您可以在键中配置位置
- template_dir
- public_dir
如何添加文章和页面?
文章位于配置键 posts_dir
指向的目录中,页面位于键 pages_dir
中。
页面和文章之间的唯一区别是
- 页面使用 page.tpl 模板渲染。文章使用 view.tpl 模板渲染
- 文章列表由列表API(
server-address/list
)提供,而页面则不在列表中
从现在起,所有关于文章目录结构的内容也适用于页面
添加文章有2种方式。在配置的posts目录内,您可以创建一个markdown文件或一个目录。
文件文章
假设您的服务器在本地的8080端口(127.0.0.1:8080)运行,且文章位于post目录下。
文件文章是纯文本文章(或没有本地图片的文章)。文件名将用作URL。例如:
文件 post/post_without_images.md
将通过以下URL访问:http://127.0.0.1:8080/view/post_without_images
目录文章
包含文件 index.md
(在文件 texted.toml
中可配置)的目录将被视为文章。例如:
目录 post/post_with_image
将通过以下URL访问:http://127.0.0.1:8080/view/post_with_image
文章结构
标题
每个文章或页面markdown文件都包含一个带有唯一标识、日期和作者的标题。接着是文章标题。HTML注释是可选的,但某些markdown编辑器如果没有HTML注释可能会损坏标题,因此我在示例中添加了它
<!--
[ID]: # (21c1e9ad-4ebb-4168-a543-fbf77cc35a85)
[DATE]: # (2024-02-12 22:54:00.000)
[AUTHOR]: # (thiago)
-->
# How does it work?
之后的都是文章的主体
更多
在文章列表中,展示的是文章主体的部分。为了确定何时停止,您需要添加<!-- more -->
标签。
请参见post_without_images.md
或post_with_image/index.md
以获取示例
提示
如果您运行texted-post二进制文件,它将为您创建一个带有标题和示例主体的文章框架。
依赖项
~28–41MB
~753K SLoC