4 个版本
0.1.0-alpha4 | 2023 年 1 月 1 日 |
---|---|
0.1.0-alpha3 | 2022 年 12 月 29 日 |
0.1.0-alpha2 | 2022 年 12 月 28 日 |
#342 in 模板引擎
23KB
402 行
TeensyCMS
一个非常小、非常简约的 CMS,允许管理员部署您的 Web 应用程序时添加自定义页面,并通过导航栏访问它们。
使用 TeensyCMS 的典型应用程序如下所示
- 检查其配置中的
pages_dir
变量 - 从文件系统中的该路径加载 TeensyCMS
- 让网站的模板使用来自 TeensyCMS 返回的值
- 挂载单个路由,如
/pages/{tail:.*}
,用于渲染 TeensyCMS 内容
就是这样。
此功能的典型用例是,如果您希望管理员能够提供他们自己的页面,这些页面可能包含或不包含
关于
页面联系方式
页面服务条款
页面行为准则
页面- 他们想要的任何其他内容,比如他们最喜欢的猫的列表
实现 TeensyCMS 的完整网站示例可以在 examples/
目录中找到,并使用 cargo run
运行,但为了参考,一个简单的应用程序可能看起来像这样
use teensy_cms::{TeensyCms, DefaultPage};
let my_config = MyConfig::from_env();
let cms = TeensyCms::<DefaultPage>::from_config_path(&my_config.pages_config_path).unwrap();
// finish initializing the web server
// imagine some fancy routing macro that wraps this
fn handle_page_request(req: Request) -> String {
// something like "contact" or "about"
let page = &req.path_args()["page"];
req.data::<TeensyCms<DefaultPage>>().unwrap()
.render(&format!("{page}.html")).unwrap()
}
模板是从加载配置的位置加载的。配置如下所示
---
pages:
- path: about.html
url: /about
- title: Submenu
pages:
- path: sub/page.html
url: sub/page
页面如下所示
---
title: My Page
cats: [Scruffles, Mx. Clawz]
---
<h1>{{ page.title }}</h1>
<ul>
{% for cat in page.cats %}
<li>{{ cat }}</li>
{% endfor %}
</ul>
反版权
知识产权不是真实的。没有许可证。如果您坚持要有一个,这是 Creative Commons Zero(公共领域)。
依赖关系
~9–18MB
~246K SLoC