- 浏览: 314190 次
- 性别:
- 来自: 河南郑州
文章分类
最新评论
-
sillydong:
https://github.com/sillydong/CZ ...
PHP 框架 Yaf 学习笔记----默认行为 -
achun:
jocce 写道var data1={};里面放的是json数 ...
jCT 嵌入模板简化方案 -
jocce:
var data1={};里面放的是json数据吗?为什么我用 ...
jCT 嵌入模板简化方案 -
achun:
randomnany 写道hi:你说的那个所谓的bug不是bu ...
PHP 框架 Yaf 学习笔记----默认行为 -
randomnany:
hi:你说的那个所谓的bug不是bug~yaf默认的就是读取 ...
PHP 框架 Yaf 学习笔记----默认行为
SVN已经更新.最新下载:jCT最新版本
更多信息请看我博客里的jCT专题 ,或者jCT开源主页示例 里面有最简单的例子,另外我更希望感兴趣的你能直接提出html代码和需求,我们讨论如何用jCT的方法写出.
========此版本已经废弃,新版文档======
jCT全称 :
javaScript Common Templates 就是 javaScript 共用模板
属于WEB开发模板技术 的一种.jCT用javaScript写成,通常工作于浏览器客户端.
基本功能 :
作为模板技术,完成后台数据 与htm模板(jCT模板) 的组装,得到最终表现 代码是jCT的基本功能.
设计理念 :
作为模板技术,jCT仅仅负责把模板javaScript对象 化.并提供数据组装文法.
从文法形式上看jCT的文法极其类似php,aps,jsp的文法,也就是嵌入html模板文法
这种文法,事实上是嵌入了javaScript脚本,采用完全与javaScript脚本一致 的语法来书写模板,达到了与javaScript完全兼容.
因此jCT本身的功能并不直接参与获取后台数据 .与如何实施表现. 这些功能可以通过书写模板的时候直接写入进去,反正都是javaScript脚本.或者采取其他的手段从外部控制.
由于在实际的应用中业务行为可能很复杂,jCT提供了子模板对象 的支持.从jCT对象的最终形式 javaScript 对象来说,这就形成了一棵对象树 ,而且这个对象树的组织完全是由模板代码决定.
调用 :
jCT本身没有规定必须如何调用jCT,对应用来说,jCT就是一个根据提供的文本模板来生成jCT实例对象的模板编译器
而这个可以组织数据得到表现代码的实例对象具体都做了哪些和应用有关的动作 ,完全有模板的内容决定.毕竟所有的执行代码都在模板里,都是使用者自己写 的.
var instance=new jCT(txt);//构建jCT对象,仅仅准备基础数据,txt就是模板字符串,不是指模板的url地址,是内容 instance.Build();//这才是真正的自构建
执行 :
构建完成了,如何执行呢?事实上根本就不存在执行这个说法,因为所谓的执行就是去运行txt模板源代码里定义的方法,由于代码是使用者自己写的,都定义了什么方法,书写者是知道的,比如说 模板源代码里定义了方法hello,要执行hello的话就
instance.hello();就行了。jCT是如何做到这样的,请继续看。
jCT是如何构建实例的 :
jCT这样做的原因是考虑到实例有可能重新构建 ,所以干脆把这个构建的任务交由实例对象自己完成.
jCT实例如何运行 :
- Fn 保留对象,供jCT实例内部使用,不能对Fn已有的属性修改.
- Build 保留方法,模板构建 方法.
- GetView 保留方法,获取装配数据后的表现代码.
-
GetViewContinue 保留方法, 用于递归的调用情况, 写入 输出 缓存,不输出
事实上GetView是先清空输出缓存,
然后调用GetViewContinue
最后输出缓存
- Extend 保留方法,以参数对象 扩展jCT 实例 和子jCT对象.
- ExtendTo 保留方法,扩展jCT实例到参数对象.
-
RunNow 特例方法 ,用户可以自实现这个方法,
此方法在Build,Extend, ExtendTo 中自动运行 - ExecChilds 保留方法,执行子jCT对象的某个方法,默认是Exec方法
-
Buildchilds 保留方法,执行 子 jCT对象的Build方法,默认所有的 子 jCT对象
GetView 方法内部的代码就是经过jCT编译转化过来的使用者自己写的模板代码。当你实作一个jCT实例并Build() 后,你可以通过GetView.toString(),查看jCT到底把模板编译成了什么,同时也就明白了jCT的原理,明白jCT的方法具有很高的效率.
-
嵌入 javasctipy代码的 jCT 模板 文件,通常就是html文件啦
依照jCT的文法形式书写嵌入式 javasctipt 代码,
这些代码经过jCT编译后会得到jCT实例对象
重要的是里面含有 RunNow的定义,RunNow里有
this.Extend(obj);
-
用来扩展jCT实例对象的javascript文件
因为jCT实例对象有自扩展 方法 Extend ,所以这种文件里面直接写下一个期望得到jCT实例对象就行了,这个对象就是上面 this.Extend(obj); 里的obj,例如:
var obj={ RunNow:function(){alert('hello jCT');}, Exec:function(D){document.body.innerHTML=this.GetView(D);} }
Tags:{//几种不同的模板定义风格 comment:{//注释标签风格 block:{begin:'<!---',end:'-->'},//语法块标记 exp:{begin:'+-',end:'-+'},//取值表达式 member:{begin:'/*+',end:'*/'},//定义成员语法标记 memberend:{begin:'/*-',end:'*/'},//定义成员结束语法标记 clean:{begin:'<!--clean',end:'/clean-->'}//清理标记 }, script:{//脚本标签风格 block:{begin:'<script type="text/jct">',end:'</script>'}, exp:{begin:'+-',end:'-+'}, member:{begin:'/*+',end:'*/'}, memberend:{begin:'/*-',end:'*/'}, clean:{begin:'<!--clean',end:'/clean-->'} }, code:{//code标签风格 block:{begin:'<code class="jct">',end:'</code>'}, exp:{begin:'+-',end:'-+'}, member:{begin:'/*+',end:'*/'}, memberend:{begin:'/*-',end:'*/'}, clean:{begin:'<!--clean',end:'/clean-->'} } }
- block : 语句块,用来书写javascript语句,或者标示一个成员的界限
-
member: 成员定义,用来定义子jCT模板源码段或定义成员函数或普通的成员对象
-
exp : 取值表达式,用来书写javascript值表达式
-
clear : 清理标记,用来完成一致性设计 ,
一致性设计指的是在模板没有被解析并执行前,仅仅在浏览器上打开模板源文件,就可以看到和解析并执行后一致的样式效果
由于成员函数和子jCT实例对象都是采用的同一个标记,为了区分他们的不同,简单的在实例名称的前面加一个符号@以示区分,下面是个成员函数定义 :
<!---/*+hello*/ alert('hello'); -->
<!---/*+$hello*/ ['hello'] -->
<!---/*+@hello*/--> <h1>hello</h1> <!---/*-@hello*/-->
jCT编译模板阶段会自动根据第一个出现的block去自动判断采用那个文法风格
如果你有自己的想法,那就自己定义 一个风格吧。
jCT API :
-
jCT 调用
格式: var jctInstance = new jCT(txt,path);
参数:
txt 可以为空 模板源代码,就是一个string,不是url地址 ,
path 可以为空 模板源代码文件所在路径,这个是个实用便捷的参数,在笔者的应用里他被子模板使用,在你的应用里用不到的话,就忽视他就行了
返回:jCT的实例,但是这个实例没有进行构建
注 :jCT并不负责获取模板的内容,获取后台数据,装配视图到DOMTree中.
根据应用和使用的其他框架,使用者自行 获取模板的内容,获取后台数据,并通过GetView获得视图,然后自己写代码把视图装配的 DOMTree. -
构建实例, 并执行 RunNow方法,如果有的话
格式: jctInstance. Build(txt,path);
参数:
txt 可以为空 模板源代码 ,就是一个string,不是url地址
path 可以为空 模板源代码文件所在路径,这个是个实用便捷的参数
可以看到上面这两个调用有相同的参数,当然根据情况给出一次就行了
除非要改变模板,也就是具有重构建的效果
返回:jCT实例自身 -
扩展 jCT实例 自身 , 并执行 RunNow方法,如果有的话
格式: jctInstance. Extend(object)
参数:
object 要扩展的来源对象
返回:jCT实例自身
-
扩展 附加到其他对象上, 并执行 RunNow方法,如果有的话
格式: jctInstance. ExtendTo(object)
参数:
object 要扩展的目标对象
返回:jCT实例自身 -
执行childs对象所列成员里的某个方法
格式: jctInstance. ExecChilds(childsObjOrmethodName,methodName)
参数:
childsObjOrmethodName
以{childName:argument}形式定义的
{子jCT实例名:传入调用方法的参数}的对象
如果是字符串的话,表示要执行的方法名
并执行所有子jCT实例的次方法
methodName
要调用的方法名,如果为空调用 方法名为Exec
返回:jCT实例自身
-
构建子jCT对象,并执行 子jCT对象的 RunNow方法,如果有的话
格式: jctInstance. BuildChilds(childs)
参数:
childs 要 构建 的子jCT对象,可以是数组或者以","分割的字符串
默认是所有的子jCT对象
返回:jCT实例自身
-
得到装配数据后的html视图代码
格式: jctInstance. GetView()或者jctInstance.GetViewContinue()
参数:
GetViewContinue 这个函数其实就是从使用者写的模板源代码里得到的,
GetViewContinue 和 GetView的区别见前面的文档
所以如果要传入参数的话, 模板源代码里可以通过类似这样定义
var varName=arguments[n];
来交换变量,通常传入的变量就是要带入的数据,当然也有其他方法来实现
返回: 装配数据后的html视图代码
发表评论
-
前台模板 Element 属性渲染的思考
2010-03-27 11:03 0jCT 一直是在前台解 ... -
jCT的纠结,前台模板下Grid基础版
2009-12-20 03:04 1865SVN已经更新.最新下载:jCT最新版本 ... -
jCT的纠结,前台模板下的设计模式VS组件,通用组件已gone
2009-12-19 14:55 1876一直以来都想用jCT写 ... -
jCT 3.9.12.10 放出,大改变,文档重新发布
2009-12-10 23:35 3302SVN已经更新.最新下载:jCT最新版本 ... -
基于jCT前台模板设计要点备注
2009-04-19 16:54 0第一个通讯是获得用户角色,获取用户是否登录及相关信息,因 ... -
jCT3改如何改进,边想边发
2009-03-26 11:28 1622ps:新版已经发布,请看 新版文档 ============ ... -
2008中国开源软件竞赛揭晓jCT榜上有名
2008-12-30 21:07 1635今天查收的邮件发现的,获得了优秀技术创新奖 的最后一名--- ... -
jCT 3更新--为发展调整代码结构
2008-12-04 15:01 1643SVN已经更新.最新下载:jCT最新版本 更多信息请看 ... -
jCT 嵌入模板简化方案
2008-11-13 09:38 2762本文代码在线演示 http://jsct.googlecod ... -
无独有偶,另一个采用原生js语法的js template工具EJS
2008-11-10 10:14 4662EJS开源主页: http://code.google.c ... -
jCT 使用教程之[UI组件]Tree
2008-10-29 15:42 1786SVN已经更新.最新下载: ... -
jCT 3正则版测试,正则就是慢
2008-09-10 00:19 1714我在jCT的说明中提到,jCT为了保障速度,没有用正则。今天我 ... -
jCT与AJAX七宗罪
2008-09-08 20:33 2621jCT的更多信息请看我博 ... -
jCT 在实战中洗礼,jCT要成为终极的javascript前台模板
2008-09-06 10:44 1609说在前面 : 由于目前正在用jCT的第三版实作项目,在项目中 ... -
jCT 使用教程之[嵌入模板]
2008-09-02 11:20 2498更多信息请看我博客里的jCT专题 ,或者jCT开源主页示例 ... -
js模板编译器jCT,推荐/问题贴
2008-08-27 09:58 1823jCT的更多信息请看我博客里的jCT专题 ,或者jCT开源主 ... -
javascript 模板编译器jCT----的梦想
2008-08-23 10:31 2601模板是什么 ? 模板是把数据和表现组装到一起的工具,是WEB开 ... -
jCT 第三版简要文档,此文档已经废弃,留作历史
2008-07-11 11:47 1388JavaScript Common Templates 第 ... -
都变了样!我这样用jCT模板.
2008-07-02 14:58 1662在写这篇文章的时候我相信很多朋友都不明白我在说什么,会奇怪我这 ... -
jCT 第三版预览,已废弃,留作历史
2008-06-26 17:31 1404重新进行了设计,抛弃了所有重新定义javascript固有语法 ...
相关推荐
JCT 2557-2020 规范
8. **文档和源代码**:压缩包中的`jct_doc.zip`可能是JCT工具包的API文档,对于理解和使用JCT非常有帮助。`jct_src.zip`则可能包含JCT的源代码,供开发者学习和自定义扩展。 9. **安全标准和协议**:JCT可能遵循了...
JCT 2558-2020 规范
标准 JCT174-2005无碱玻璃纤维带
JCT 2177-2021 硅藻泥装饰壁材
JCT 621-2021 硅酸盐建筑制品用生石灰
JCT 2041-2020 聚氨酯灌浆材料
JCT 1017-2020 建筑防水材料用聚合物乳液
JCT 618-2019化学解析方法
JCT 2560-2020 结构密封胶
JCT 60006-2020 瓷砖薄贴法施工技术规程
JCT 620-2021 石灰取样方法
JCT 为java开发者提供实用、方便、简洁的加密和解密相关的工具代码。1.0版提供Blowfish,SHA与MD5数字摘要,PBE基于口令的加密,RSA算法工具类,使这些算法更容易在编成中使用.文件包中含源码、文档、class包WDSsoft:...
JCT 2561-2020 金属复合板
Report of Subjective Test Results of Responses to the Joint Call for Proposals (CfP) on Video Coding Technology for High Efficiency Video Coding (HEVC)所应用的测试序列
标题中的“PDF文档-JCT682-1997水泥胶砂试体成型振实台.zip”指的是一份关于水泥胶砂试体成型振实台技术标准的压缩文件,其中包含了一份PDF文档,详细介绍了JCT682-1997年制定的相关规范。这份标准是中国建筑材料...
JCT 1057-2021 玻璃纤维增强水泥(GRC)外墙板
JCT 949-2021 混凝土制品用脱模剂
JCT 2604-2021 仿石型混凝土面板和面砖
JCT 60003-2019