javascript/jquery模板引擎——Handlebars初体验

最近自己在建一个站,采用完全的前后端分离的方式,现在正在做前端的部分。其中有项功能是需要ajax调用后端接口,返回json数据后要动态的插入数据。但是一开始我自己是用最"传统"的通过js拼接html字符串,然后再用jq插入到页面中。比如说下面的这个例子,我要显示一个个人信息卡:

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>Index</title>
 6         <script src="js/jquery.js"></script>
 7         <style>
 8             .person {
 9                 font-size:40px;
10                 float:left;
11                 padding:20px;
12                 margin:30px;
13                 background-color:pink;
14             }
15         </style>
16     </head>
17
18     <body>
19         <div class = "person" id="person_info">
20         </div>
21     </body>
22
23     <script>
24         var data = {
25             name:‘约翰莫里森‘,
26             home:‘美国‘,
27             job:‘摔跤手‘
28         };
29
30         var str = "";
31         str += "<div>姓名:" + data.name + "</div>";
32         str += "<div>出生地:" + data.home + "</div>";
33         str += "<div>职业:" + data.job + "</div>";
34
35         $(‘#person_info‘).html(str);
36     </script>
37 </html>

这里我得用自己"手动"拼接html字符串,况且这只是一个极其简单的例子,如果标签之间的嵌套、属性复杂的话,这种方式写起来相当的麻烦,且标签间没有层次结构,可读性和维护性极差。

后来偶然在个地方了解到了模板引擎,从此这种工作一下简便了许多! 先看下用Handlebars完成上面的例子是如何操作的:

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>Handlebars</title>
 6         <script src="js/jquery.js"></script>
 7         <script src="js/handlebars.js"></script>
 8         <style>
 9             .person {
10                 font-size:40px;
11                 float:left;
12                 padding:10px;
13                 margin-left:30px;
14                 background-color:pink;
15             }
16         </style>
17     </head>
18
19     <body>
20         <div id = "person_info">
21             <div class = "person">
22                 <div>姓名:{{name}}</div>
23                 <div>出生地:{{home}}</div>
24                 <div>职业:{{job}}</div>
25             </div>
26         </div>
27     </body>
28
29     <script>
30         var data ={
31             name:‘约翰莫里森‘,
32             home:‘美国‘,
33             job:‘摔跤手‘
34         };
35
36         var tmpl = $(‘#person_info‘).html();
37
38         var func = Handlebars.compile(tmpl);
39
40         var result = func(data);
41
42         $(‘#person_info‘).html(result);
43     </script>
44
45 </html>

先从最下面的js代码讲起,核心代码就这四句:

1         var tmpl = $(‘#person_info‘).html();
2         var func = Handlebars.compile(tmpl);
3         var result = func(data);
4         $(‘#person_info‘).html(result);

第一行的 var tmpl = $(‘#person_info‘).html(); 就只是基本的jq语法;<body>中<div id="person_info">块中的就是html模板,这里取得了该div块下的html模板内容(对象tmpl)。此时如果用console.log(tmpl)打印该对象的话,得到的内容是

1             <div class = "person">
2                 <div>姓名:{{name}}</div>
3                 <div>出生地:{{home}}</div>
4                 <div>职业:{{job}}</div>
5             </div>

用两个大括号括起来的变量名会在后面 向函数传入数据(下面会提到) 时进行匹配。

第二行 var func = Handlebars.compile(tmpl); 通过Handlebars的compile()对刚刚取得的html模板进行预编译,返回的是一个函数(现在对象func即为该函数)。

var result = func(data); 这个函数带有一个参数,该参数为用以匹配模板用的数据。我这里事先写死一个数据对象data,然后传入该函数内。返回值是匹配好的html内容,打印出来就是 :

1             <div class = "person">
2                 <div>姓名:约翰莫里森</div>
3                 <div>出生地:美国</div>
4                 <div>职业:摔跤手</div>
5             </div>

最后用jq将内容插入到页面中: $(‘#person_info‘).html(result);

时间: 2024-10-01 21:31:14

javascript/jquery模板引擎——Handlebars初体验的相关文章

10 个强大的JavaScript / jQuery 模板引擎推荐

模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档.由于在开发过程中,网站或应用程序的界面与数据实现分离,大大提升了开发效率,良好的设计也使得代码重用变得更加容易.本文整理了10 款基于JavaScript和jQuery的模板引擎,希望能对你的开发工作带来一些帮助. 1. NANO 最简单的jQuery模板引擎,完美实现对JSON的解析. 源码 / 演示 2. The "template" binding 该工具通过渲染模板将相关联的DOM元素组织到一起.

【阿里云产品公测】云引擎ACE初体验

作者:阿里云用户蓝色之鹰 :RYYjmG5;  来投票支持我把=i2]qj\  序号2. [阿里云产品公测]云引擎ACE初体验:作者:蓝色之鹰 e(OKE7  序号10.[阿里云产品公测]结构化数据服务OTS之JavaSDK初体验:作者:蓝色之鹰 -- IewW  http://bbs.aliyun.com/read/178799.html 分享下我,公测体验! 来投票支持我把 序号2. [阿里云产品公测]云引擎ACE初体验:作者:蓝色之鹰  序号10.[阿里云产品公测]结构化数据服务OTS之J

JS 模板引擎 Handlebars.js 中文说明

Handlebars 为你提供了一个可以毫无挫折感的高效率书写 语义化的模板 所必需的一切. Mustache 模板和 Handlebars 是兼容的,所以你可以把Mustache模板拿来导入到Handlebars中,并开始使用Handlebars所提供的更丰富的功能. 开始 Handlebars模板看起来就像是正常的Html,并使用了嵌入的 handlebars 表达式. <div class="entry"> <h1>{{title}}</h1>

jquery的Deferred 对象初体验

之前阅读了阮一峰老师的jQuery的deferred对象详解一文,结合jquery手册,算是对Deferred对象有了初步的认知.今天便来分享一下我自己的一些体会. 一.deferred可以方便的添加回调 先来看下面的例子 1 var test = function(callback) { 2 setTimeout(function() { 3 console.log('我完成了'); 4 callback('我是回调') 5 }, 1000) 6 }; 7 test(function(text

一个简单的 JavaScript 的模板引擎

比较简单,直接贴代码吧: (function (global) { var _version = '1.0.0', _setting = { openTag: '<#', /*逻辑代码的开始标签*/ closeTag: '#>', /*逻辑代码的结束标签*/ maskOpenTag: '<!-', /*注释的开始标签*/ maskCloseTag: '-!>' /*注释的结束标签*/ }, _templateCache = {}, _escapeHTML = function (s

&lt;script id=&quot;nav_template&quot; type=&quot;text/x-handlebars-template&quot;&gt; JS的模板引擎 Handlebars.js 模板引擎

http://www.ghostchina.com/introducing-the-handlebars-js-templating-engine/

推荐13款javascript模板引擎

javaScript 在生成各种页面内容时如果能结合一些模板技术,可以让逻辑和数据之间更加清晰,本文介绍 X 款 JavaScript 的模板引擎.(排名不分先后顺序) 1. Mustache 基于javascript 实现的模板引擎,类似于 Microsoft’s jQuery template plugin,但更简单易用! 2. EasyTemplate 在使用过Freemarker模 板后,感觉它的 语法比较朴实,平易近人,容易上手,于是决定按它的语法风格实现一个前端的 模板引擎,这就有了

作为一名前端开发工程师,你必须掌握的WEB模板引擎:Handlebars

作为一名前端开发工程师,你必须掌握的WEB模板引擎:Handlebars 一.为什么需要使用模板引擎? 关于为什么要使用模板引擎,按照我常对学生说的一句话就是:不用重复造轮子.. 简单来说,模板最本质的作用是"变静为动",一切利于这方面的都是优势,不利于的都是劣势. 要想很好地实现"变静为动"的目的,有这么几点: 1. 可维护性(后期改起来方便): 2. 可扩展性(想要增加功能,增加需求方便): 3.开发效率提高(程序逻辑组织更好,调试方便): 4.看起来舒服(不容

给开发者10款最佳的 JavaScript 模板引擎

使用模板的想法是使生活更容易,而不必编写所有的代码,只需要更改代码的一部分就可以.像许多模板支持多种语言,JavaScript也支持使用模板引擎.它允许您创建一个代码库,您可以开始构建你需要的应用程序.这里有10个最有用的JavaScript开发者模板引擎.希望能给开发者和设计者提供一定的帮助. 1.Mustache.js Mustache 是 logic-less 模板语法,可以使用在 HTML,配置文件,源代码等等地方.它是使用哈希表或者对象提供的值来扩展模板标签. 2.CoffeeKup