我们在开发的时候针对DOM操作,用简单的JS应用来说不成问题,但如果你对视图的每次更新都需要对我文档中非常大量的块进行操作呢?这时JS模版就派上用场了。

源地址:http://rfyiamcool.blog.51cto.com/1030776/1278620

这是一个实例,我们可以把json的数据,按照自己的想法嵌入到模板里面。

<!DOCTYPE html>
<html><head><title>Handlebars Expressions Example</title></head><body><h1>Handlebars Expressions Example!</h1>
<!--this is a list which will rendered by handlebars template.    --><div id="list"></div><script type="text/javascript" src="script/jquery.js"></script><script type="text/javascript" src="script/handlebars-1.0.0.beta.6.js"></script><script id="people-template" type="text/x-handlebars-template">{{#people}}<div class="person"><h2>`first_name` `last_name`</h2><div class="phone">`phone`</div><div class="email"><a href="mailto:`email`">`email`</a></div><div class="since">User since `member_since`</div></div>{{/people}}</script><script type="text/javascript">$(document).ready(function() {// compile our templatevar template = Handlebars.compile($("#people-template").html());var data = {people: [{ first_name: "rui", last_name: "fengyun", phone: "1234567890", email: "alan@test.com", member_since: "Mar 25, 2011" },{ first_name: "Allison", last_name: "House", phone: "0987654321", email: "allison@test.com", member_since: "Jan 13, 2011" },{ first_name: "Nick", last_name: "Pettit", phone: "9836592272", email: "nick@test.com", member_since: "Apr 9, 2009" },{ first_name: "Jim", last_name: "Hoskins", phone: "7284927150", email: "jim@test.com", member_since: "May 21, 2010" },{ first_name: "Ryan", last_name: "Carson", phone: "8263729224", email: "ryan@test.com", member_since: "Nov 1, 2008" }]};$('#list').html(template(data));});</script></body>
</html>

看到这个例子,大家感觉很爽吧~  就是这样。。 我们可以通过后端取数据,然后扔到前端,而不用写各种 "" <> ''的分离符号。

进行遍历里面的数据,print出来

<script id="each-template" type="text/x-handlebars-template">{{#each people}}... output person's info here...{{/each}}
</script>

有数据的话,进行数据渲染

<script id="each-template" type="text/x-handlebars-template">{{#if people}}... output person's info here...{{/if}}
</script>

没有数据的话,就写没有数据

<script id="each-template" type="text/x-handlebars-template">{{#unless people.length}}There aren't any people.{{/unless}}
</script>

if else 关联的判断

<script id="each-template" type="text/x-handlebars-template">{{#if people.length}}... output person's info here...`else`There aren't any people.{{/if}}
</script>

源地址 :http://rfyiamcool.blog.51cto.com/1030776/1278620

Handlebars.registerHelper('list', function (items, options)

items是后面的key值,options是handlebars取值用的

<!DOCTYPE html>
<html><head><title>Handlebars Block Expressions Example</title></head><body><h1>Handlebars Expressions Example!</h1>
<!--this is a list which will rendered by handlebars template.    --><div id="list"></div><script type="text/javascript" src="script/jquery.js"></script><script type="text/javascript" src="script/handlebars-1.0.0.beta.6.js"></script><script id="people-template" type="text/x-handlebars-template">{{#list people}}`first_name` `last_name`  `phone` `email` `member_since`{{/list}}</script><script type="text/javascript">$(document).ready(function() {// compile our templatevar template = Handlebars.compile($("#people-template").html());Handlebars.registerHelper('list', function (items, options) {var out = "<div>";for (var i = 0, l = items.length; i < l; i++) {out = out + "<div>" + "<h5>"+options.fn(items[i])+"</h5>" + "</div> jiewei";}return out + "</div>";});var data = {people: [{ first_name: "Alan", last_name: "Johnson", phone: "1234567890", email: "alan@test.com", member_since: "Mar 25, 2011" },{ first_name: "Allison", last_name: "House", phone: "0987654321", email: "allison@test.com", member_since: "Jan 13, 2011" },{ first_name: "Nick", last_name: "Pettit", phone: "9836592272", email: "nick@test.com", member_since: "Apr 9, 2009" },{ first_name: "Jim", last_name: "Hoskins", phone: "7284927150", email: "jim@test.com", member_since: "May 21, 2010" },{ first_name: "Ryan", last_name: "Carson", phone: "8263729224", email: "ryan@test.com", member_since: "Nov 1, 2008" }]};$('#list').html(template(data));});</script></body>
</html>

我在value加了div和h5的便签,通过开发者用具可以看到。

源地址:http://rfyiamcool.blog.51cto.com/1030776/1278620

列表的话,有个和jinja2很像的格式。

<div id="list"></div><script type="text/javascript" src="script/jquery.js"></script><script type="text/javascript" src="script/handlebars-1.0.0.beta.6.js"></script><script id="people-template" type="text/x-handlebars-template">{{#each people}}<div class="person">`this`</div>{{/each}}</script><script type="text/javascript">$(document).ready(function () {// compile our templatevar template = Handlebars.compile($("#people-template").html());var data = {people: ["Alan Johnson" ,"Allison House" ,"Nick Pettit","Jim Hoskins","Ryan Carson"]};$('#list').html(template(data));});</script>

要是想动态的抓数据,那就用ajax来搞。

$("button").click(function(){$.getJSON("demo_ajax_json.js",function(result){//result 就是值});});
});

我们可以把把result的值扔到模板里面~

$(document).ready(function() {$('#btn1').click(function() {$.ajax({type: "POST",   //使用Post方式请求contentType: "application/json",url: "Default2.aspx/HelloWorld",data: "{}",  //这里是要传递的参数,格式为 data: "{paraName:paraValue}",下面将会看到    dataType: 'json',   //会返回Json类型success: function(result) {     //回调函数,result,返回值//result 是我们需要的值。。。。}});});});//有参数调用

为什么使用 Handlebars.js? ⬆

赞成 ⬆

  • 它是一个弱逻辑模板引擎

  • 你可以在服务端预编译模板

  • 支持 Helper 方法

  • 可以运行在客户端和服务端

  • 在模板中支持 `this` 的概念

  • 它是 Mustache.js 的超集

  • 你能想到其他的吗?

反对 ⬆

  • 你能想到任何理由吗?

总结~    这是一个很棒的js模板引擎~  当然功能上没有backbone.js  angularjs.js  强大,但是他的优点很明显,就是小数据的展现还是相当的容易的。

Javascript模板引擎handlebars使用实例及技巧相关推荐

  1. 【JavsScript】推荐五款流行的JavaScript模板引擎

    摘要:Javascript模板引擎作为数据与界面分离工作中最重要一环,受到开发者广泛关注.本文通过开发实例解析五款流行模板引擎:Mustache.Underscore Templates.Embedd ...

  2. 13 款 JavaScript 模板引擎

    JavaScript 在生成各种页面内容时如果能结合一些模板技术,可以让逻辑和数据之间更加清晰,本文介绍 X 款 JavaScript 的模板引擎.(排名不分先后顺序) 1. Mustache 基于j ...

  3. if laytpl 非_laytpl : 一款非常轻量的JavaScript模板引擎

    //假设你得到了这么一段数据 var data = { title: '前端圈', intro: '一群码js的骚年,幻想改变世界,却被世界改变.', list: [{name: '贤心', city ...

  4. JavaScript模板引擎Template.js使用

    文章主要为大家详细介绍了JavaScript模板引擎Template.js使用方法.template.js 一款 JavaScript 模板引擎,简单,好用.提供一套模板语法,用户可以写一个模板区块, ...

  5. JavaScript模板引擎详解

    JavaScript模板引擎是一种用于生成HTML.XML和其他文本格式的工具,它将特定的模板语法转换为相应的文本输出,通常用于前端开发中动态生成页面内容.下面是一个JavaScript模板引擎的详细 ...

  6. JavaScript模板引擎Template.js使用详解

    这篇文章主要为大家详细介绍了JavaScript模板引擎Template.js使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 template.js 一款 JavaScript 模板引擎, ...

  7. 高性能JavaScript模板引擎原理解析

    来源:http://cdc.tencent.com/?p=5723 随着 web 发展,前端应用变得越来越复杂,基于后端的 javascript(Node.js) 也开始崭露头角,此时 javascr ...

  8. 前端模板引擎artTemplate---高性能JavaScript模板引擎

    关于artTemplate模板引擎的详细原理请移步高性能JavaScript模板引擎原理解析,本文只探讨如何使用.初学前端的人一般对于绑定数据都是使用原生js或者jquery来拼接字符串,此为hard ...

  9. JavaScript模板引擎Template.js基本使用详解

    template.js是一款JavaScript模板引擎,提供一套模板语法,简单好用,开发者可以写一个模板区块,每次传入的数据,生成对应数据产生的HTML片段,渲染不同的效果.官网:简洁语法版 htt ...

最新文章

  1. vue-cli中配置sass
  2. Redis介绍及部署在CentOS7上(一) 1
  3. kali2020提高权限到root
  4. 编写高质量代码:改善Java程序的151个建议(第3章:类、对象及方法___建议36~40)
  5. java实现分布式redis锁_使用redis实现分布式锁
  6. 在U盘上安装linux
  7. C——printf和scanf返回值问题
  8. python 股票数据_从互联网获取股票数据(历史数据,Python + MySQL)
  9. Java探索之旅(2)——GUI输入输出与代码的规范性
  10. matlab 高级函数
  11. 在windows文件系统中加右键执行程序
  12. 谁是“顶会狂魔”?周明、张潼等上榜,清华第四,北大第六 | 2018 ML和NLP顶会论文统计出炉...
  13. javascript学习之支持正则表达式的String对象的方法的使用 search match replace split
  14. nginx access日志log_format优化之request_time 和upstream_response_time差别
  15. sublime改成中文简体及菜单变成中文
  16. cesium获取坐标及高程
  17. SD-WAN,边缘网络和安全性大热
  18. Greenplum 实时数据仓库实践(1)——数据仓库简介
  19. 五天学redhat系列之---文件系统管理
  20. 栈和队列的定义、特点和用途

热门文章

  1. 创建性设计模式之2--建造者模式
  2. 使用Phar来打包发布PHP程序
  3. Android MVP模式 简单易懂的介绍方式
  4. XeLaTeX插入GB/T 7714-2005规范的参考文献方法
  5. 移动端界面中的版式设计原理
  6. 面试官问我怎么设计100层大楼的电梯按键,我......
  7. 团购硝烟慢慢散去之时:从团购身上我们可以学到什么?
  8. java 大数的学习
  9. VS 2005 文本编码小技巧
  10. 【RedHat、CentOS Cacti安装配置】