精华帖 (0) :: 良好帖 (6) :: 新手帖 (7) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-08-28
忽然想起来,有个框架叫ext-core,为了用模板的话几十k就够了,不用引1M的东西,而且ext-core可以替代jquery
|
|
返回顶楼 | |
发表时间:2010-08-28
markone 写道 回复楼上的朋友
如果是使用别人的控件的话,可能自定义模板的意义不大了 如果是自己开发控件,那我建议采取这样的模式: 1、将控件的html样式写成模板 2、在控件的javascript类中,不要采取代码生成html的方式;将模板作为类属性,show出控件的时候,将控件所需的data apply到模板上即可,性能无需担心,很快的 3、之所以将模板作为类属性,是为了方便替换,如果想改变控件的外观,只需要重写模板就行,数据和控制代码不变 ps:正如楼上有位朋友所说,这是个很小的功能,关键在于灵活应用,呵呵,我在这种模式下工作了不少时间了,感觉效率提高了不止一个档次啊 楼主说的第二点,我不是很明白,你的意思我是这样的理解的: 首先我新添加一个 .js 文件,然后在这个 .js 文件中只做一件事:定义一个变量,变量的值是控件的 html 部分及样式;然后将这个js文件引到要应用模板的页面中;其次就要为这个模板准备一个 data ;最后用那个 .js文件中的变量实例化一个模板对象,并将准备好的 data apply到这个模板中。理解完毕 不知道我对楼主的理解是否正确!! 个人以为有点像自己写了一个插件,只是向楼主您说的效率被提高了一个档次!! |
|
返回顶楼 | |
发表时间:2010-08-28
shiren1118 写道 忽然想起来,有个框架叫ext-core,为了用模板的话几十k就够了,不用引1M的东西,而且ext-core可以替代jquery
发过来一个例子的源码和网址让我看看行吗? |
|
返回顶楼 | |
发表时间:2010-08-28
楼主,我还要请教你一个问题:
为什么您说在这种模式下工作效率会提高很多?? |
|
返回顶楼 | |
发表时间:2010-09-01
最后修改:2010-09-01
很好,最大的特点就是简单方便,随便一个人,引用一段脚本就可以做事了。
前端模板这个东西,如果纯js实现是有局限的: 1. 不能共享编译结果,每次都需要重新编译。 不是说,即时编译就一定有性能问题,但是如果考虑了太多的性能因素,模板语法就不能太强大,设计就不能太人性化。 2. 模板源码编码在js字面量中。 ide支持不太好,语法检查不方便。。。。。 所以如果要运用前端模板,我更看重借用后端的模板平台,让后端模板可以自动编译前端模板。像lite那样。 |
|
返回顶楼 | |
发表时间:2010-09-14
最后修改:2010-09-14
楼主的软件,正是我想用的
但我从google下载的代码 ,使用jquery 1.4.2时有个问题 会提示sweet未定义 http://code.google.com/p/sweet-template/issues/detail?id=1 我有个应用系统 是这样做的 前端使用json将数据传到后台,再以json形式返回执行结果 再用js将结果结合手写的一份界面的html代码。即复杂易错又很累人 目前的计划是界面模板使用xslt,数据使用xml,js使用jquery框架及jqueryxslt插件 页面的第一次生成可使用浏览器的xslt解析器完成 对ajax应用,可使用jqueryxslt来完成,相对就简单多了 但是xslt不是由浏览器原生的解析器来完成的,而是用js来模拟xslt的功能, 可能存在低效、xslt支持不完整的问题 于是想到是否有js的模板 终于找到一比较js模板的问题,也就找到这里了 麻烦楼主了。 发贴还要做题,很抓狂,很讨厌 |
|
返回顶楼 | |
发表时间:2010-09-14
我用这个论坛上下载到的例子运行,正常
现在遇到个问题 $("ul#list").template(tpl).applyData(data, { noIterate: true, rendering: function(context) { context.data.index = context.index; }, rendered: function(dom, context) { var idx = context.index + 1; dom.click(function(e) { alert("This is the No." + idx + " person."); }); } }); 我增加了一行“noIterate: true”让它不自动遍历数组,应该是这个意思吧 可还是把数组的所有数据全显示出来了 求解 |
|
返回顶楼 | |
发表时间:2010-09-14
楼上的朋友不好意思,好久不上论坛了,刚看到你的问题
第一个问题,google code 里sweet-jquery-plugin是将sweet template集成到jquery里使用的,sweet.js是不和任何框架集成的,你也很容易把这个小组件和任何框架集成使用 第二个问题,我文档里应该出了点问题,是notIterate不是noIterate。。。给你带来不便实在是不好意思 notIterate的意思是,当data为数组的时候,如果notIterate为false,则tpl里不需要使用for或者foreach遍历数组,组件会自动遍历数组并对数组的每一个item调用一次rendering和rendered函数,如果notIterate为true,则将一个数组data一次性apply而不遍历,整个data调用一次rendering和rendered函数,不知道我说清楚没有。 如果还有疑问,请加我msn: fucrosoft@hotmail.com或者gmail我 wanglingshu@gmail.com |
|
返回顶楼 | |
发表时间:2010-09-14
另外,我也同意xml数据是一个不太好的选择,因为毕竟需要解析,就算使用ie下的xmldom也未必有多高效。所以服务器端直接产生json数据是最好的选择。
ps: client对server post数据的时候,json和xml都不是好选择,应该组织一种服务器端能够快速解析的数据格式,可以参考一下dwr的做法,虽复杂但的确高效。纯技术探讨 ![]() |
|
返回顶楼 | |
发表时间:2010-09-15
谢谢
那个问题一会再去试试 讨论到post数据json也不是好选择,愿闻其详 以下是我写的json上传数据的方法,不知能否指点一二 JSON.stringify(d) 使用json的js库对数组进行编码 json_decode 使用json的php库对数组进行解码 js代码 d=new Object(); d.t='delete'; d.id=$(this).attr('id'); $.ajax({type:'post', url:"basedata.php", dataType:'json', data:{d:JSON.stringify(d)}, success:function(h){ if(h != null) { if(h.sqlerror){ sqlerror(h); return; } switch(h.php_status) { case 'ok': ...... break; case 'error': ...... break; } } }}); php代码 $d=json_decode(mb_ereg_replace('\\\\','',$_POST['d'])); switch($d->t) { case 'delete': $id=$d->id; if($id=='') { set_proc_debug('basedata_delete_check_id'); $result->php_status='error'; $result->code='strs.basedata.delete_id_null'; echo json_encode($result); exit; } set_sql_debug_start(0); $query="/* Gitem basedata.php 030 */ delete from detail_name where id='$id' "; $res=$mysqli->query($query); if($mysqli->errno==1451) { $result->php_status='error'; $result->code='strs.basedata.delete_1451'; echo json_encode($result); exit; } $result->php_status='ok'; echo json_encode($result); exit; break; } |
|
返回顶楼 | |