1、什么是jsrender

一个JavaScript库,允许您定义一次样板结构并重复使用它来动态生成HTML。JsRender为HTML5开发带来了一个新的模板库,它具有无代码标记语法和高性能,不依赖于jQuery,也不依赖于文档对象模型(DOM),支持创建自定义函数并使用纯粹的基于字符串的渲染。

更详细的学习资料可参考专栏:https://msdn.microsoft.com/en-au/magazine/hh882454.aspx

官网地址:http://www.jsviews.com/#home

2、基本语法

  • 原始赋值: {{:属性名}},显示原始数据
  • 转码赋值: {{>属性名}},显示HTML编码后的数据,让数据原样输出
  • 控制语句可嵌套使用:
    • 判断: {{if 表达式}} … {{else}} … {{/if}}
    • 循环: {{for 数组}} … {{/for}}
  • 其它进阶
    • 模板嵌套,使用:{{for tmpl="#另一个模板" /}}
    • 转换器 $.views.converters()定义,使用:{{func:属性名}}
    • 帮助方法 $.views.helpers()定义,使用:{{if ~func(arg1, arg2, ...)}}
    • 自定义标签 $.views.tags()    

2.1 基本变量标签 {{:属性名}}

基本变量需要使用冒号 ":" 作为标识,一般是简单对象的某个属性。比如传入一个简单对象data,先看官网的说明(谷歌翻译后的中文说明)

示例:


//在html页面中添加模板
<script type="text/x-jsrender" id="table"><table><tr> <td>Name: {{:user_name}}</td> <td>Age: {{:user_id}}</td></tr> </table>
</script> <script>
//逻辑
$(function() {
//传入一个简单对象 var data = { 'user_name': 'henry', 'user_id': 30 },
//获取模板 var tmpl = $.templates("#table"); // Get compiled template
//模板与数据结合       var html = tmpl.render(eval(data)); // Render template using
});
</script> <script src="${base}/statics/js/operation_v1.1/lib/jsrender.min.js"></script>

         

 2.2 基本变量标签 {{>属性名}}

{{:}} 和 {{>}}(或{{html:}})两者都可以输出内容,不过后者是经过html编码的。  

  2.3 逻辑判断和循环。

<1>  if-else

  语法:{{if condition}} ... {else condition} ... {{else}}... {{/if}}

示例:

<td>
{{if result== "true"}}<a><span >right</span></a>
{{else}}<a><span >wrong</span></a>
{{/if}}
</td>{{if status == 1}}<td>启用</td>
{{else}}<td>禁用</td>
{{/if}}

如果判断条件简单,可直接用三元运算,这样更简洁高效

<td><a><span >result== "true"?right:wrong</span></a>
</td>{{:index_status == 1?"启用":"禁用"}}

注: {{if result }} 该判断条件在 result不存在、result等于NULL或空字符串时 不成立。

    <2> for

 语法: {{for}} ... {{/for}}

   示例:

<script type="text/tmp" id="tmp5">{{for}}<li>id:{{:ID}} name:{{:Name}}</li>{{/for}}
</script>
var arr = [{ ID: 1, Name: "tom" },{ ID: 2, Name: "jack" },{ ID: 3, Name: "lucy"}
];
var html = $("#tmp5").render(arr);
$("#list").html(html);

<3> 嵌套for

  语法:{{for}}...{{for 当前上下文}} ... {{/for}} ... {{/for}}

  示例:

