Blogger高级编程(二)
2014-03-16T16:22:00+08:00
再见理想
上篇我们简单的介绍了blogger模板编程的基本流程,也书写了我们第一个hello world的例子,在这一篇的教程中我们会了解blogger模板系统的变量类型以及一些逻辑控制关键词。
变量类型
严谨的说,blogger的变量类型只有一种,即字符串,作为模板渲染语言,系统也只能渲染字符串。
blogger支持布尔值真假运算,使用==
或!=
来比较两个变量是否相等或不等,也支持+
作为连接运算符,但这只允许在渲染节点属性时使用,例如
<body expr:class='"loading" + data:blog.mobileClass'>
逻辑控制
分支语句
<b:if cond='data:foo'>
<b:else/>
</b:if>
其中else
语句并不是必须出现的,当你只考虑表达式为真的情况时你可以不写else
,至于分支的嵌套blogger只能进行简单的if---else
嵌套,没有else if
或者elif
这种高级标签,下面是一个嵌套条件判断的例子。
<b:if cond='data:tobeenter'>
first say hello
<b:else/>
first say good bye
<b:if cond='data:willback'>
ok, say see you soon
<b:else/>
ok,say i will miss you
<b:if/>
<b:if/>
在表达式中单个变量也能直接表示真假布尔值,空的变量(指值为空字符串,并不是指未定义的变量,如果使用未定义的变量,渲染系统是会报错的)为假,反之为真
循环语句
<b:loop values='data:foos' var='foo'>
<data:foo/>
<b:loop/>
你可以看到这其实就是个迭代器(iterator)标准用法,由于blogger严格的输入限制,你没办法自己去控制循环次数。
练习实例
下面的例子摘录自Smite Chow Template。
这个实例主要展示的是根据不同的页面类型渲染不同的title到html中。
<title> <b:if cond='data:blog.pageType == "index"'> <data:blog.pageTitle/> <b:else/> <b:if cond='data:blog.pageType == "item"'> <data:blog.pageName/> <b:else/> <b:if cond='data:blog.pageType != "archive"'> <data:blog.pageName/> <b:else/> <data:blog.pageTitle/> </b:if> </b:if> </b:if> </title>
这个实例主要展示的将文章的标签循环打印到页面中
<b:loop values='data:post.labels' var='label'> <a class='post_tag' expr:href='data:label.url'> <data:label.name/> </a> </b:loop>
这个例子展示了如何将blogger的数据渲染到html节点内容中也同时展示了使用
expr:
关键词渲染数据到节点属性中
总结
通过上面的练习,你可能会迫不及待的想将自己的文章通过循环语句渲染出来,不着急,和普通编程一样,我们需要提高代码的可重用性,类,函数这些概念在blogger中有没有呢?在这里我可以给出绝对的回答,有。当然这是下一讲的内容了,下一篇我们将介绍blogger系统中函数,类如何定义和使用。
标签:
Blogger