-
Notifications
You must be signed in to change notification settings - Fork 2
简明手册
jCT 是 javaScript Common Templates 的缩写。是一种 javaScript 实现的模板引擎。可以工作于浏览器客户端或者 Node.js 环境。 作为模板引擎,jCT 主要负责把模板源文转换为 javaScript 对象,通过数据组装生成视图 View。 从文法形式上看 jCT 的文法极其类似 php,aps,jsp 的文法,也就是嵌入 html 模板文法。 这种文法,事实上是嵌入了 javaScript 脚本。jCT 采用与javaScript 完全一致的语法来书写模板,达到了与 javaScript 完全兼容。 jCT 本身的功能并不直接参与获取后台数据以及如何实施表现。 这些由应用考虑和实施。
- 模版一致性设计:通过良好的标记符号定义,模版源文件未经 jCT 解析就能表现出极其接近渲染后的效果
- 自定义模板标记符号
- 取值表达式:默认标记符号,开始
+-
,结束标记-+
- 代码块:默认标记符号,开始
<!---
,结束标记-->
- 子模版:开始
<!---///name arg1,arg2-->
,结束<!---///name-->
。事实上子模板的标记其实是位于 代码块标记 内的。arg1,arg2是参数定义的写法。 - 成员对象:
<!---//.objname {}-->
- 成员函数:
<!---//.funName function(){}-->
- View参数:
<!---// arg1,arg2-->
- BRun:在Build后自动执行,这其实是一个成员函数
<!---//.BRUN function(){}-->
- ERun:在Extend/ExtendTo后自动执行,这其实是一个成员函数
<!---//.ERUN function(){}-->
- 自动Build:GetView/GetViewContinue执行时,当执行时jCT发现并没有Build时,会自动执行Build过程
格式: var jctInstance = new jCT(txt,path); 参数: txt 可以为空 模板源代码,就是一个string,不是url地址 , path 可以为空 模板源代码文件所在路径,这个是个实用便捷的参数,在笔者的应用里他被子模板使用,在你的应用里用不到的话,就忽视他就行了 返回:jCT的实例,但是这个实例没有进行构建
//构建jCT对象,仅仅准备基础数据,txt就是模板字符串,不是指模板的url地址,是内容
var instance=new jCT(txt);
//手工代码进行构建,这才是真正的javacript对象构建过程,当然您也可以省略不写,因为
instance.Build();
//如果没有进行Build,这里内部会自动进行Build过程
var htmlsrc=instance.GetView();
Tip:因为jCT支持自定义标记,如果你要自定义标记的话,你可以先生成一个jCT实例,然后进行自定义标记,再绑定源模板字符串。增加 Build 后为这个功能提供了定义的时机。样例如下
var instance=new jCT();//构建 jCT 空对象
instance.Tags={....}; //定义标记,这里省略了具体操作
instance.Init(txt); //txt就是模板字符串
var htmlsrc=instance.GetView();
托管于 googlecode 时写的一些演示 http://jsct.googlecode.com/svn/trunk/jCT/example/index.html
事实上,jCT并不直接构建 出完整的jCT实例 ,jCT仅仅是生成 一个可以自构建的对象 .这个对象什么时候需要构建,什么时候需要执行(装配数据得到表现代码),由使用者的代码决定。 使用者写的模板源码最终会转换成为GetViewContinue方法的主体,GetView又调用了GetViewContinue.也就是说GetViewContinue的主体结构和模板是一致的。 在 GetViewContinue 的内部实现中,jCT采用了一个输出缓存区数组,把所有的输出数据push进去,最后再把数组值连接(join)成字符串输出,这样保持了较高的代码执行效率。
因实例是自构建的,在实现上要保留一些成员函数和成员对象来满足自构建的需求。保留成员有:
- Fn 保留对象,供jCT实例内部使用,不能对Fn已有的属性修改.
- Build 保留方法,模板构建 方法.
- GetView 保留方法,获取装配数据后的表现代码.
- GetViewContinue 保留方法, 用于递归的调用情况, 写入 输出 缓存,不输出 事实上GetView是先清空输出缓存, 然后调用GetViewContinue 最后输出缓存
- Extend 保留方法,以参数对象 扩展jCT 实例 和子jCT对象.
- ExtendTo 保留方法,扩展jCT实例到参数对象.
- BRun/ERun 特例方法 ,需要用户自己实现 方法分别在Build,Extend/ ExtendTo 中自动运行. 称做RunNow支持
- ExecChilds 保留方法,执行子jCT对象的某个方法,默认是Exec方法
- Buildchilds 保留方法,执行 子 jCT 对象的Build方法,默认所有 的 子jCT 对象