Clearsilver应用文档
来源:互联网 发布:js 隐藏控件读值 编辑:程序博客网 时间:2024/05/01 10:23
Clearsilver应用文档
(2011-11-17 12:15:33)it
分类:WEB技术clearsilver的中文文档几本上没有,所以按官网的英文版翻译了一个。本人能力有限,如有错误,不吝赐教。原文地址:http://www.clearsilver.net/docs/
就clearsilver应用而言,最主要的就是数据保存与模板设计部分,只要将这两部分的语法了解了,就可以方便地使用clearsilver了,而对于c部分来说,其实只是将这两部分融合下,几本上是固定不动的。下面分两部分来介绍,数据保存格式,模板设计语法。
数据保存格式
对于clearsilver来说,数据一般都保存在一个*.hdf的文件里。HDF意为分层的数据文件。它支持两种不同的语法来表示不同的层次,而且这两种方法可以混合起来使用。
第一种是用点号来表示。
例如:
第二种是用{}来表示层次结构。
例如:
我们可以用这两种方式来任意地表示需要的数据结构。同时我们也可以向后不断地扩展,如果层次出现重复的变量,会同平时常见的情况一样,后一次赋值会将前一次替换。
例如:我们可以在上个page后面再加上
Page{
这样的话最终
因为clearsilver提供了对hdf文件的读写接口,所以它是支持动态配置的,但是hdf最好还是用来保存为模板文件提供的静态数据。
对于hdf还提供了两个非常重要的语法
1、
例如:Page.Name : Page.Menu.0.Name
这就意味着将Page.Menu.0.Name的值赋给Page.Name,所以Page.Menu.0.Name必须提前定义。
2、
例如:Page.Name <<EOM
模板语法
对于clearsilver模板文件,一般会被创建为*.cst或者是*.cs,里面内嵌着clearsilver模板命令。模板文件定义了hdf文件中的数据的表现形式。内嵌的模板命令格式如下:
<?cs 具体的clearsilver 命令?>
例如:<?cs var:Page.Name?>
模板命令被分为四类(16个):
1、
2、
3、
4、
对于判断类,迭代类,宏定义类在使用时同html中的表单使用一样,同时需要有一个开始符和结束符。
例如<?cs if … ?>
另外clearsilver也支持注释,注释的格式为 <?cs # …..?>
下面我们按照模板命令的类别来逐个介绍模板命令。
1、
var:这个是简单的变量替换,例如数据文件中定义了Page.Name =hello,则在模板文件中<?csvar:Page.Name?>代表的就是值hello
evar:它和var很类似,但是它的数据获得是在clearsilver的数据加载解析进来的时候,所以即使模板中有命令改变了变量的值,也不会影响到evar输出的值。
lvar:它和evar很类似,但是它的赋值时间是在模板渲染的时候,而不是解析的时候。所以在渲染的时候可能会出现语法错误。
name:获 得所给的数据最低层次的名称。例如:<?csname:Page.Namex?>所得到的结果就是最你层次的Namex。在进行迭代类及宏定义类命令中会经常使用该函数获得别名变量的真实名字。同时也有一个函数实现name相同的功能,<?cs var:name(Page.Namex)?>和<?cs name:Page.Namex?>是一样的结果。
include:它可以将其他的模板文件包含进来同时解析该文件,被包含的变量可以是一个字符串,也可以是一个变量。例如<?csinclude:”header.cs” ?>
linclude:它和include类似,但是在渲染模板时加载和解析
set:设置变量,一般是只有在需要的时候才用set命令,因为一般的hdf文件中的数据会是一个静态数据。
2、
if/elif/else这个和其他程序的语法类似。例子如下:
<?cs if:a?>
<?cs elif ?>
<?cs else ?>
<?cs /if ?>
alt:它其实是if varelse的缩写。相当于对后面的值为false时运行。例如:
3、
each:each将遍历所有的子节点,例如:有这样一个数据集
}
如果对Page进行each操作将遍历Page.Access,Page.Content和Page.Menu。如果对Page.Menu进行each操作将遍历Page.Menu.0,Page.Menu.1,Page.Menu.2和Page.Menu.3。如下是操作实例:
运行结果为:
with:with操作主要是将一个数组类的数据将它的某条记录用另一个变量名替换。例如:
loop:用来创建一数字循环。它的参数为开始数字,结束数字,步长。Clearsilver保证loop循环有终止条件。例如:
4、
def:定义宏
call:引用宏
例如:定义了如下宏
假设有数据:
Lang.Dates {
}
那么用call调用宏
最后的结果为Saturday,但是前面有很多空格,这是由于
<?cs def:map_val(val, map)?><?cs each:item = map
/def ?>
这样来书写模板就避免了前面的空格输出。
模板表达式
Clearsilver下一些常见的语法规则在任意的参数下都会用到。例如:
Page.Title
Clearsilver有四种不同的参数类型。
1、
2、
3、
4、
Clearsilver有四种不同的值类型:变量、字符串、数字、boolean型。数字的运算,对于数字型的字符串也成立,但是一个除为,即“+”,对于数字型字符串为字符串相连,对于数字为相加。
Clearsilver操作符(按照优先级从低到高)
操作符
说明
值类型
,
,操作
||
或
Boolean
&&
与
Boolean
==
相等
Boolean
!=
不等
Boolean
>
大于
Boolean
>=
大于等于
Boolean
<
小于
Boolean
<=
小于等于
Boolean
+
字符串相连/加
String/Numeric
-
减
Numeric
*
乘
Numeric
/
除
Numeric
%
取余
Numeric
+
正数
Numeric
-
负数
Numeric
#
强制数字化
Numeric
$
强制变量
Variable
!
非
Boolean
?
Boolean
.
子变量名
Variable
[]
扩展变量名,类.
Variable
()
函数调用
函数表达式
Clearsilver提供了一些函数。所有的函数返回都是一个字符串或数字。函数可以在表达式的任何变量可以使用的位置使用。
函数名
参数
说明
subcount(var)
HDF变量
返回变量子节点个数
name(local)
局部变量
返回HDF变量名称,相当于name:local
First(local)
局部变量
如果local是loop或each中的第一个则返回true
last(local)
局部变量
如果local是loop或each中的最后一个则返回true
Abs(expr)
数学表达式
绝对值
Max(expr1,expr2)
数学表达式
返回较大的值
Min(expr1,expr2)
数学表达式
返回较小的值
string.slice(expr, start, end)
String,num,num
截取字符串的一部分
string.find(string, substr)
String
如果找到了返回出现位置,否则-1
string.length(expr)
String表达式
String表达式长度
_(expr)
String表达式
只有当支持gettext时使用
ClearsilverAPI允许用户自己添加字符串操作函数。这些函数只有一个字符串参数,返回结果也只有一个字符串。Clearsilver CGIKit为clearsilver提供了好些Web过滤器函数。这些函数可以通过cgi_register_strfuncs()添加到C
- Clearsilver应用文档
- Clearsilver应用文档
- clearsilver
- clearsilver-C-API文档(HDF部分)
- clearsilver 使用
- ClearSilver模板编程总结
- ClearSilver模板编程:
- ClearSilver模板编程
- 解决clearsilver 渲染cs_render慢
- Android 2.2: Could not load 'clearsilver-jni'
- Linux上ClearSilver的使用入门
- Apusic应用服务器文档
- Tomcat应用文档
- ZenCart应用参考文档
- 小米应用开发者文档
- Iscroll应用文档
- 小米应用开发者文档
- Rabbitmq应用文档
- libgdx获取demo以及源码(demo比较重要)
- 11g 新特性
- node.js 获取http url路径中的各个参数
- Objective-C 和 Core Foundation 对象相互转换的内存管理总结
- 函数式编程扫盲篇
- Clearsilver应用文档
- tar解压到指定目录
- 一体机上web程序的touchmove和mousemove事件无法触发问题
- ORA-01017/ORA-02063DbLink建立错误问题分析及解决
- clearsilver-C-API文档(HDF部分)
- random
- Red Hat Package Manager(RPM的介绍和应用)
- [Android]为Spinner填充数据后设置默认值的问题
- oracle 11g的audit导致system表空间快速增长的问题