ziimple / grypthon
Grypthon 是一个受 React 启发的模板引擎,它简化了 HTML 的部署,允许在服务器端采用更声明式的方法来处理网站。
此包尚未发布版本,可用的信息不多。
README
Grypthon 是一个轻量级的模板引擎,允许声明大部分数据以发布为 HTML,并发送到 HTTP 服务器进行通信。它与 Zimplify/Icing 项目配合使用。
以下是运行 Grypthon 页面所需的最低文件(我们的典型 Hello World 示例)
<?xml version="1.0" encoding="UTF-8"?>
<page id="demo">
<layout>
<control id="display" type="display.text">
<data>#Hello World!</data>
</control>
</layout>
<page>
想看到真实的效果,请查看我们的 Zimplify 解决方案网站。整个项目都是使用 Grypthon 构建的,除了 CSS 之外没有其他额外代码。
安装 Grypthon
Grypthon 可在 composer 中直接使用,因此只需执行以下操作
composer require ziimple/grypthon
如果您想要整个目录结构和所有其他工具,您还可以使用我们的另一个项目 Icing,它包括所有目录结构和基本的路由文件,可以更快地将您的网站上线。
关键细节
结构
为了简化使用 Grypthon 的设计,结构被划分为
A:控件 - 页面上可以看到的东西(输入框、文本、图像等)B:组合控件 - 当您将多个控件组织在一起时(如表单、部分等)C:页面 - 每个 HTML 文件的基本分组,您需要将其显示给用户。D:模板 - 这是网站的外观和感觉部分。E:主题 - 这是跨所有页面的外观和感觉的主控制。F:线框 - 这是一个 Grypthon 内部文件,我们使用它来确保您获得所有必要的 JS 和 CSS 文件以开始。
需要注意的是,Grypthon 支持级联模板,这意味着一个页面可以穿过多个模板,直到输出给用户。以下是它如何应用的逻辑趋势。
- 您为人们在一个调查中输入选择设计了一个表单(页面)
- 在此基础上,您将其嵌入到一个包含许多好东西的文档模板中,如文件上传、喜欢/分享按钮等(模板)
- 然后您应用您网站的外观和感觉(主题)
- Grypthon 将它们组合在一起并发送回(线框)
请注意,模板本身是可选的,您可以直接从页面跳到主题,这是完全可行的。
控件
控件是 Grypthon 的一个基本部分,为了加快您的开发速度,我们准备了一系列预构建的控件,这样您就不必担心不必要的代码。
但如果你想要进行一些魔法般的事情并创建自己的控件,只需确保将它们存储在 <你的站点根目录>/usr/snipplets
下,Grypthon 会通过该路径读取它们。请注意,我们使用 APCu 缓存大部分代码,所以每次你向站点添加新的控件时,它不会自动被缓存,除非你重新加载 web 服务器。
以下是一个控件片段的示例
<div {{=empty($id -ne nul, #id="{{$id}}, nil)}}>Hello World Control</div>
{{ }}
标签是 Grypthon 语法中的访问器,包括
#
用于发送任何未管理的数据(也可以是 HTML)@
用于控件属性,如 @id $
用于类属性 =
用于宏函数,例如 sum
、average
、now
、empty
。更多简单用法,请访问 Zen 查看其他可用功能。
除此之外,我们还有一些其他标签可供使用
input::
用于访问全局变量。默认情况下,Grypthon 使用 css
添加 CSS 数据到编译,使用 js
添加 JavaScript,使用 entry
当我们需要对控件进行克隆时。 parent::
用于访问页面/模板级别的变量,它在上一个级别。 ancestor::
用于访问页面级别的变量 image::
用于访问图像文件,这些文件可以是静态或动态调用的 nil
用于发送空值 syn::
用于访问你的语法库——当你进行多语言站点时,这是关键!! data::
用于访问数据集,如果你从某处抓取数据。
页面
要存储你的页面,确保将其存储在 <你的站点根目录>/usr/pages
下,完成后,当你通过浏览器输入 <你的域名>/page_name
时,页面应该可以访问。