当前位置: 首页 > 文档资料 > zDoc 使用文档 >

zDoc 的渲染

优质
小牛编辑
131浏览
2023-12-01

一个 zDoc 文档集合可以被输出成为任何介质

渲染整个文档集合

在 zDoc 的观点里,一次仅仅渲染一个文档是不够的。通常你会写很多文档,
然后放到一个文件夹下面,我们在 pages.html 里声明了一个 zDoc工作目录的约定。
你解析出来这个目录的结构大约参见如下的对象结构

public class ZDocHome {

    protected ZDir src;
    protected ZCache<ZDocHtmlCacheItem> libs;
    protected ZCache<ZDocHtmlCacheItem> tmpl;
    protected List<ZDir> rss;
    protected Context vars;
    protected List<ZDocRule> rules;
    protected ZDocIndex index;
    ...

你的渲染将面对整个 ZDocHome

渲染时变量

大小写敏感

Name说明

doc.content文档被渲染过后的内容
doc.key文档
doc.author文档作者
doc.title文档标题
doc.tags文档的标签(列表)
doc.lm文档最后修改日期(Date 对象)
doc.rpath文档相对根的路径,比如 "post/2013/abc.zdoc"
doc.bpath文档回溯到根的路径, 顶层为 "",比如 "../"
doc.xxx这个 xxx 来自根节点的 attrs

zDoc 模板语言

当开始渲染一个文档的时候,你可以在文档以及文档的任何地方使用变量,变量有如下类型:

Type说明

VAL普通值
OBJ对象
LIST一组值的列表
MAP一个名值对,值可以是这四种类型

变量的使用与逻辑控制

你可以在你的模板的任何地方这些变量,使用的方法如下:

VAL:普通值

... xxx {{page.next.title}} xxx ...

循环

{{@each: page.links as link}}
    <a>{{link}}</a>
{{/each}}

条件判断

{{@if: page.links}}
    // 可以嵌套其他语句
{{/if}}

暂时不支持 if-else if-else 或者 switch-case 之类的分支判断。

函数

声明函数可以用作递归,以便输出树形数据结构

{{@func: show_node : i, node}}
    <li> 
        <b>{{i}}</b> - {{node.text}}
        {{@if: node.children}}
            {{@each: node.children as child}}
                {{call: show_node : child.num, child}}
            {{/each}}
        {{/if}}
    </li>
{{/func}}