JsRender

不少前端人员应该都用过,它是一个比较强大的模板,不牵涉太多技术依赖,使用起来非常舒服。我本人在前端开发中使用React之前,都是用的它了(实际上我感觉React没有JsViewes好用)。不管怎么说,先来学习下JsRender技术吧,如果前端的开发环境比较单纯,还是很适合的。

一、JsRender特性

新一代的前端渲染模板

  • 使用模板,可以预先自定义一些固定格式的HTML标签,在需要显示数据时,再传入真实数据组装并展示在Web页中;这避免了在JS中通过“+”等手动分割、连接字符串的复杂过程。

  • 针对高性能和纯字符串渲染进行了优化

  • 无需依赖DOM和jQuery

优先使用场景

  • 元素重复出现
  • 动态加载数据,并前端显示

    二、JsRender使用

  1. 引入js:jsrender.js
  2. 定义模板:
  3. 准备好要显示的数据 json对象 var data = { xxx:“text” }
  4. 编译成元素:document.getElementById(“XXX”).render(data);   或 $("#XXX").render(data);
  5. 通过容器元素的append、before、after显示

基本语法

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

     几个你可能不知道的要点

  • 获取当前的索引:#index,如{{if #index==0}} ... {{/if}}

  • 获取整个数据:#data,    如<option value="{{:#index}}">{{:#data}}</option>

  • 获取父模板:#parent,    如{{if (#parent.data.general==0)}} ... {{/if}}

三、举个例子

下图中是我以前做的一个Web页面:

它的数据来源大概是这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[
      {
          id:12,
          cid:195,
          type:"问题简述",
          impact:"错误级别",
          status:"处理状态",
          owner:"处理人",
          count:1,
          path:"问题所在文件的SVN路径",
          rev:对应文件的SVN版本号,
          
      } , ...
]

  我们关注的是这个模板是怎么写的:

大家可以看上图中标红的部分,除了helper与tag外,大部分功能都用上了。我实在不想好好做个demo给大家下载了,本身不复杂,不明白可以再交流。

四、性能比较

转载请注明原址:http://www.cnblogs.com/lekko/p/5888962.html

JsRender的更多相关文章

  1. 前端渲染利器——JsRender入门

    JsRender不少前端人员应该都用过,它是一个比较强大的模板,不牵涉太多技术依赖,使用起来非常舒服.我本人在前端开发中使用React之前,都是用的它了(实际上我感觉React没有JsViewes好用 ...

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

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

  3. knockoutJS学习笔记02:jsRender模板引擎

    上一篇最后提到了模板,并尝试自己编写一个最简单版本:有些朋友可能用过 jqtmpl,这是一个基于jquery的模板引擎,不过它已经不再更新了,而且据说渲染速度比较慢.这里介绍另外一个模板引擎:jsRe ...

  4. Visro 应用的前端模板工具介绍 -JsRender

    1.什么是JsRender: JsRender是一款JavaScript模版引擎,是具有简单直观,功能强大,可扩展的,早期版本是基于JQUERY 写的,后来作者重构了,就不再依赖JQUERY了. 它的 ...

  5. jsRender绑定数据

    首先,引入jquery(很重要),其次引入jsRender.js <script type="text/javascript" src="js/jquery-1.7 ...

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

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

  7. javascript模板库jsrender for循环嵌套示例

    最近在参与整合前端的框架,我们知道javascript最强大的模板引擎之一当属jsrender,号称下一代jquery模板引擎的标准实现. 通常在模板merge的过程中,我们会遇到两次乃至三级嵌套的情 ...

  8. jsRender 循环for 和props

    jsrender提供多重循环方式 1.{{for array}}循环数组 2.{{props object}}循环对象 1.for array的使用 <body> <div id=& ...

  9. jsrender for array 和for object语法

    for array 循环数组 循环使用案例 定义数组数据 var data = { names: ["Maradona","Pele","Ronald ...

  10. JsRender for object 语法说明

    JsRender 作为一款JavaScript模版引擎,必不可少的会有循环功能,也就是for,但由于JsRender过于灵活,for竟然可以接受object作为循环对象. {{for Array}}和 ...

随机推荐

  1. Unity3D延迟回调的封装

    最近,整理项目框架逻辑时,无意中翻到n年前封装的延迟回调管理器,就拎出来说道说道: 先说一下系统提供的几种常用的延迟回调方式: 1)Invoke(Invoke.CancelInvoke):首先需要继承 ...

  2. PMP考试的过与只是

    我在一年多时间里參加了三次PMP考试,前两次都失败,直到第三次才成功.怎样对待失败?这是每个人都会遇到的挑战.假设我们能用正确的态度对待临时的失败,那么终于的成功也就不远了.我希望通过本文与大家分享一 ...

  3. InstallShield12豪华版破解版下载|InstallShield下载|软件打包工具

    InstallShield 12 豪华版+破解版 下载 下载速度:220kb/s InstallShield 12为软件发行方提供率先的安装程序解决方式,可以制作强大可靠的Windows Instal ...

  4. ARCGIS获取图层下的要素信息及要素类转换为要素

    /// <summary> /// 得到需要的字段名和字段值 /// </summary> /// <param name="layer">&l ...

  5. Mysql中int(1)的误解及说明

    在mysql中使用int相关的数据类型时, 如果不太了解其存储方式, 会产生一些误用的情况. 如: 只保存0-9之间的数字, 可能会直接用int(1). 习惯性的以为int(1)就相当于varchar ...

  6. Windows2012中安装域控(DC) + SQL Server 2014 + TFS 2015

    安装域控(DC) 修改计算机名 修改固定IP 添加角色 选择“Role-based or feature-based installation” 选择本机 选择“Active Directory Do ...

  7. JDK自带方法实现消息摘要运算

    啊,有点小注释,懒得介绍了,就贴个代码吧,大意理解就可以了. package jdbc.pro.lin; import java.security.InvalidKeyException; impor ...

  8. asp.net mvc+web api+easyui

    前奏:第一次写博客,记录一下学习和开发的过程. 现在写的是一个后台管理系统,有基本的权限功能,其他功能都可以扩展.用到的技术是 asp.net mvc5,web api 2,entityframewo ...

  9. [上传下载] C#FileUp文件上传类 (转载)

    点击下载 FileUp.zip 主要功能如下 .把上传的文件转换为字节数组 .流转化为字节数组 .上传文件根据FileUpload控件上传 .把Byte流上传到指定目录并保存为文件 看下面代码吧 // ...

  10. [上传下载] C#修改DownLoadHelper上传下载帮助类 (转载)

    点击下载 DownLoadHelper.rar 主要功能如下 /// <summary> /// 输出硬盘文件,提供下载 支持大文件.续传.速度限制.资源占用小 /// </summ ...