mustache模板技术(转)
项目首页:http://mustache.github.com/
项目文档:http://mustache.github.com/mustache.5.html
Demo: http://mustache.github.com/#demo
转载自:http://blog.csdn.net/g_blue_wind/article/details/51434083
简介:
Mustache 是一个 Logic-less templates,原本是基于JavaScript 实现的模板引擎,类似于 freemark和valicity ,但是比freemark和valicity更加轻量级更加容易使用,经过拓展目前支持javascript,Java,.NET,PHP,C++等多种平台下开发!
Mustache.java开发
从http://jmustache.googlecode.com/svn位置检出mustache.java项目代码
将com.samskivert.mustache包下三个.java文件拷贝到项目目录下
新建TestMustache.java文件,拷贝如下代码:
- package cn.mustache.test;
- import java.util.HashMap;
- import java.util.Map;
- import com.samskivert.mustache.Mustache;
- public class TestMustache {
- /**
- * Last Modification Time: 2011-6-27
- *
- * @param args
- */
- public static void main(String[] args) {
- //前面加#号的话,如果{{taxed_value}}也是会显示出来的
- "Hello {{name}} \n" +
- "You have just won ${{value}}! \n" +
- "{{#in_ca}} " +
- "Well, ${{taxed_value}}, after taxes. \n" +
- "{{/in_ca}} ";
- Map<String, Object> ctx = new HashMap<String, Object>();
- "name", "Chris");
- "value", "10000");
- "taxed_value", "10000 - (10000 * 0.4)");
- "in_ca", "true");
- String result = Mustache.compiler().compile(templete).execute(ctx);
- }
- }
输出:
Hello Chris
You have just won $10000!
Well, $10000 - (10000 * 0.4), after taxes.
解析:
templete为输出内容的模板,将map类型的ctx填充到templete中,经过编译和执行,便会按照模板生成result
l 语法解释:
i. 对于对象数据Mustache也有其特殊的语法:{{#}}{{/}},如果所给定的数据源是一个对象数组,则可以使用该语法,很方便的用来循环展示。
ii. 其中{{#}}标记表示从该标记以后的内容全部都要循环展示
iii. {{/}}标记表示循环结束。这种情况多用于table行的展示。
iv. 上边我们有讲到{{#}}{{/}}这样的语法,除了上边的循环遍历之外,它还有另外的一层意思就是判空,如果{{#}}中的值为null或false或undefine则其标记内的内容则不展现
v. 有了判空的方法当然还有与之相反的方法{{^}},该方法表示的意思与{{#}}意思相反。
vi. 在某些时候,我们要绑定的数据源中可能会有一些html标记,如果单纯的采用{{}}这种方式来绑定的话,默认的会将html标记转义。为了解决防止绑定字段中的内容被转移我们可以这样做{{&}},这样就可以防止转义
顺便介绍一下基于javascript的开发:
从https://github.com/janl/mustache.js上download 下mustache.js文件
在项目下建js文件夹将mustache.js拷入
新建index.html文件,并将如下代码拷入:
- >
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <script type="text/javascript" src="js/mustache.js""></script>
- <title>test mustache</title>
- </head>
- <body>
- <script language="javascript">
- var data, template, html;
- name : "Some Tuts+ Sites",
- return function (text, render) {
- text = render(text);
- url = text.trim().toLowerCase().split('tuts+')[0] + '.tutsplus.com';
- <a href="' + url + '">' + text + '</a>';
- }
- template = "<h1> {{name}} </h1>" +
- <ul> {{#sites}}" +
- <li> {{#url}} {{.}} {{/url}} </li>" +
- </ul>" ;
- Mustache.to_html(template, data);
- window.alert(html);
- </script>
- </body>
- </html>
mustache模板技术(转)的更多相关文章
- mustache模板技术
一.简介Web 模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,通常是标准的 HTML 文档.当然不同的开发语言有不同模板引擎,如 Javascript 下的 Hog ...
- HTML5触屏版多线程渲染模板技术分享
前言: 了解js编译原理的屌丝们都知道,js是单线程的,想当年各路神仙为了实现js的多线程,为了解决innerHTML输出大段HTML卡页面的顽疾,纷纷设计了诸如假冒的“多线程“实现,我自己也在写开源 ...
- JS之模板技术(aui / artTemplate)
artTemplate是个好东西啊,一个开源的js前端模板引擎,使用简单,渲染效率特别的高. 我经常使用这个技术来在前端动态生成新闻列表,排行榜,历史记录等需要在前端列表显示的信息. 下面是artTe ...
- MVC下的客户端模板技术
1.引言 在Web编程中,我们有时经常需要使用Ajax来访问服务端的接口,然后使用这些返回的数据(一般格式都是JSON)来展示客户端的相关信息.例如:在一个商品列表,我们点击某一样的商品,查看该商品的 ...
- 再谈前端HTML模板技术
在web2.0之前,写jsp的时候虽然有es和JSTL,但是还是坚持jsp.后面在外包公司为了快速交货,还是用了php Smart技术. web2.0后,前端模板技术风行. 代表有如下三大类: Str ...
- Smarty模板技术学习
模板引擎技术:使得php代码和html代码分离的技术就称为"模板引擎技术" 自定义smarty模板技术实现 <?php //迷你smarty原理 class MiniSmar ...
- smarty模板技术
一.什么是smarty?smarty是一个使用php写出来的模板php模板引擎,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用php程序员同美工分离,使用的程序员改变程序的逻辑内容不会影响到美 ...
- trait与policy模板技术
trait与policy模板技术 我们知道,类有属性(即数据)和操作两个方面.同样模板也有自己的属性(特别是模板参数类型的一些具体特征,即trait)和算法策略(policy,即模板内部的操作逻辑). ...
- 快速开发框架,及库存管理系统,基于easyui框架和C#语言MVC、EntityFrameWork、T4模板技术。
快速开发框架,及库存管理系统,基于easyui框架和C#语言MVC.EntityFrameWork.T4模板技术. 产品界面如下图所示: 源码结构: 开放全部源码,如有需要请联系,QQ:1107141 ...
随机推荐
- JDBC进行Oracle数据库操作。
1,按照Oracle 2,创建数据库脚步 DROP TABLE person ; DROP SEQUENCE myseq ;//设置自增序列. CREATE SEQUENCE myseq ; CREA ...
- 删除LINUX更新后多余的内核
删除LINUX更新后多余的内核 本人使用的时fredoa 21 之前为了搞网卡驱动不知不觉升级了几次系统,每次启动后都有好几个内核让我选,真的非常头疼阿,尤其像博主这样的有点强迫的人,看着就心烦,所以 ...
- 调用腾讯QQ启动
http://wpa.qq.com/msgrd?v=3&uin=88888888&site=qq&menu=yes
- tcp/ip --- IP路由选择及子网寻址
IP路由选择 当一个IP数据包准备好了的时候,IP数据包(或者说是路由器)是如何将数据包送到目的地的呢?它是怎么选择一个合适的路径来"送货"的呢? 最特殊的情况是目的主机和主机直连 ...
- 第四天 ThinkPHP手把手高速拼接站点(四)
6月6日,晴天."熟梅天气豆生蛾.一见榴花感慨多. 芒种积阴凝雨润,菖蒲修剪莫蹉跎. " 九.后台编写-续-1 1.改动admin/Tpl/Login/index.html 自己改 ...
- 在连接mysql数据库时出错:The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone
这个错误是时区导致的,所以需要在配置连接url后面加上时区: url=jdbc:mysql://localhost:3309/test?serverTimezone=UTC 其中UTC是统一标准世界时 ...
- web 图片上传实现本地预览
在说上传之前先说说如何替换or美化浏览器自带的简陋上传按钮(自定义自己的上传按钮 如:img): 1.将自定义上传按钮上方添加 input file 框,实现input实现透明处理. 2.对自定义上传 ...
- unity, use particleSystem with UGUI
要想在UGUI上添加particleSystem,需要将Canvas的Render Mode设置为Screen Space - Camera,并为其Render Camera指定一个Orthograp ...
- seo-mask -- 为单页应用创建一个适合蜘蛛爬取的seo网站
seo-mask seo-mask是利用搜索引擎蜘蛛的爬取原理(蜘蛛只会爬取网页的内容,并不会关心解析网页里的css和js),制作一套专门针对seo的镜像网站,鄙人称它为针对seo的mask,让蜘蛛看 ...
- [HNOI2008]玩具装箱toy(dp+斜率优化)
斜率优化问题一般都是决策单调问题.对于这题能够证明单调决策. 令sum[i]=sigma(c [k] ) 1<=k<=i , f[i]=sum[i]+i , c=L+1; 首先我们能 ...