热门标签 | 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



    推荐阅读
    • Unity3D引擎的体系结构和功能详解
      本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]
    • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
    • Webmin远程命令执行漏洞复现及防护方法
      本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
    • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
    • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
      本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
    • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
    • Nginx使用AWStats日志分析的步骤及注意事项
      本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
    • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
      本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
    • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
      Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
    • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
    • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
      本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
    • 使用在线工具jsonschema2pojo根据json生成java对象
      本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
    • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
    • CF:3D City Model(小思维)问题解析和代码实现
      本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
    • 成功安装Sabayon Linux在thinkpad X60上的经验分享
      本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
    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社区 版权所有