在写这篇文章的时候我相信很多朋友都不明白我在说什么,会奇怪我这样的思路,问题就在这里,我的这种思路很难被认同.但是这种思路开发起来真的很快.请耐心看完所有的文章.
jCT发展到目前的第三版.除了jCT本身的变化外.我在使用的时候整个设计思路也都改变了.
对于模板技术来说,绝大多数是平面化,顺序化.也就是说
1.模板的结构和页面表现的结构一致--------------------平面化
2.模板成为视图的时候数据的装配是顺序进行的--------顺序化
(这个说法看了我下面的实现就会明白)
下面是我准备重新写的nicEditor打包工具模板部分.(注意<!---xxx-->是jCT的模板语法,<!--xx-->是我写的注释)
<!--1:下面一段用来确定页面的布局-->
<div id="" class=""><center class="fsh2 cwhite">选择 NicEdit 模块</center></div>
<div id="" class="">
<span>合并GIF图标文件:</span>
<input type='text' name="iconsfile" value="nicEditIcons.gif"/>
</div>
<div id="navmenu" class="" />
<div id="nelist" class="">nE List</div>
<!--这里用jCT重构语法,确定了执行的过程-->
<!---
/*+Main*/
function(D){
...//这一句将被jCT生成的实例主体过程替换
$('#mainbody').html(this.CTV.join(""));//把结果也就是上面的布局写入到#mainbody Element
$('#mainbody .abc').abc();//这是我写的一个jQuery插件 Action By Class name,可以忽视它
this.navmenu('#navmenu');//调用导航菜单
this.nelist();//调用从服务器取得的nicEditor的模块列表
}
-->
<!--1:布局结束-->
<!--jCT的Run语法,Run里的代码只运行一次.这里的例子相当于动态的定义了一个函数-->
<!---/*+Run*/
$.extend(App,{
test:function(){
alert($('img').attr('value'));
return false;
}
});
-->
<!--2:导航菜单部分, abc abc.lavaLamp(...) 是jQuery插件 Action By Class name 的执行方法-->
<!---/*+Child navmenu*/-->
<ul class="lavaLampBottomStyle bgc4 cwhite fwbold fsh4 abc abc.lavaLamp({fx:'easeOutBack',speed:700})">
<li class="inline"><a onclick="return App.test();">测试</a></li>
<li class="inline"><a onclick="return App.test();">下载</a></li>
</ul>
<!--道理同前面的重构-->
<!---/*+Main*/
function(){
...
var el=arguments[0];
if (!el) return this.CTV.join("");
$(el).html(this.CTV.join("")).find('.abc').abc();
}
-->
<!---/*-Child navmenu*/-->
<!--2:导航菜单部分结束-->
<!--3:nicEditor的模块列表-->
<!---/*+Child nelist*/-->
<table class="dlTable" cellpadding="0" cellspacing="0">
<tbody>
<!---for(var I=0;I<nelist.length;I++){-->
<tr class="core">
<td>
<img style="width:30px;height:30px;" class="checkbox" src="+-App.pixelGif-+" name="plugins[]" value="+-nelist[I]-+" />
<input name="plugins[]" value="+-nelist[I]-+" type='checkbox' class="none" />
</td>
<td class="pluginName">+-nelist[I]-+</td>
</tr>
<!---}-->
</tbody>
</table>
<!--道理同前面的重构,不过里面用到了一个thisCallback,后面叙述-->
<!---/*+Main*/
function(D){
if(arguments.callee.caller!=thisCallback)
return jsonQueue({nelist:0},this);
with(D){...}
$('#nelist').html(this.CTV.join(""));
$('#nelist table img').each(function(){
$(this).click(function(){
var ck=!$(this).next('input').attr('checked');
if (ck){
$(this).next('input').attr('checked','checked');
$(this).addClass('checkboxon');
}else{
$(this).next('input').removeAttr('checked');
$(this).removeClass('checkboxon');
}
}).click();
});
}
-->
<!---/*-Child nelist*/-->
<!--3:nicEditor的模块列表结束-->
可以看到,传统的平面化
在我这个例子了已经不复存在了.jCT重构语法为自由布局提供了可能.
顺序化
被 thisCallback
(这个名词我还是不满意)彻底打破.
关于 thisCallback 到底是什么东西请看:
http://achun.iteye.com/blog/209575
http://achun.iteye.com/blog/210023
jsonQueue就是这种想法的一个实例:
//回调函数,保持原来的this指针
function thisCallback(func,thiss,args){
func.apply(thiss,args);
}
//jsonQuene合并细粒度队列回调
function jsonQueue(queue,thiss,ask){
if (ask){
var ask='确定执行这个操作么?'+(options.ask===true?'':options.ask);
if(false==confirm(ask)) return false;
}
var func=arguments.callee.caller;
var data=JSON.stringify(queue);
(function (func,data){
jQuery.ajax({
url: R('/'),
dataType:'json',
data:data,
type:'POST',
error:function(xml){
alert('Error : actionQuene');
},
success:function(a){
thisCallback(func,thiss,[a]);
}
});
})(func,data);
return false;
}
其他信息参见
当然我这种用法有些极端(不必要),但怎么说呢.对于这个例子完全可以把3部分写到一起.不过我喜欢的开发形式.jCT和thisCallback为这种提供了可能.
分享到:
相关推荐
这个名为"JCT"的工具包提供了丰富的功能,使得开发者在Java应用中集成加密和解密操作变得更加简单。下面我们将详细探讨Java加密的相关知识点以及可能在JCT中涉及的技术。 1. **对称加密**:这是最常见的加密方式,...
基于java的开发源码-加密解密工具集 JCT v1.0源码包.zip 基于java的开发源码-加密解密工具集 JCT v1.0源码包.zip 基于java的开发源码-加密解密工具集 JCT v1.0源码包.zip 基于java的开发源码-加密解密工具集 JCT v...
JCT 621-2021 硅酸盐建筑制品用生石灰
JCT 2557-2020 规范
"《环氧树脂地面涂层材料》JCT-1015-2006.doc" 《环氧树脂地面涂层材料》JCT-1015-2006.doc是关于环氧树脂地面涂层材料的国家标准,规定了环氧树脂地面涂层材料的术语和定义、分类与标记、要求、试验方法、检验规则...
JCT 1017-2020 建筑防水材料用聚合物乳液
JCT 2558-2020 规范
本标准规定了汽车后窗电热玻璃透射比,不透明率,耐清晰剂性,电极片焊接强度,电插片抗弯曲性,功率,除霜效率,超压性,热点温度,耐电热冲击性,耐盐雾性,电热线抗磨性,防潮湿性,耐久性,抗冲击性和碎片状态的...
JCT 949-2021 混凝土制品用脱模剂
JCT-VC HEVC source code(HM-10.0) Step 1: Download the source tree Get the latest version of HM. % svn co https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/HM-10.0 Step 2: Build it! ...
Java是一种广泛使用的编程语言,尤其在企业级应用和服务器端开发中占据主导地位。JCT(Java Cryptography Toolkit)是一个基于Java的加密解密工具集,它为开发者提供了丰富的加密和解密功能,以保障数据的安全性。在...
标准 JCT174-2005无碱玻璃纤维带
JCT 2177-2021 硅藻泥装饰壁材
Java加密解密工具集JCT...在实际项目中,通过JCT这样的工具集,开发者可以更便捷、安全地处理敏感信息,确保应用的数据安全。对于那些需要处理大量加密解密操作的项目来说,JCT v1.0源码包是一个非常有价值的资源。
JCT 60006-2020 瓷砖薄贴法施工技术规程
JCT 2560-2020 结构密封胶
JCT 872-2019 建筑装饰用微晶玻璃
JCT672-1997汽车后窗电热玻璃 本标准规定了汽车后窗电热玻璃的厚度,性能指标,试验方法,检验规则及标志,包装,运输,储存等要求。 适用于各类汽车后窗电热玻璃
Java Jct 加密解密工具包源码,WDSsoft免费源代码,java加密解密编程常用工具包 JCT 1.0,作者吴东升 常蕴秋,BlowfishTool.java封装同Blowfish对称加密算法有关的方法,包括了使用创建Blowfish密码,使用Blowfish加密...