在Ajax横道的今天,我们在页面交互上有了更高的要求,动态生成HTML毫无疑问是其中的一种。动态生成HTML的方式多种多样,其核心不外乎在前段(JS)或者后端(C#/PHP…)将数据组装成我们想要的模版,最终通过一定的方法输出给用户(innerHTML、documentWrite等方式)。
缺点 1)拼接字符串的过程容易出错,常常忘了'/”>等匹配的符号。
2)修改前台模版的同时容易遗忘同步更改动态生成的模版。
3)拼接字符串不直观和美观,不利于查找错误,例如:数据中如果存在HTML内容,会导致种种麻烦。
4)不能满足较高的业务逻辑需求,处理判断较为麻烦,例如:当A情况生成X模版,B情况生成Y模版。
5)复用性低,较为相似的模版难以公用。
需求 1)简单,直观的模版
2)易于维护(方便查找错误,有代码着色等)
3)模版的可复用性
4)处理一定的逻辑判断
解决方案 基于以上的缺点,jQuery Tmpl这个插件能够很好的满足了我们的需求。使用这种新型的模版技术仅仅需要引入jQuery Tmpl这个插件而已。该插件十分小巧(5.97KB),对于性能的影响并不大。而且据闻这个插件是Microsoft开发的,对于ASP.NET MVC的友好度是大大的。 点击这里进去项目地址
通过图片我们能够很直观的看到Tmpl的工作原理,我们仅仅需要提供数据和模版。数据我们能够通过后台的Json方法直接传到前台,而模版则是接下来要讲的东西了。
1)模版代码写在哪里?
复制代码 代码如下:
<script type="text/x-jquery-tmpl" id="testTemplate">
/*模版代码*/
</script>
我们可以看到其实模版代码的容器就是我们的<script>标签,不过type类型是'text/x-jquery-tmpl'而不是我们平常用的'text/javascript'而已,type类型难记?没关系,在Visual Studio2012中已经有了这个类型的智能提示了(没有验证过2010)。
2)模版的语法
我把jQuery Tmpl的语法分为三大类:
1.显示类:
{{html }} / {{= }} / ${ },这三个标签都能够将数据输出到模版中,但是{{html}}不会对数据进行编码,用于输出数据中的HTML代码段的,而{{=}}和${}则会对数据进行编码,防止数据对于模版结构的破坏。
当我们把data里面的name的值换成一段HTML'<a href="http://www.google.com">点击有好玩的东西哟!</a>'就可以看到{{html }} / {{= }} / ${ }的区别了。
由此我们可以见得使用{{html}}来输出模版里面的内容是带有一定的风险的(XSS攻击),所以在非确定数据的安全性下最好还是使用${}来输出内容既简单又简洁。当然直接输出内容远远不能满足我们的要求,如果能够调用函数来处理一下输出结果就更棒啦!
2.条件判断及循环:
{{if}} / {{else}} / {{/if}} / {{each}} 请注意是没有for / while / switch的,相对于来说jQuery Tmpl只支持较为简单的逻辑判断,当然如果你感觉这些满足不了你的需求的话,可以自己写函数然后再调用。给一个简单的例子来说明一下:
在代码中我们可以注意到{{each}}是有两种写法的,如果不在each后面加(i, v)时在{{each}}代码块中使用$value特指当前项的值,而你需要项的序号则可以使用{{each(i, v) }}其中i代表当前项的次序、v代表当前项的值。如果你的条件判断比较复杂则可以使用函数来判断(完全和JS一样)
例如:效果是和上面的完全一样。
3.复用类
{{temp}} 当分支模版过长(写在一个模版中较为混乱)或者使用已经写好的通用模版,{{temp}}的作用就是调用指定ID模版来显示数据。
这个模版的最终效果和之前的完全一样,不过分别区分独立开来。提高了代码的可阅读性和复用性。在这里只是一次性调用其他模版,如果想循环调用呢?例如在例子当中输出兴趣爱好那样。让我们来看看代码应该如何写。
其中在eachTemplate模版中用$data来特指传进来的遍历项的值。怎么样感觉还是相当方便的吧^_^。
{{wrap}}使用于指定模版来包含当前模版,类似于指定母版页当前模版则属于子页面。
我们可以看出'wrapTemplate'的功效就是作为公共部分,在模版中用{{html $item.html}}来输出子页面的HTML内容。
其中$item.html还具备一定的筛选功能。
可以看到在这里只输出了第二个P。$item.html方法还有一个选项$item.html( filter, textOnly ),textOnly为bool值如果为true则只会输出元素的文字而忽略它原有的元素标签。
可以看到strong元素没有了加粗效果只有文字。
总结
其实在使用过程当中并不会经常运用到模版的一些高级功能,本文章也仅仅是介绍了一些关于jQuery Tmpl的基础性的东西。使用这个插件能够给我们带来的好处实在不少,之前我在动态输出HTML代码段的时候(在JS文件中拼接字符串)经常修改了前台页面而忘记修改JS中的拼接字符串,导致经常出些莫名其妙的错误,而且在多个分支判断下拼接字符串的劣处体现的更加明显,现在的话我会把Tmpl模版的代码就放在前台页面要生成代码的地方,这样就大大减少了错误的发生啦!
以上的内容并没有涉及到与ASP.NET的交互,以及更多的一些高级应用技巧,如果大家反映良好就会专门写一篇结合ASP.NET MVC的应用文章啦~^_^
相关推荐:
ChatGPTCanvex打不开?详细分析及解决方法助你顺利使用,ai2.5d网格线去除
AI代写文章:高效创作的新风尚
好用的AI写作软件免费推荐:创作新境界!
seo适合看什么书,自学seo书籍推荐 ,ai少女 刻晴
AI翻译工具的革命-ChatGPT等技术让语言互通无碍,淘宝ai写作检测准吗
《SEO教材:打造网站流量的核心利器,教你轻松SEO优化技巧》,咖啡网站建设总结文案
ChatGPT可以实现新闻报道的即时自动化生成,怎么更改ai2的图标
seo类文章是什么,seo技术文章 ,ai3.5-ai聊天
什么是seo模型,seo模块总结 ,ai技术授课
SEO大神如何在激烈的互联网竞争中脱颖而出?,网页设计和网站建设试题
为什么做抖音seo,为什么做抖音推广 ,描边ai虚线
亚马逊的seo是什么阿,亚马逊seo项目 ,中考用ai写作会判0分吗
优化综合:引领高效发展的智慧之道,电影营销的推广方式
ChapGPT免费爬墙,轻松访问全球互联网资源!,蜜桃ai插画
SEO快速优化技术:助力网站流量暴增,轻松登顶搜索引擎,铜陵ai全网通推广软件
优化平台:让数字化转型更简单、更高效,莆田谷歌seo品牌排行
seo要学什么技术,seo要学什么技术好 ,ai.fale
如何下载免费AI软件,让你的工作和生活更智能
主流seo是什么,seo是什么推广网站 ,AI心理师
seo矩阵运营中心是什么,seo矩阵运营中心是什么意思啊 ,北京ai特效
二级泛站群,zblog二级泛站群 ,李宗盛ai
seo独立站是什么,独立站推广是什么 ,ai曲线笔刷扩展
seo软文有什么作用,seo文案是什么 ,斐乐Ai测评问题
ChatGPT破解版:让人工智能助力你的工作与生活,ai cos帽
怎么让AI写文章,轻松实现内容创作的智能化
ChatGPT的梯子:突破网络壁垒,畅享智能对话的全新体验,ai的音标1001ai的音标
AI智能工具的无限可能:未来已来,你准备好了吗?
怎么用AI润色文章,让你的文稿瞬间高大上
ChatGPT充值打不开?这几招教你轻松解决问题!,免费的ai写作绘图
GPT怎么收费?揭秘AI技术的定价与价值,ai报考高考
seo都有什么问题,seo都有什么问题和答案 ,ai凯旋公主下载
seo需要干什么,seo需要具备什么知识 ,ai梦境档案世岛大宅
从零到一:网站历史的演变与未来趋势,肇庆市国外网站建设平台
“标题制造机”:颠覆内容创作的秘密武器,助你轻松打造吸引力十足的标题,景区线上推广用哪些网站
ChatGPT崩溃!用户反馈网页端无法访问,修复急需,ai院子
SEO定价策略:如何根据企业需求定制最佳价格方案,教育培训抖音营销推广
SEO运营是什么职业,seo运营工程师招聘 ,把ai图层改横幅
AI网页版本:开启智能时代的新篇章,拼音标调ai
SEO舆情:如何通过有效的舆情管理提升企业品牌形象,seo推广外包提高收录
SEO非常:如何利用SEO提升网站排名与流量,助力品牌快速成长,绥化短视频营销推广
SEO优化的利器:提升网站排名的秘密武器,联想ai7g-3笔记本
【SEO优化全攻略】提升网站流量的终极秘籍,带你轻松玩转搜索引擎优化!,金融网站推广维护
ChatGPT的超链接点不开?解决方法一网打尽!,情感ai写作指令是什么
Bing搜索的注意事项-提高搜索效率与准确性,轻松获取所需信息,最近ai写作软件推荐
ChatGPT无法加载?检查您的网络设置并尝试重启,轻松解决常见问题!,ai招生广告设计
SEO优化需要给网站做哪些优化工作?,ai捕捉火苗
seo算是什么营销方式,seo是网络营销吗 ,ai318
ChatGPT国内版:为中国用户量身定制的智能助手,开启AI新纪元,ai文章赚钱
360关键:打造全方位安全保护,守护您的数字世界,ai乘bi
Chatttst:开启智能沟通新时代的无限可能,上海联通ai