<script type="text/tmp" id="tmp7">
{{for}}<li>name:{{:name}}<ul>{{for hobbies}}<li>{{:#getIndex() + 1}}:{{:#data}}</li>{{/for}}</ul></li>
{{/for}}
</script>
arr = [
{ name: "tom", hobbies: ["篮球", "足球"] },
{ name: "jack", hobbies: ["篮球", "橄榄球"] },
{ name: "lucy", hobbies: ["游泳", "羽毛球"] }
];
var html = $("#tmp7").render(arr);
$("#list").html(html);

jsrender的基本使用相关推荐

  1. 有了jsRender,妈妈再也不用担心我用jq拼接DOM拼接的一团糟了、页面整齐了、其他伙伴读代码也不那么费劲了...

    写在前面 说来也很巧, 下午再做一个页面,再普通不过的分页列表,我还是像往常一样,基于MVC环境下,我正常用PagedList.MVC AJAX做无刷新分页,这时候问题就来了,列表数据中有个轮播图用到 ...

  2. JsRender (js模板引擎)

    最近学习了一下Jsrender模板渲染工具,非常不错,功能比较强大,官网说他是"简单直观 功能强大 可扩展的 快如闪电"确实如此.总结一下!! jsRender 三个最重要的概念: ...

  3. 一步步完成jsRender + Spring MVC + Nginx前后端分离示例

    2019独角兽企业重金招聘Python工程师标准>>> 本篇博文的目标是使用前端页面渲染插件jsRender做前后端分离,后端采用Spring MVC给出REST API,并结合Ng ...

  4. JsRender 前端渲染模板常用API学习

    JsRender 常用API 1. $.templates() $.templates()方法是用来注册或编译模板的,使用的情况有以下几种. 把html字符串编译编译成模板 获取使用script标签声 ...

  5. 用MVC做可拖拽的留言板,利用 Jquery模板 -- JsRender

    本文主要记录 JsRender模板 的使用 表结构 界面样式 让div可拖拽 数据绑定 使用模板 JsRender Controller代码 先看看效果图,演示地址:http://www.5imvc. ...

  6. MVVM js 库JsRender/JsViews和knockoutjs介绍

    MVVM概念 MVVM的解释有很多,抛开抽象的描叙我想最实用的一点是把UI和数据绑定,事件做成了一种静态契约,也就是模版,同时UI和数据可以独立动态变化.WPF,SL相对Winfrom和asp.net ...

  7. 下一代Jquery模板-----JsRender

    在ASP.NET MVC利用PagedList分页(二)PagedList+Ajax+JsRender中提到了JsRender.JsRedner和JsViews(JsViews是再JsRender基础 ...

  8. javascript模板库jsrender加载并缓存外部模板文件

    前一篇说了jsrender嵌套循环的使用,在SPA的应用中,广泛使用的一个点就是view模板,使用了SPA之后,每个业务页面不再是独立的html,仅仅是一个segment,所以通常这些segment会 ...

  9. Jsrender初体验

    支持一个活动,在以往项目基础上修修改改,通过这类小微项目快速熟悉开发.测试以及部署环境. 前端页面中看到了一段Js代码,从语法结构上看有点像模板引擎,最后确认是一个基于jquery的模板引擎-JsRe ...

  10. JsRender前端渲染模板-jquery方法失效

    在使用JsRender前端渲染模板的元素,在对这些元素进行jquery的方法,则无效. 场景: 使用jsrender 循环渲染一组数据到页面,然后对每组元素点击操作,无效果. 代码如下: <sc ...

最新文章

  1. javascript学习笔记2
  2. pip Python 包安装和管理工具
  3. Java线程--BlockingQueue使用
  4. MFC开发IM-第二十七篇、如何引入acl,解决Json解析问题
  5. 高通MSM8953 Android7.1蓝牙接电话流程(App到Adsp)(十六)
  6. 深度阅读----人工智能简史及其思维辩证
  7. java实现模拟时钟表盘
  8. 利普希茨连续(Lipschitz continuous)及其应用
  9. zabbix4.4 使用自动发现监测web网站健康状态(通过mysql表获取web地址)
  10. 2021年中国商品期货交易规模分析:交易量达71.71亿手,同比增长21.15%[图]
  11. 学python可以改善思维_基于培养思维能力的Python语言程序设计教学
  12. 根据身份证号或营业执照编号取省市区信息
  13. Arduino IDE 开发 ESP-01S/ESP-01物联网实战检测温度湿度上传MQTT服务器
  14. Altium Designer2018下载安装及基本使用
  15. python2打开文件_Python 基础 -2.2 文件操作
  16. 大学英语综合教程二 Unit 2 课文内容英译中 中英翻译
  17. Android RxJava操作符的学习---组合 / 合并操作符
  18. 我的世界1.19.2官方服务器开服教程(详细)
  19. 2022容器云运维开发面试准备
  20. 虎牙弹幕器(自动发弹幕,导入导出文件,检测是否发出,自动化工具加虎牙人气)(具有图形化界面)

热门文章

  1. 【Python】**kwargs
  2. javascript之url转义escape()、encodeURI()和decodeURI()
  3. 如何为geoserver发布的栅格文件渲染
  4. 【最新版】最火表情包小程序源码,壁纸头像表情包三合一,带流量主功能
  5. java怎么写文件?
  6. [译]PostgreSQL15改进了UNIQUE和NULL
  7. 紧抓“营改增”契机 国税总局携手锐捷网络打响税改“攻坚战”
  8. Node的cookie和session
  9. 联想小新i1000拆机图解_弃独显配锐炬集显 联想小新I1000时尚本评测
  10. 2022-2028年中国水产品加工行业市场运营格局及投资前景趋势报告