jsrender和seajs半天学习收获
参考地址:http://josh-persistence.iteye.com/blog/1914697
我把他上面的几个例子,用一个例子写完,主要是特别懒,不想多建几个文件。前端的框架虽多,学习起来的难度也不大,只不过要懂具体怎么来的,还是有一定的差距。留作以后备用吧!
其中resource.explore.com是我自己在本地搭建的一个IIS资源网站。
html页面代码:
<html> <head> <title>学习sea01</title> <script type="text/javascript" src="http://resource.explore.com/jquery/jquery-1.7.1.min.js"></script> <script src="http://resource.explore.com/sea.js"></script> <script type="text/javascript"> seajs.config({ // 解析顶级域名 base:"http://resource.explore.com/", // 别名 alias: { "jsRender":"http://resource.explore.com/jquery.jsRender.min.js", "underscore":"http://resource.explore.com/underscore.js", "seastudy01":"http://resource.explore.com/seastudy/seastudy01.js" }, // 预加载 preload:["underscore","jsRender","seastudy01"], }); // 页面加载模块 seajs.use(["underscore","jsRender","seastudy01"]); </script> </head> <body> <p><em><h2>1: Output Tag {{:...}}</h2></em></p> <div id="result1"></div> <script id="result1Tmpl" type="text/x-jsrender"> <p>{{:name}}</p> </script> <div id="result2"></div> <script id="result2Tmpl" type="text/x-jsrender"> <b>{{:#index+1}}</b> {{:name}}:lives in <b>{{:address.city}}</b>.<br/> </script> <p><em><h2>2: Output Tag {{>...}}</h2></em></p> <script id="result3Tmpl" type="text/x-jsrender"> <p style="color:green;">包含html的,浏览器解析为对应的样式</p> {{:description}}<br/> <p style="color:green;">输出原始的字符串</p> {{>description}} </script> <div id="result3"></div> <p><em><h2>3. {{include tmpl=... /}} 标签用于组合模板(template composition) -----用于在一个模板中引入另一个模板,并用上下文的数据来渲染template。</h2></em></p> <script id="peopleTemplate" type="text/x-jsrender"> {{:name}} lives in {{include tmpl='#addressTemplate'/}}<br/> </script> <script id="addressTemplate" type="text/x-jsrender"> <b>{{>address.city}}</b> </script> <div id="peopleList"></div> <p><em><h2>4. {{for ...}}遍历数组和对象</h2></em></p> <script id="result4Template" type="text/x-jsrender"> <b>{{:title}}</b> <ul> {{for members}} <li>{{:name}} lives in </b>{{:address.city}}</b></li> {{/for}} </ul> </script> <div id="result4"></div> <p><em><h3>4.1 在{{for...}}与{{for...}}之间使用{{else...}}</h3></em></p> <script id="result5Template" type="text/x-jsrender"> <b>{{:title}}</b> {{for members}} <div>{{:name}}</div> {{else}} <div>No members</div> {{/for}} </script> <div id="result5"> </div> <p><em><h2>5 复杂一点的</h2></em></p> <script id="result6Template" type="text/x-jsrender"> <h4>{{:title}}</h4> {{if members && members.length}} <ul> {{for members}} <li>{{:name}}</li> {{/for}} </ul> {{else standby && standby.length}} Standby only: <ul> {{for standby}} <li>{{:name}}</li> {{/for}} </ul> {{else}} No Members! {{/if}} </script> <div id="result6"></div> </body> </html>
js代码如下:
define(function(){ var mainMoudle = { main:function() { mainMoudle.initEvent(); }, result1deal:function() { var data1 = { "name": "Josh", "address": { "city": "Shanghai" } } mainMoudle.renderHtml("result1Tmpl","result1",data1); }, result2deal:function() { var data2=[ { "name": "Josh", "address": { "city": "Shanghai" } }, { "name": "Wangsheng", "address": { "city": "BiJie" } } ]; mainMoudle.renderHtml("result1Tmpl","result1",data2); }, result3deal:function() { var data = { "description": "A <b>very nice</b> appartment" }; mainMoudle.renderHtml("result3Tmpl","result3",data); }, resultPeople:function() { var people = [ { "name": "Pete", "address": { "city": "Seattle" } }, { "name": "Heidi", "address": { "city": "Sidney" } } ]; mainMoudle.renderHtml("peopleTemplate","peopleList",people); }, result4deal:function() { var data = { "title": "The People:", "members": [ { "name": "JoshWang", "address": { "city": "ShangHai" } }, { "name": "WangSheng", "address": { "city": "GuiYang" } } ] }; mainMoudle.renderHtml("result4Template","result4",data); }, result5deal:function() { var data = { "title": "The A team", "members": [] }; mainMoudle.renderHtml("result5Template","result5",data); }, result6deal:function() { var data = [ { "title": "The A team", "members": [ { "name": "JoshWang" }, { "name": "Micheal Shi" } ], "standby": [ { "name": "Xavier" } ] }, { "title": "The B team", "members": [], "standby": [ { "name": "Dunk" }, { "name": "Adriana" } ] }, { "title": "The C team", "standby": [] } ]; mainMoudle.renderHtml("result6Template","result6",data); }, renderHtml:function(tempId, renderId, data) { var tempHtml = $('#'+tempId+'').render(data); $('#' + renderId + "").html(tempHtml); }, initEvent:function(){ mainMoudle.result1deal(); mainMoudle.result2deal(); mainMoudle.result3deal(); mainMoudle.resultPeople(); mainMoudle.result4deal(); mainMoudle.result5deal(); mainMoudle.result6deal(); } }; $(function () { mainMoudle.main(); }); });
结果如下:
作者:BestNow
出处:http://www.cnblogs.com/BestNow/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/BestNow/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?