handlebars的使用

web 开发中,js 解析JSON 是经常的事情。非常繁琐。handlebars 使用了模版,只要你定义一个模版,提供一个json对象,handlebars 就能吧json对象放到你定的模版中

html代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Handlebars demo</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script type="text/javascript" src="js/handlebars-1.0.0.beta.6.js"></script>
    <script type="text/javascript" src="js/myjs.js"></script>
    <style type="text/css"></style>
    </head>
    <body>
        <h2>Simple handlebars demo</h2>
        <button id="btn_simple">Click me</button>
        <div id="my_div">  

        </div>
        <h2>Handlebars Helpers demo</h2>
        <button id="btn_helper">Click me</button>
        <div id="helper_div">  

        </div>
        <script id="some-template" type="text/x-handlebars-template">
              <table>
                <thead>
                  <th>Username</th>
                  <th>Real Name</th>
                  <th>Email</th>
                </thead>
                <tbody>
                  {{#if users}}
                    <tr>
                      <td>{{username}}</td>
                      <td>{{firstName}} {{lastName}}</td>
                      <td>{{email}}</td>
                    </tr>
                  {{else}}
                    <tr>
                      <td colspan="3">NO users!</td>
                    </tr>
                  {{/if}}
                </tbody>
              </table>
        </script>
        <script id="helper-template" type="text/x-handlebars-template">
            <div>
              <h1>By {{fullName author}}</h1>
              <div>{{body}}</div>  

              <h1>Comments</h1>  

              {{#each comments}}
              <h2>By {{fullName author}}</h2>
              <div>{{body}}</h2>
              {{/each}}
            </div>
        </script>
    </body>
    </html>

js代码

    $(document).ready(function(){
        Handlebars.registerHelper(‘fullName‘, function(person) {
          return person.firstName + " " + person.lastName;
        });
      $("#btn_simple").click(function(){
        // $(this).hide();
        showTemplate();
      });
       $("#btn_helper").click(function(){  

        showHowUseHelper();
      });
    });
    // var context = {title: "My New Post", body: "This is my first post!"};
    var persion = {title :"My New Post",body:"This is my first post!"}
    function showTemplate(){
        var source   = $("#some-template").html();
        var template = Handlebars.compile(source);
          var data = { users: [
              {username: "alan", firstName: "Alan", lastName: "Johnson", email: "[email protected]" },
              {username: "allison", firstName: "Allison", lastName: "House", email: "[email protected]" },
              {username: "ryan", firstName: "Ryan", lastName: "Carson", email: "[email protected]" }
            ]};
          $("#my_div").html(template(data));;
    }  

    function showHowUseHelper(){
        var context = {
          author: {firstName: "Alan", lastName: "Johnson"},
          body: "I Love Handlebars",
          comments: [{
            author: {firstName: "Yehuda", lastName: "Katz"},
            body: "Me too!"
          }]
        };
        var source   = $("#helper-template").html();
        var template = Handlebars.compile(source);
        $("#helper_div").html(template(context));;  

    }
时间: 2024-10-11 03:53:17

handlebars的使用的相关文章

Ember.js 入门指南——handlebars属性绑定

本文从http://www.ibeginer.sinaapp.com迁移过来,欢迎访问原页面. 简单讲属性绑定其实就是在HTML标签内(是在一个标签的"<"和">"中使用)直接使用handlebars表达式.可以直接用handlebars表达式的值作为HTML标签中某个属性的值. 准备工作:ember generate route binding-element-attributes 1,绑定字符串 <!-- //  app/templates/b

Handlebars模板引擎渲染页面

基本使用,并简单列举了几种常见的数据格式的渲染方式 js: var testTpl = Handlebars.compile($('#test').html()); //模板 var arr = [1,2,3] //数据 $('#box').append(testTpl(arr)); //调用 html: <script type="text/x-handlebars-template" id="test"> {{#each this}} <li&

Handlebars.js循环中索引(@index)使用技巧(访问父级索引)

使用Handlebars.js过程中,难免会使用循环,比如构造数据表格.而使用循环,又经常会用到索引,也就是获取当前循环到第几次了,一般会以这个为序号显示在页面上. Handlebars.js中获取循环索引很简单,只需在循环中使用{{@index}}即可. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <META http-equiv=Content-Type content="text/html; charset=utf-

进击的handlebars前后端模板引擎

在browser浏览器中使用Handlebars 1 基本语法 <div class="demo"> <h1>{{name}}</h1> <p>{{content}}</p> </div> 2 通过script标签放置模板 <script type="text/template" id="avatarTpl"> <div class="info_b

HandleBars

优秀博客:http://www.cnblogs.com/iyangyuan/archive/2013/12/12/3471227.html 官网:http://handlebarsjs.com/ 注意点: 支持嵌套循环: this指当前上下文 循环中的索引使用:@index (从0开始的) {{addOne @index}} //注册一个Handlebars Helper,用来将索引+1,因为默认是从0开始的 Handlebars.registerHelper("addOne",fun

handlebars简单用法

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>handlebars</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv

handlebars自定义helper的写法

handlebars相对来讲算一个轻量级.高性能的模板引擎,因其简单.直观.不污染HTML的特性,我个人特别喜欢.另一方面,handlebars作为一个logicless的模板,不支持特别复杂的表达式.语句,只内置了一些基本的语法,像if.each这些.可惜的是就连if都十分弱,只能判断值是否为true/false,或转化后是否为true/false,不能对值进行比较.不过,handlebars提供了自定义helper的能力,通过自定义helper,可以实现非常丰富的功能.本篇来总结一下hand

Express 4 handlebars 不使用layout写法

Express 4 handlebars 不使用layout写法 Express node nodejs handlebars layout 最近刚开始学习使用nodejs. 使用express搭建了一个基于handlebars的模板引擎的基础项目. 发现所有页面都继承了layout... 那layout怎么才能不继承layout呢? 直接上代码: router.get('/', function(req, res) { res.render('home', {layout: false});

Handlebars 介绍

最新项目用到了Ember.js前端框架,第一次使用这样的框架,准备国庆节花2天时间,研究一下它的用法. Ember框架的模板引擎用到了handlebars, 先看国外的一篇介绍文章:An Introduction to Handlebars, 手动写了一个测试示例: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title>

Handlebars expressions

Basic Usage 1,最简单的handlebars 表达式 <h1>{{title}}</h1> 使用时,会在当前context里找名为title的property,替换之. 2,handlebars表达式也可以是一个带‘.’的paths <h1>{{article.title}}</h1> 该表达式会在current context里查找article属性,在result里接着找title.如果没有传article变量,页面是不能接收到值,但也不会报