jsrender的基本使用

2023-11-13

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);

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jsrender的基本使用 的相关文章

随机推荐

  • PyQt4(简单界面)

    import sys from PyQt4 import QtCore QtGui app QtGui QApplication sys argv widget QtGui QWidget widget resize 600 400 wid
  • Django 项目 ModuleNotFoundError: No module named ‘mysqldb‘

    出现这种情况一般多为这两种原因导致 1 没安装相关包导致的 这种情况好解决 直接 pip3 install mysqldb 2 已安装相关包 仍然报错 这种情况大概率是因为包路径原因导致的 解决举例如下 from mysqldb impor
  • C++11中挂起线程

    C 11中用sleep untill 函数挂起线程 define CRT SECURE NO WARNINGS include
  • H5唤起关注公众号页面

    正好做一个抽奖活动 需要关注获取抽奖次数来抽奖 判断是否关注 1 登录微信公众平台 2 点击微信号头像右击查看源代码 3 找到源代码中以下代码 将uin base64这个参数值带入以下链接 https mp weixin qq com mp
  • 模拟电路设计(7)--- 增强型MOSFET

    这篇我们开始讲一讲MOSFET Metal Oxide Semiconductor Field Effect Transistor MOS FET从本质上来看和J FET一样也属于 多子 器件 但从控制机理上有所不同 增强型MOSFET器件
  • 18个堪称神器的命令行工具,高效运维必备

    上期入口 24个 CSS 高级技巧合集 本资源原链接地址 18个堪称神器的命令行工具 thefuck 命令行打错了以后 打一个fuck就会自动纠正 GitHub https github com nvbn thefuck ag 比 grep
  • 【计算机网络5】运输层#UDP协议

    一 运输层作用 运输层向其上层的应用层提供通信服务 当应用层的某个进程发送一个报文时 这个报文便会在应用层上被添加相应的控制信息 然后交付给其下层的运输层 运输层收到消息之后再添加控制信息 然后交付其下层 当网络边缘的两台计算机使用网络的核
  • Windows 下安装sql server 2016(附安装包资源)

    首先之前安装过sql server 但是只是在控制面板卸载的 请参考一下博文 完全卸载sql server windows 下如何完全卸载SQL server 这是我的安装包 需要的小伙伴可以自行取用 链接 https pan baidu
  • GPT专业应用:生成实习报告

    正文共 1070 字 阅读大约需要 4 分钟 大学生必备技巧 您将在4分钟后获得以下超能力 快速生成实习报告 Beezy评级 B级 经过简单的寻找 大部分人能立刻掌握 主要节省时间 推荐人 Kim 编辑者 Linda 图片由Lexica 生
  • c++第一次实现双向链表附迭代器

    双向链表 下一步就是类模板参数和迭代器实现一些简单算法 代码量等知识储备够了再优化 异常还理解不了 ifndef LIST H define LIST H include
  • 本周大新闻|Vision Pro头显重磅发布;苹果收购AR厂商Mira

    本周XR大新闻 上周Quest 3发布之后 本周苹果MR头显Vision Pro正式发布 也是本周AR VR新闻的重头戏 AR方面 苹果发布VST头显Vision Pro 虽然本质是台VR 但以AR场景为核心 以及visionOS visi
  • time time_t tm用法

    最近搞视频检索 涉及到很多时间的计算 顺便记录下一些基本用法 一 gmtime用法 include
  • Python 快乐数

    快乐数 也不多说它的定义了 直接说相关的概念吧 如下 所有不快乐数的数位平方和计算 最后都会进入 4 16 37 58 89 145 42 20 4 的循环中 已知规律 1 4 中只有 1 是快乐数 5 的数字要么回归到 1 要么回归到 4
  • 奇偶校验位

    在串行通信中 奇偶校验位通常是由UART这样的接口硬件生成 校验的 在接收方 通过接口硬件中的寄存器的状态位传给 CPU 以及操作系统 错误数据的恢复通常是通过重新发送数据 这个过程通常由如操作系统输入输出程序这样的软件处理的
  • (2)Gymnasium--CartPole的测试

    1 主要参考 1 CartPole 强化学习详解1 DQN Oxalate c的博客 CSDN博客 2 官方文档 推荐 Cart Pole Gymnasium Documentation 2 相关说明 2 1 动作空间 取值 0 1 表示推
  • python数组初始化_python怎么初始化数组

    因为画图中x轴与y轴的数据通常为数组格式的数据 所以先总结一下如何初始化数组 1 list得到数组 通过array函数传递list对象 L 1 2 3 4 5 6 a np array L 若传递的是多层嵌套的list 将创建多维数组 b
  • 【爬虫】一、BeautifulSoup库

    文档内容为本人观看北京理工大学嵩天老师公开课的听课笔记与实践总结 图片为从该课程下载资料的截图 感谢嵩老师 Key point 网页内容提取实际上是对标签的内容进行提取 其关键是标签的获取和标签感兴趣内容的提取 获取标签用beautiful
  • win10计算机设备感叹号,win10网络适配器出现感叹号的解决方法

    Win10系统仍然在不断完善 所以用户在使用过程中总会遇到一些陌生的问题 比如 有位用户在新装或重装的Win10系统中 就碰到了网卡不能安装 或安装出错 安装好网卡不能加载等等各种网卡驱动问题 今天小编就为大家简单的介绍一下Win10系统安
  • vtk光照、颜色、相机、坐标系统及空间变换

    1 vtkLight常的方法有 SetColor 设置光照的颜色 以RGB的形式指定颜色 SetPosition 设置光照位置 SetFocalPoint 设置光照焦点 SetIntensity 设置光照的强度 SetSwitch Swit
  • jsrender的基本使用

    1 什么是jsrender 一个JavaScript库 允许您定义一次样板结构并重复使用它来动态生成HTML JsRender为HTML5开发带来了一个新的模板库 它具有无代码标记语法和高性能 不依赖于jQuery 也不依赖于文档对象模型