入门案例
handlebars 模版,只要你定义一个模版,提供一个json对象,handlebars 就能吧json对象放到你定的模版中,非常方便好用!
HTML代码
<!DOCTYPE html PUBLSEO靠我IC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <metaSEO靠我 http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Handlebars demo</title> <script SEO靠我type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></scriSEO靠我pt> <script type="text/javascript" src="js/handlebars-1.0.0.beta.6.js"></script> <script type="text/jaSEO靠我vascript" src="js/mytest.js"></script> <style type="text/css"></style> </head> <body> <h2>Simple handlebSEO靠我ars demo</h2> <button id="btn_simple">Click me</button> <div id="my_div"> </div> <h2>Handlebars Helpers SEO靠我demo</h2> <button id="btn_helper">Click me</button> <div id="helper_div"> </div> <script id="some-templaSEO靠我te" type="text/x-handlebars-template"> <table> <thead> <th>Username</th> <th>Real Name</th> <th>Email</thSEO靠我> </thead> <tbody> {{#if users}} <tr> <td>{{username}}</td> <td>{{firstName}} {{lastName}}</td> <td>{{emailSEO靠我}}</td> </tr> {{else}} <tr> <td colspan="3">NO users!</td> </tr> {{/if}} </tbody> </table> </script> <script iSEO靠我d="helper-template" type="text/x-handlebars-template"> <div> <h1>By {{fullName author}}</h1> <div> SEO靠我 {{body}}</div> <h1>Comments</h1> {{#each comments}} <h2>By {{fullName author}}</h2> <div> SEO靠我 {{body}}</h2> {{/each}} </div> </script> </body> </html> mytest.js $(document).ready(function(){ HanSEO靠我dlebars.registerHelper(fullName, function(person) { return person.firstName + " " + person.lastName; }SEO靠我); $("#btn_simple").click(function(){ // $(this).hide(); showTemplate(); }); $("#btn_helper").click(functSEO靠我ion(){ showHowUseHelper(); }); }); // var context = {title: "My New Post", body: "This is my first post!SEO靠我"}; var persion = {title :"My New Post",body:"This is my first post!"} function showTemplate(){ var souSEO靠我rce = $("#some-template").html(); var template = Handlebars.compile(source); var data = { users: [ {uSEO靠我sername: "alan", firstName: "Alan", lastName: "Johnson", email: "alan@test.com" }, {username: "allisoSEO靠我n", firstName: "Allison", lastName: "House", email: "allison@test.com" }, {username: "ryan", firstNamSEO靠我e: "Ryan", lastName: "Carson", email: "ryan@test.com" } ]}; $("#my_div").html(template(data));; } functiSEO靠我on showHowUseHelper(){ var context = { author: {firstName: "Alan", lastName: "Johnson"}, body: "I Love SEO靠我Handlebars", comments: [{ author: {firstName: "Yehuda", lastName: "Katz"}, body: "Me too!" }] }; var sourcSEO靠我e = $("#helper-template").html(); var template = Handlebars.compile(source); $("#helper_div").html(tSEO靠我emplate(context));; } 常用方法1)、最简单的Handlebars模版使用。
首先创建handlebarExample.html。
<!DOCTYPE HTML PUBLIC "-//W3SEO靠我C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <html> SEO靠我 <head><title>handlebarExample.html</title> </head> <body> </body> SEO靠我 </html>添加js库:
<head><title>handlebarExample.html</title><script type="text/javascript" src="javSEO靠我ascripts/jquery/jquery-1.7.1.min.js"></script><script type="text/javascript" src="javascripts/handleSEO靠我bars/handlebars-1.0.0.beta.6.js"></script> </head>添加handlebars模版:
<script id="entry-templSEO靠我ate" type="text/x-handlebars-template"><div class="entry"><h1>{{title}}</h1><div class="body"> SEO靠我 {{body}}</div></div> </script>添加读取js函数:
<script type="text/javascript">$(documentSEO靠我).ready(function(){var source = $("#entry-template").html();var template = Handlebars.compile(sourceSEO靠我);var context = {title: "标题", body: "内容"}var html = template(context);$(".mainBody").html(html);}); SEO靠我 </script>执行结果如下:
<body> <div><h1>标题</h1><div>内容</div> </div> SEO靠我 </body>上面是一个最简单的Handlebars模版应用,其中template(context)是生成相应的html节点,并且添加到页面上。其中context可以添加相应的标签。
2SEO靠我)Block expressions使用方法
可以自定义模版标签,利用helper生成相应的html代码:
首先修改模版:
<script id="entry-template" type="text/x-SEO靠我handlebars-template">{{#list people}}{{firstName}} {{lastName}}{{/list}} </script>修改contSEO靠我ext和渲染成html
<script type="text/javascript">$(document).ready(function(){var source = $("#entry-templaSEO靠我te").html();var template = Handlebars.compile(source);var context ={people: [{firstName: "Yehuda", lSEO靠我astName: "Katz"},{firstName: "Carl", lastName: "Lerche"},{firstName: "Alan", lastName: "Johnson"}]}HSEO靠我andlebars.registerHelper(list, function(items, options) {var out = "<ul>";for(var i=0, l=items.lengtSEO靠我h; i<l; i++) {out = out + "<li>" + options.fn(items[i]) + "</li>";}return out + "</ul>";});var html SEO靠我= template(context);$(".mainBody").html(html);}); </script>生成的代码效果如下:
Yehuda KatzCarl LerSEO靠我cheAlan Johnson添加一个名叫list的helper,funcitons(items, options)传入两个参数, data中的people作为第一个参数传入,options作为第二个SEO靠我参数传入,options附带属性fn,使用fn可以调用该模块的内容。
3)、With Expressions 使用方法
直接添加模版并且生成节点,添加到页面。
var source = "<p>{{lastSEO靠我Name}}, {{firstName}}</p>";var template = Handlebars.compile(source);var html =template({firstName: SEO靠我"Alan", lastName: "Johnson"});添加模版:
<script id="entry-template" type="text/x-handlebars-template"><diSEO靠我v class="entry"><h1>{{title}}</h1>{{#with author}}<h2>By {{firstName}} {{lastName}}</h2>{{/with}}</dSEO靠我iv> </script>添加模版数据内容:
<script type="text/javascript">$(document).ready(function(){var soSEO靠我urce = $("#entry-template").html();var template = Handlebars.compile(source);var context ={title: "MSEO靠我y first post!",author: {firstName: "Charles",lastName: "Jolley"}}var html = template(context);$(".maSEO靠我inBody").html(html);}); </script>其中使用with标签可以访问数据结构中的author对象中的相应元素。在实际的编程中,这一点非常有用,因为数据SEO靠我的不同对象需要展示到相同的页面上。所以with标签非常有用。
4)、Each helpers 用法
可以利用each标签,循环数据。
添加模版:
<script id="entry-template" typSEO靠我e="text/x-handlebars-template"><ul class="people_list">{{#each people}}<li>{{this}}</li>{{/each}}</uSEO靠我l> </script>实现数据添加和展示:
<script type="text/javascript">$(document).ready(function(){var soSEO靠我urce = $("#entry-template").html();var template = Handlebars.compile(source);var context ={people: [SEO靠我"Yehuda Katz","Alan Johnson","Charles Jolley"]}var html = template(context);$(".mainBody").html(htmlSEO靠我);}); </script>显示的结果:
Yehuda KatzAlan JohnsonCharles Jolley5)、if helpers 用法
使用if模块,可以实现想用的SEO靠我逻辑。
模版:
<div class="entry">{{#if author}}<h1>{{firstName}} {{lastName}}</h1>{{else}}<h1>Unknown AuthorSEO靠我</h1>{{/if}}</div>添加数据:
<script type="text/javascript">$(document).ready(function(){var source = $("#SEO靠我entry-template").html();var template = Handlebars.compile(source);var context ={}var html = templateSEO靠我(context);$(".mainBody").html(html);}); </script>由于数据为空,直接显示Unknown Author。
6)、HandlebarsSEO靠我 Paths
Handlebars数据也支持相应的路径。
模版:
<div class="entry"><h1>{{title}}</h1><h2>By {{author.name}}</h2><div cSEO靠我lass="body"> {{body}}</div> </div>相应的数据:
<script type="text/javascript">$(doSEO靠我cument).ready(function(){var source = $("#entry-template").html();var template = Handlebars.compile(SEO靠我source);var context = {title: "My First Blog Post!",author: {id: 47,name: "Yehuda Katz"},body: "My fSEO靠我irst post. Wheeeee!"};var html = template(context);$(".mainBody").html(html);}); </scripSEO靠我t>其中<h2>By {{author.name}}</h2>可以显示author对象中的name。
7)、使用Helpers
用户自定义helpers。
模版:
<script id="entry-tempSEO靠我late" type="text/x-handlebars-template"><div class="post"><h1>By {{fullName author}}</h1><div class=SEO靠我"body"> {{body}}</div><h1>Comments</h1>{{#each comments}}<h2>By {{fullName author}}</h2SEO靠我><div class="body"> {{body}}</div>{{/each}}</div> </script>数据:
<script tSEO靠我ype="text/javascript">$(document).ready(function(){var source = $("#entry-template").html();var tempSEO靠我late = Handlebars.compile(source);var context = {author: {firstName: "Alan", lastName: "Johnson"},boSEO靠我dy: "I Love Handlebars",comments: [{author: {firstName: "Yehuda", lastName: "Katz"},body: "Me too!"}SEO靠我]};Handlebars.registerHelper(fullName, function(person) {return person.firstName + " " + person.lastSEO靠我Name;});var html = template(context);$(".mainBody").html(html);}); </script>其中利用help实现了fSEO靠我ullName标签。
网站备案号:浙ICP备17034767号-2