`

Web模板引擎——Mustache(转载)

阅读更多

Web 模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,通常是标准的 HTML 文档。当然不同的开发语言有不同模板引擎,如 Javascript 下的 Hogan 、ASP 下的 aspTemplate、以及 PHP 下的 Smarty,这里主要介绍基于 Javascript 语言的模板引擎,目前流行有 Mustache、Hogan、doT.js、JsRender、Kendo UI Templates等,jsperf.com 上可以看到它们的性能对比,首先先介绍下 Mustache

 

一、Mustache 简介:

Mustache 是一个 logic-less (轻逻辑)模板解析引擎,它的优势在于可以应用在 Javascript、PHP、Python、Perl 等多种编程语言中。

二、Mustache 语法:

Mustache 的模板语法很简单,就那么几个:

  • {{keyName}}
  • {{#keyName}} {{/keyName}}
  • {{^keyName}} {{/keyName}}
  • {{.}}
  • {{<partials}}
  • {{{keyName}}}
  • {{!comments}}

这里将以 javascript 应用为例进行介绍,先来看个 Demo:

... <script type="text/javascript" src="mustache.js"></script> <script type="text/javascript"> var data = {     "company": "Apple",     "address": {         "street": "1 Infinite Loop Cupertino</br>",         "city": "California ",         "state": "CA ",         "zip": "95014 "     },     "product": ["Macbook ","iPhone ","iPod ","iPad "] }  var tpl = '<h1>Hello {{company}}</h1>'; var html = Mustache.render(tpl, data);  console.log( html ) </script> ...  //运行后 Console 输出:  <h1>Hello Apple</h1> 

在 Demo 中可以看到 data 是数据,tpl 是定义的模板,Mustache.render(tpl, data)方法是用于渲染输出最终的 HTML 代码。

借助 Demo 来对语法做简单的介绍:

{{keyName}}
{{}}就是 Mustache 的标示符,花括号里的 keyName 表示键名,这句的作用是直接输出与键名匹配的键值,例如:

var tpl = '{{company}}'; var html = Mustache.render(tpl, data);  //输出: Apple 

{{#keyName}} {{/keyName}}
#开始、以/结束表示区块,它会根据当前上下文中的键值来对区块进行一次或多次渲染,例如改写下 Demo 中的 tpl:

var tpl = '{{#address}} <p>{{street}},{{city}},{{state}}</p> {{/address}}'; var html = Mustache.render(tpl, data);  //输出: <p>1 Infinite Loop Cupertino&lt;/br&gt;,California,CA</p> 

注意:如果{{#keyName}} {{/keyName}}中的 keyName 值为 null, undefined, false;则不渲染输出任何内容。

{{^keyName}} {{/keyName}}
该语法与{{#keyName}} {{/keyName}}类似,不同在于它是当 keyName 值为 null, undefined, false 时才渲染输出该区块内容。

var tpl = {{^nothing}}没找到 nothing 键名就会渲染这段{{/nothing}}; var html = Mustache.render(tpl, data);  //输出: 没找到 nothing 键名就会渲染这段 

{{.}}
{{.}}表示枚举,可以循环输出整个数组,例如:

var tpl = '{{#product}} <p>{{.}}</p> {{/product}}'; var html = Mustache.render(tpl, data);  //输出: <p>Macbook iPhone iPod iPad</p> 

{{>partials}}
>开始表示子模块,如{{> address}};当结构比较复杂时,我们可以使用该语法将复杂的结构拆分成几个小的子模块,例如:

var tpl = "<h1>{{company}}</h1> <ul>{{>address}}</ul>" var partials = {address: "{{#address}}<li>{{street}}</li><li>{{city}}</li><li>{{state}}</li><li>{{zip}}</li>{{/address}}"}  var html = Mustache.render(tpl, data, partials);  //输出: <h1>Apple</h1> <ul><li>1 Infinite Loop Cupertino&lt;/br&gt;</li><li>California</li><li>CA</li><li>95014</li></ul>   

{{{keyName}}}
{{keyName}}输出会将等特殊字符转译,如果想保持内容原样输出可以使用{{{}}},例如:

var tpl = '{{#address}} <p>{{{street}}}</p> {{/address}}'  //输出: <p>1 Infinite Loop Cupertino</br></p> 

{{!comments}}
!表示注释,注释后不会渲染输出任何内容。

{{!这里是注释}} //输出: 

参考文章:
http://coenraets.org/blog/2011/12/tutorial-html-templates-with-mustache-js/
http://mustache.github.com/mustache.5.html
http://ued.xinyou.com/2012/07/mustache_5_document.html

 

原文地址:http://www.windguo.com/javascript/216.html

分享到:
评论

相关推荐

    arttemplate高性能javascript模板引擎.docx

    本文将重点介绍artTemplate——一种高性能的JavaScript模板引擎,并深入探讨其设计理念、关键技术以及应用场景。 #### 二、artTemplate概述 ##### 2.1 引擎特点 artTemplate是一种新一代的JavaScript模板引擎,其...

    templateEngine.zip

    四、JavaScript模板引擎实例——Handlebars Handlebars是一个流行的JavaScript模板引擎,以其简洁的语法和强大的功能受到开发者欢迎。例如,以下是一个简单的Handlebars模板: ```html {{#each users}} &lt;p&gt;{{name...

    Swift 实现的 Web Framework,感觉 Swift 要逆天了.zip

    3. **模板引擎**:Vapor 集成了多个模板引擎,如Mustache、Leaf等,帮助开发者生成动态HTML页面。这些模板引擎支持变量、控制结构和函数,使得视图层的编写既高效又简洁。 4. **JSON处理**:Swift的标准库对JSON...

    晶须:R的{{mustache}}

    "晶须:R的{{mustache}}"这个标题所指的,其实是R语言中的一种模板引擎——Whisker,它借鉴了Web开发中的Mustache模板系统。Whisker是R中的一个库,用于生成动态HTML、XML或其他文本格式的文档,特别是在数据驱动的...

    Building Node Applications with MongoDB and Backbone.pdf

    - **视图模板**: 使用模板引擎(如Mustache、Underscore等)来创建动态的HTML片段。 - **集合(Collection)**: 存储多个模型对象的容器。 - **同步(Sync)**: 通过AJAX请求与服务器进行数据交换的方法。 - **...

    jQuery 模板

    由于jQuery tmpl已不再更新,开发者可能需要考虑使用其他模板引擎,如Handlebars、Mustache或者直接使用上述提到的现代前端框架。这些工具提供了更丰富的功能和更好的社区支持。 综上所述,jQuery tmpl是jQuery生态...

    发布:面向Swift开发人员的静态网站生成器

    3. **Zola**: 虽然Zola主要由Rust编写,但它也支持Swift模板语言——Mustache。开发者可以在Swift和Mustache之间自由切换,实现灵活的开发。 在使用这些静态网站生成器时,开发者通常需要遵循以下步骤: 1. **设置...

    templates:物质模板(由编译器用来生成网络出版物)

    在JavaScript环境中,模板引擎通常以库或框架的形式存在,例如 Handlebars、EJS、Pug(Jade) 和 Mustache 等。它们各自有自己的语法特性,比如 Handlebars 提供了助手方法和部分模板,EJS 支持内联JavaScript表达式...

    大学毕业设计(Web系统),基于springboot+mysql的企业人力资源管理系统.zip

    但在SpringBoot项目中,通常使用Thymeleaf、Freemarker或Mustache模板引擎,其模板文件可能位于src/main/resources/templates目录下。 四、业务逻辑与功能实现 1. 用户认证与授权:使用Spring Security或OAuth2实现...

    tmod的使用

    在IT行业中,`tmod` 是一个常见的JavaScript模板引擎,它用于在Web开发中处理动态数据并生成HTML。`tmod`的设计理念是将HTML结构与JavaScript逻辑分离,使得代码更加清晰易读,同时提高了前端开发的效率。本篇文章将...

    ASP.NET-[其他类别]基于Ajax的邮件系统.zip

    6. **模板引擎**:为了快速生成HTML,开发者可能使用了ASP.NET MVC中的Razor视图引擎或其他第三方模板引擎,如Handlebars或Mustache。 7. **前端框架**:除了jQuery,可能会有其他的前端框架如Bootstrap或AngularJS...

    基于SpringBoot开发的宠物店管理系统源码

    在前端方面,这个系统可能使用了诸如Thymeleaf、Freemarker或Mustache等模板引擎,配合SpringBoot的视图解析器,实现动态页面的渲染。这些模板引擎允许开发者用简单的语法在HTML中嵌入逻辑,提高了开发效率,同时也...

    sample-crud-mvc:样本 CRUD

    示例 CRUD 应用程序 这是示例 Java 应用程序,表示为: 后端的 前端的 应用技术 以下是基于 Java 的技术堆栈: — 嵌入式 Web 容器;... HandlebarsJS — 带有预编译功能的类似Mustache的模板引擎; G

    learn ajax in four days

    2. **模板引擎**:结合模板引擎,如 Handlebars 或 Mustache,可以更方便地将服务器返回的数据渲染成 HTML。 3. **性能优化**:通过分批更新、延迟加载、事件委托等技术,优化 DOM 操作的性能。 4. **动画效果**:...

    EasyUI MVC资源

    6. **前端模板技术**:可能还会涉及一些前端模板引擎,如Handlebars或Mustache,这些可以帮助开发者更方便地在视图中动态渲染数据。 7. **响应式设计**:EasyUI支持响应式布局,因此资源可能涵盖如何创建适应不同...

    nodejs-course-mustached-lama

    总的来说,《Node.js课程——“Mustached Lama”》将带你深入Node.js的世界,通过实践操作和理论讲解,帮助你掌握JavaScript在服务器端的运用,以及如何利用Mustache模板引擎创建高效、动态的Web应用。无论你是初学...

    JSP技术揭秘(PDG)

    随着Java EE发展到Jakarta EE,以及Spring框架的普及,JSP的使用逐渐减少,更多地被视图技术如Thymeleaf、FreeMarker或模板引擎(如Mustache)取代。然而,理解JSP仍然是许多Java Web开发者的基础技能之一,尤其是在...

    前端项目-matreshka.zip

    Matreshka.js与多种模板引擎兼容,如Handlebars、Mustache等,通过内置的`render`方法,可以方便地将数据渲染成HTML。这使得开发者可以专注于数据模型,而不用过于关注DOM操作,提高开发效率。 五、插件系统 ...

    openlawlibrary-law-static-assets:测试将推送默认静态资产的存储库

    这种模板引擎在Web开发中广泛应用,尤其是对于生成HTML内容时,可以确保代码的简洁性和可读性。在法律文档的场景下,Mustache可以帮助开发者构建动态化的法律文档模板,根据不同的数据输入生成定制化的合同或法规...

Global site tag (gtag.js) - Google Analytics