模版引擎Handlebars和Mustache

Handlebars是一款很高效的模版引擎,提供语意化的模版语句,最大的兼容Mustache模版引擎, 提供最大的Mustache模版引擎兼容, 无需学习新语法即可使用;

下面这个是基本的模版表达式,

其中 {{ 和 }} 之间为handlerbars的变量;

<div class="entry">
  <h1>{{title}}</h1>
  <div class="body">
    {{body}}
  </div>
</div>

拓展:Handlebars 的使用

其实就是模板化,这是以前就开始推崇的面向数据编程的一个方式。比如jquery template

web 开发中,js 解析JSON 是经常的事情。非常繁琐。handlebars 使用了模版,只要你定义一个模版,提供一个json对象,handlebars 就能吧json对象放到你定的模版中,非常方便好用! 下面直接上代码:

<!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>  
$(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));;  

}  

.

原文地址:https://www.cnblogs.com/jianxian/p/11703390.html

时间: 2024-10-15 11:05:46

模版引擎Handlebars和Mustache的相关文章

js模版引擎handlebars.js实用教程

一.为什么选择Handlebars.js 据小菜了解,对于java开发,涉及到页面展示时,比较主流的有两种解决方案: 1. struts2+vo+el表达式. 这种方式,重点不在于struts2,而是vo和el表达式,其基本思想是:根据页面需要的信息,构造出一个实体,这个实体中包含了界面需要的所有属性,通常这个实体是由N个表中的字段构成的,俗称vo.由于vo的属性可以是String.List.Map等等等,又可以vo套vo,因此这种方式非常灵活,也非常好用. 在后台对vo进行赋值,通过strut

模版引擎Handlebars语法(1)

<script src="handlebars.js"></script></head><body> <div id="content"></div> <div id="second_content"></div> <div id="third_content"></div> <script id=&q

handlebars.js模版引擎随记

前台的模版引擎有许多种,相比较而言 我个人更觉得handlebars更为轻便 首先github上下载自新版本的handelbars.js http://handlebarsjs.com 下载下来之后呢 我们需要在页面引入js 1 <script type="text/javascript" src="script/jquery.js"></script> 2 <script type="text/javascript"

Express模版引擎hbs备忘

最近几天折腾了下express,想找个合适的模版引擎,下面是一些折腾过程的备忘 选择标准 选择一门模版语言时,可能会考虑的几点 语法友好(micro tmpl那种语法真是够了) 支持模版嵌套(子模版的概念) 支持模版继承(extend) 前后端共用 有容错处理(最好定位到具体出错位置) 支持预编译(性能好) 注意到hbs,似乎满足大部分的需求:https://github.com/donpark/hbs getting started demo地址:https://github.com/chyi

如何在前端模版引擎开发中避免使用eval函数

前段时间,想着自己写一个简单的模版引擎,便于自己平时开发demo时使用.于是根据自己对模版引擎的理解,定义自己的模版格式,然后,根据自己定义的格式,编写处理函数,将模版标签中的字符串,解析成可执行的字符串,然后再用eval函数执行该可执行的字符串. 然后问题就出现了!eval等价于evil! 为什么呢?各大js权威书籍上都不提倡使用eval.下面我详细的解释一下为什么不提倡. 首先,大家需要知道,js并不是一门解释型语言.它和其他大家熟知的编程语言(c,java,c++)一样,是编译型语言.但是

前端数据模版引擎的总结

模板的工作原理可以简单地分成两个步骤:模板解析(翻译)和数据渲染.这两个步骤可分别部署在前端或后端来执行.如果放在后端执行,则是像Smarty,FreeMarker这样的后端模板引擎,而如果放在前端来执行,则是我们要探讨的前端模板. FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写,模板用servlet提供的数据动态地生成 HTML,模板语言是强大的直观的,编译器速度快,输出接近静态HTML页面的速度.这里不再对后端模版进行描述. 前端模版提高了前端开发

Spring整合Velocity模版引擎

1. 首先通过pom.xml自动加载velocity扩展包到工程: 1 <dependency> 2 <groupId>velocity</groupId> 3 <artifactId>velocity</artifactId> 4 <version>1.5</version> 5 </dependency> 2. 然后在自动装载bean的xml里边添加如下配置: 1 <bean id="vel

Symfony2模版引擎使用说明手册

一.基本使用 {{ demo }}输出一个demo变量; {{% func %}}通常是包含一个twig函数例如 for; 举个for循环的例子: {{% for i in 0..10 %}} <em>{{ i }}</em> {{% endfor %}} 当然也可以打印对象,例: {{% for user in users %}} <span>user.username</span> {{% endfor %}} 注:users是从控制器中传来的对象参数

【转】T4模版引擎之基础入门

额,T4好陌生的名字,和NuGet一样很悲催,不为世人所熟知,却又在背后默默无闻的奉献着,直到现在我们项目组的人除了我之外,其它人还是对其豪无兴趣,基本上是连看一眼都懒得看,可怜的娃啊... T4(Text Template Transformation Toolkit)是微软官方在VisualStudio 2008中开始使用的代码生成引擎.在 Visual Studio 中,“T4 文本模板”是由一些文本块和控制逻辑组成的混合模板,它可以生成文本文件. 在 Visual C# 或 Visual