热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Mustache(2)

Web模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,通常是标准的HTML文档。当然不同的

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}}
  • {{.}}
  • {{
  • {{{keyName}}}
  • {{!comments}}

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

...
<script type&#61;"text/Javascript" src&#61;"mustache.js">script> <script type&#61;"text/Javascript"> var data &#61; { "company": "Apple", "address": { "street": "1 Infinite Loop Cupertino
", "city": "California ", "state": "CA ", "zip": "95014 " }, "product": ["Macbook ","iPhone ","iPod ","iPad "] } var tpl &#61; &#39;

Hello {{company}}

&#39;; var html &#61; Mustache.render(tpl, data); console.log( html ) script> ... //运行后 Console 输出&#xff1a; <h1>Hello Appleh1>

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

借助 Demo 来对语法做简单的介绍&#xff1a;

{{keyName}}

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

var tpl &#61; &#39;{{company}}&#39;;
var html &#61; Mustache.render(tpl, data);
//输出&#xff1a;
Apple

{{#keyName}} {{/keyName}}

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

var tpl &#61; &#39;{{#address}}

{{street}},{{city}},{{state}}

{{/address}}&#39;;
var html &#61; Mustache.render(tpl, data);//输出&#xff1a;

1 Infinite Loop Cupertino
,California,CA

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

{{^keyName}} {{/keyName}}

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

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

{{.}}

{{.}}表示枚举&#xff0c;可以循环输出整个数组&#xff0c;例如&#xff1a;

var tpl &#61; &#39;{{#product}}

{{.}}

{{/product}}&#39;;
var html &#61; Mustache.render(tpl, data);
//输出&#xff1a;

Macbook

iPhone

iPod

iPad

{{>partials}}

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

var tpl &#61; "

{{company}}

    {{>address}}
"
var partials &#61; {address: "{{#address}}
  • {{street}}
  • {{city}}
  • {{state}}
  • {{zip}}
  • {{/address}}"}
    var html &#61; Mustache.render(tpl, data, partials);
    //输出&#xff1a;

    Apple


    • 1 Infinite Loop Cupertino
    • California
    • CA
    • 95014

    {{{keyName}}}

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

    var tpl &#61; &#39;{{#address}}

    {{{street}}}

    {{/address}}&#39;
    //输出&#xff1a;

    1 Infinite Loop Cupertino

    {{!comments}}

    !表示注释&#xff0c;注释后不会渲染输出任何内容。

    {{!这里是注释}}
    //输出&#xff1a;

    参考文章&#xff1a;

    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


    来自&#xff1a;http://www.iinterest.net/2012/09/12/web-template-engine-mustache/

    转:https://www.cnblogs.com/yelongsan/p/6343320.html



    推荐阅读
    • Python 数据可视化实战指南
      本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
    • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
    • 本文将详细介绍如何在Mac上安装Jupyter Notebook,并提供一些常见的问题解决方法。通过这些步骤,您将能够顺利地在Mac上运行Jupyter Notebook。 ... [详细]
    • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
      本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
    • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
    • 深入解析HTML5字符集属性:charset与defaultCharset
      本文将详细介绍HTML5中新增的字符集属性charset和defaultCharset,帮助开发者更好地理解和应用这些属性,以确保网页在不同环境下的正确显示。 ... [详细]
    • window下的python安装插件,Go语言社区,Golang程序员人脉社 ... [详细]
    • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
    • 思科IOS XE与ISE集成实现TACACS认证配置
      本文详细介绍了如何在思科IOS XE设备上配置TACACS认证,并通过ISE(Identity Services Engine)进行用户管理和授权。配置包括网络拓扑、设备设置和ISE端的具体步骤。 ... [详细]
    • 开机自启动的几种方式
      0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
    • 本文深入解析了JDK 8中HashMap的源代码,重点探讨了put方法的工作机制及其内部参数的设定原理。HashMap允许键和值为null,但键为null的情况只能出现一次,因为null键在内部通过索引0进行存储。文章详细分析了capacity(容量)、size(大小)、loadFactor(加载因子)以及红黑树转换阈值的设定原则,帮助读者更好地理解HashMap的高效实现和性能优化策略。 ... [详细]
    • 2018 HDU 多校联合第五场 G题:Glad You Game(线段树优化解法)
      题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6356在《Glad You Game》中,Steve 面临一个复杂的区间操作问题。该题可以通过线段树进行高效优化。具体来说,线段树能够快速处理区间更新和查询操作,从而大大提高了算法的效率。本文详细介绍了线段树的构建和维护方法,并给出了具体的代码实现,帮助读者更好地理解和应用这一数据结构。 ... [详细]
    • 在Ubuntu上安装MySQL时解决缺少libaio.so.1错误及libaio在MySQL中的重要性分析
      在Ubuntu系统上安装MySQL时,遇到了缺少libaio.so.1的错误。本文详细介绍了如何解决这一问题,并深入探讨了libaio库在MySQL性能优化中的重要作用。对于初学者而言,理解这些依赖关系和配置步骤是成功安装和运行MySQL的关键。通过本文的指导,读者可以顺利解决相关问题,并更好地掌握MySQL在Linux环境下的部署与管理。 ... [详细]
    • 数据库多表联合查询:内连接与外连接详解
      在数据库的多表查询中,内连接和外连接是两种常用的技术手段。内连接用于检索多个表中相互匹配的记录,即只有当两个表中的记录满足特定的连接条件时,这些记录才会被包含在查询结果中。相比之下,外连接则不仅返回匹配的记录,还可以选择性地返回不匹配的记录,具体取决于左外连接、右外连接或全外连接的选择。本文将详细解析这两种连接方式的使用场景及其语法结构,帮助读者更好地理解和应用多表查询技术。 ... [详细]
    • 优化后的标题:利用 jQuery 实现高效树形结构元素选择与操作
      在Web前端开发中,DOM结构本质上是一种树形结构。通过优化后的jQuery选择器,可以高效地选择和操作DOM树中的节点。这些选择器不仅简化了代码编写,还提高了性能和可维护性。本文将详细介绍如何利用jQuery的树形选择器实现高效的元素选择与操作。 ... [详细]
    author-avatar
    手机用户2502929315
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有