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</br>,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</br></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模板引擎,并深入探讨其设计理念、关键技术以及应用场景。 #### 二、artTemplate概述 ##### 2.1 引擎特点 artTemplate是一种新一代的JavaScript模板引擎,其...
四、JavaScript模板引擎实例——Handlebars Handlebars是一个流行的JavaScript模板引擎,以其简洁的语法和强大的功能受到开发者欢迎。例如,以下是一个简单的Handlebars模板: ```html {{#each users}} <p>{{name...
3. **模板引擎**:Vapor 集成了多个模板引擎,如Mustache、Leaf等,帮助开发者生成动态HTML页面。这些模板引擎支持变量、控制结构和函数,使得视图层的编写既高效又简洁。 4. **JSON处理**:Swift的标准库对JSON...
"晶须:R的{{mustache}}"这个标题所指的,其实是R语言中的一种模板引擎——Whisker,它借鉴了Web开发中的Mustache模板系统。Whisker是R中的一个库,用于生成动态HTML、XML或其他文本格式的文档,特别是在数据驱动的...
- **视图模板**: 使用模板引擎(如Mustache、Underscore等)来创建动态的HTML片段。 - **集合(Collection)**: 存储多个模型对象的容器。 - **同步(Sync)**: 通过AJAX请求与服务器进行数据交换的方法。 - **...
由于jQuery tmpl已不再更新,开发者可能需要考虑使用其他模板引擎,如Handlebars、Mustache或者直接使用上述提到的现代前端框架。这些工具提供了更丰富的功能和更好的社区支持。 综上所述,jQuery tmpl是jQuery生态...
3. **Zola**: 虽然Zola主要由Rust编写,但它也支持Swift模板语言——Mustache。开发者可以在Swift和Mustache之间自由切换,实现灵活的开发。 在使用这些静态网站生成器时,开发者通常需要遵循以下步骤: 1. **设置...
在JavaScript环境中,模板引擎通常以库或框架的形式存在,例如 Handlebars、EJS、Pug(Jade) 和 Mustache 等。它们各自有自己的语法特性,比如 Handlebars 提供了助手方法和部分模板,EJS 支持内联JavaScript表达式...
但在SpringBoot项目中,通常使用Thymeleaf、Freemarker或Mustache模板引擎,其模板文件可能位于src/main/resources/templates目录下。 四、业务逻辑与功能实现 1. 用户认证与授权:使用Spring Security或OAuth2实现...
在IT行业中,`tmod` 是一个常见的JavaScript模板引擎,它用于在Web开发中处理动态数据并生成HTML。`tmod`的设计理念是将HTML结构与JavaScript逻辑分离,使得代码更加清晰易读,同时提高了前端开发的效率。本篇文章将...
6. **模板引擎**:为了快速生成HTML,开发者可能使用了ASP.NET MVC中的Razor视图引擎或其他第三方模板引擎,如Handlebars或Mustache。 7. **前端框架**:除了jQuery,可能会有其他的前端框架如Bootstrap或AngularJS...
在前端方面,这个系统可能使用了诸如Thymeleaf、Freemarker或Mustache等模板引擎,配合SpringBoot的视图解析器,实现动态页面的渲染。这些模板引擎允许开发者用简单的语法在HTML中嵌入逻辑,提高了开发效率,同时也...
示例 CRUD 应用程序 这是示例 Java 应用程序,表示为: 后端的 前端的 应用技术 以下是基于 Java 的技术堆栈: — 嵌入式 Web 容器;... HandlebarsJS — 带有预编译功能的类似Mustache的模板引擎; G
2. **模板引擎**:结合模板引擎,如 Handlebars 或 Mustache,可以更方便地将服务器返回的数据渲染成 HTML。 3. **性能优化**:通过分批更新、延迟加载、事件委托等技术,优化 DOM 操作的性能。 4. **动画效果**:...
6. **前端模板技术**:可能还会涉及一些前端模板引擎,如Handlebars或Mustache,这些可以帮助开发者更方便地在视图中动态渲染数据。 7. **响应式设计**:EasyUI支持响应式布局,因此资源可能涵盖如何创建适应不同...
总的来说,《Node.js课程——“Mustached Lama”》将带你深入Node.js的世界,通过实践操作和理论讲解,帮助你掌握JavaScript在服务器端的运用,以及如何利用Mustache模板引擎创建高效、动态的Web应用。无论你是初学...
随着Java EE发展到Jakarta EE,以及Spring框架的普及,JSP的使用逐渐减少,更多地被视图技术如Thymeleaf、FreeMarker或模板引擎(如Mustache)取代。然而,理解JSP仍然是许多Java Web开发者的基础技能之一,尤其是在...
Matreshka.js与多种模板引擎兼容,如Handlebars、Mustache等,通过内置的`render`方法,可以方便地将数据渲染成HTML。这使得开发者可以专注于数据模型,而不用过于关注DOM操作,提高开发效率。 五、插件系统 ...
这种模板引擎在Web开发中广泛应用,尤其是对于生成HTML内容时,可以确保代码的简洁性和可读性。在法律文档的场景下,Mustache可以帮助开发者构建动态化的法律文档模板,根据不同的数据输入生成定制化的合同或法规...