精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-09
最后修改:2010-12-14
引用 本来还想多说点什么的,觉得没必要了。 概念上的东西我不想过多争论,如果你认为"V"出现在JS中就不是MVC的话我也没什么好说的。 你认为你把模板代码写载外部HTML中你就能解决困扰你的问题你也可以放在外部。 下面回复中个人感觉最有价值的就是 司徒正美的 大家可以看看他的 我感觉很不错 (这个是下午刚做的,是第一版。主要是为了实现功能,细节没有考虑那么多,先发上来叫大家尝尝鲜,接着我会完善这个东西。) 越来越多的项目中大量JS循环拼接HTML字符串。我看这样的代码很头疼,样式出错不容易调试。所以,我本着对公司对项目负责的态度写下了这个小工具。 先看看怎么使用 Foreach.dataSource = [{ a: { aa: "aa1", bb: "a.bb1" }, b: 'b1' }, { a: { aa: "aa1", bb: "a.bb1" }, b: 'b1' }, { a: { aa: "aa1", bb: "a.bb1" }, b: 'b1' }, { a: { aa: "aa1", bb: "a.bb1" }, b: 'b1' }, { a: { aa: "aa2", bb: "a.bb2" }, b: 'b2'} ]; //给定数据源 Foreach.exp = "<div > <#exp:if(index == 0)$>hi<#exp(a.aa)$> <#exp:endif $><#exp:if(a.aa == 'aa1')$>我是aa1 <#exp:endif $><input type='button' value='<#exp(b)$>' /></div>"; //定义需要绑定数据的HTML模板 document.write(Foreach.result()); //得到数据结果 //OUTPUT: hiaa1 按钮 我是aa1 按钮 我是aa1 按钮 我是aa1 按钮 我是aa1 按钮 目前实现的功能和介绍: 1.<#exp(a.aa)$> 基本的数据绑定 2.<#exp:if(index == 0)$> <#exp:endif $> IF语句判断 可以支持对象中的属性和index, index当前行号从0开始 3.<input type='button' value='<#exp(b)$>' />支持HTML混编 4.很抱歉的是 现在暂时不支持在<#exp(index)$>使用index以及对index的相关数学运算 5.还有一个做值转化的功能 是一个为我们项目定做的功能暂时不向大家公开 6.源码会在附件中发布 您有权在任何情况下使用以及修改源代码但是请署名作者 谢谢! 引用 问:支持else标签吗? 答:我本人意见不准备支持 觉得IF就够了 问:支持if标签嵌套吗? 答:目前这个版本不支持,我会在以后的版本中发布可以嵌套的功能 问:性能如何? 答:写这个工具的目的是为了提高开发效率,把视图从JS程序中剥离出去,性能的问题本人测了下在可以接受的范围 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-12-13
这应该算是js模板引擎吧
跟mvc没啥关系 |
|
返回顶楼 | |
发表时间:2010-12-13
js模板啊 我一直在用jTemplates 确实解决了js html 混编的问题
顶楼主 |
|
返回顶楼 | |
发表时间:2010-12-13
Ext中也有模板引擎……
|
|
返回顶楼 | |
发表时间:2010-12-14
javascript模板,我也做了一套
http://www.cnblogs.com/rubylouvre/archive/2010/10/05/1841933.html |
|
返回顶楼 | |
发表时间:2010-12-14
最后修改:2010-12-14
无语 这也算MVC,你还不如看看我的模版 http://vb2005xu.iteye.com/blog/373332
1. <?xml version="1.0" encoding="UTF-8"?> 2. <data> 3. <widget id='QUI.Widget.Alert'> 4. <![CDATA[ 5. <table cellspacing="0" cellpadding="0" width="286" height="88" border="0"> 6. <tr> 7. <td height="47" align="center" valign="middle">@{string}</td> 8. </tr> 9. <tr> 10. <td height="47" align="center" valign="middle"> 11. <div style="width: 50px; height: 22px;"></div> 12. </td> 13. </tr> 14. </table> 15. ]]> 16. </widget> 17. 18. </data> <?xml version="1.0" encoding="UTF-8"?> <data> <widget id='QUI.Widget.Alert'> <![CDATA[ <table cellspacing="0" cellpadding="0" width="286" height="88" border="0"> <tr> <td height="47" align="center" valign="middle">@{string}</td> </tr> <tr> <td height="47" align="center" valign="middle"> <div style="width: 50px; height: 22px;"></div> </td> </tr> </table> ]]> </widget> </data> qui/Widget/Template.xml 文件 # /** # * 定义对话框对象 # */ # $qui.Class('QUI.Widget.Dialog'); # var tpla = $qui.tpl.get('QUI.Widget.Alert'); # tpla.assign('string','小妖'); # $qui.alert(tpla.display()); ![]() |
|
返回顶楼 | |
发表时间:2010-12-14
vb2005xu 写道 无语 这也算MVC,你还不如看看我的模版 http://vb2005xu.iteye.com/blog/373332
1. <?xml version="1.0" encoding="UTF-8"?> 2. <data> 3. <widget id='QUI.Widget.Alert'> 4. <![CDATA[ 5. <table cellspacing="0" cellpadding="0" width="286" height="88" border="0"> 6. <tr> 7. <td height="47" align="center" valign="middle">@{string}</td> 8. </tr> 9. <tr> 10. <td height="47" align="center" valign="middle"> 11. <div style="width: 50px; height: 22px;"></div> 12. </td> 13. </tr> 14. </table> 15. ]]> 16. </widget> 17. 18. </data> <?xml version="1.0" encoding="UTF-8"?> <data> <widget id='QUI.Widget.Alert'> <![CDATA[ <table cellspacing="0" cellpadding="0" width="286" height="88" border="0"> <tr> <td height="47" align="center" valign="middle">@{string}</td> </tr> <tr> <td height="47" align="center" valign="middle"> <div style="width: 50px; height: 22px;"></div> </td> </tr> </table> ]]> </widget> </data> qui/Widget/Template.xml 文件 # /** # * 定义对话框对象 # */ # $qui.Class('QUI.Widget.Dialog'); # var tpla = $qui.tpl.get('QUI.Widget.Alert'); # tpla.assign('string','小妖'); # $qui.alert(tpla.display()); ![]() 你的东西我大致看了 不错, 但是你也不用靠打击别人来证明自己能力? 你需要么? 然后我来提点意见? 1.你的这个模板 需要AJAX发一遍请求 ,性能上来讲我绝对不用。 2.你这个模板仅仅就是一个XML+replace.没别的什么。没有实现逻辑判断/循环?我没看出来有这方面的实现。 3.另外个人感觉开发起来会很不爽,需要多开发一个XML。 4.本来还以为你是一个XML高手,结果发现您也是用JQUERY来解析XML的,不免有点失望,也就是说为了使用您的简单的功能我还有导入JQUERY,这一点我也不会用。 (谢绝人身攻击。回帖注意素质) |
|
返回顶楼 | |
发表时间:2010-12-14
js 模板
|
|
返回顶楼 | |
发表时间:2010-12-14
同学你这个标题玩大了。看看真正的Javascript MVC: http://javascriptmvc.com/
|
|
返回顶楼 | |
发表时间:2010-12-14
tonyruiyu 写道 vb2005xu 写道 无语 这也算MVC,你还不如看看我的模版 http://vb2005xu.iteye.com/blog/373332
1. <?xml version="1.0" encoding="UTF-8"?> 2. <data> 3. <widget id='QUI.Widget.Alert'> 4. <![CDATA[ 5. <table cellspacing="0" cellpadding="0" width="286" height="88" border="0"> 6. <tr> 7. <td height="47" align="center" valign="middle">@{string}</td> 8. </tr> 9. <tr> 10. <td height="47" align="center" valign="middle"> 11. <div style="width: 50px; height: 22px;"></div> 12. </td> 13. </tr> 14. </table> 15. ]]> 16. </widget> 17. 18. </data> <?xml version="1.0" encoding="UTF-8"?> <data> <widget id='QUI.Widget.Alert'> <![CDATA[ <table cellspacing="0" cellpadding="0" width="286" height="88" border="0"> <tr> <td height="47" align="center" valign="middle">@{string}</td> </tr> <tr> <td height="47" align="center" valign="middle"> <div style="width: 50px; height: 22px;"></div> </td> </tr> </table> ]]> </widget> </data> qui/Widget/Template.xml 文件 # /** # * 定义对话框对象 # */ # $qui.Class('QUI.Widget.Dialog'); # var tpla = $qui.tpl.get('QUI.Widget.Alert'); # tpla.assign('string','小妖'); # $qui.alert(tpla.display()); ![]() 你的东西我大致看了 不错, 但是你也不用靠打击别人来证明自己能力? 你需要么? 然后我来提点意见? 1.你的这个模板 需要AJAX发一遍请求 ,性能上来讲我绝对不用。 2.你这个模板仅仅就是一个XML+replace.没别的什么。没有实现逻辑判断/循环?我没看出来有这方面的实现。 3.另外个人感觉开发起来会很不爽,需要多开发一个XML。 4.本来还以为你是一个XML高手,结果发现您也是用JQUERY来解析XML的,不免有点失望,也就是说为了使用您的简单的功能我还有导入JQUERY,这一点我也不会用。 (谢绝人身攻击。回帖注意素质) lz我也是用ajax请求模板,但我只会请求一次,除非刷新了页面(即使刷新页面,模板没改动也是读取缓存)。我做的是内部系统,这点请求不算什么,而且觉得这样好维护。但我的模板是html的,我觉得没必要用xml,因为做html模板最好的方式就是用html本身做。lz你把模板写在字符串里(当然可能实际做的时候不这样),还是不好维护,还是等于js html混编,不如写在html文件中。 |
|
返回顶楼 | |