javascript库之Mustache库使用说明

一、简单示例

代码:

 1             function show(t) { 2                 $("#content").html(t); 3             } 4  5             var view = { 6                 title: 'YZF', 7                 cacl: function () { 8                     return 6 + 4; 9                 }10             };11             $("#content").html(Mustache.render("`title` spends `cacl`", view));

结果:

YZF spends 10

 

结论:

可以很明显的看出Mustache模板的语法,只需要使用{{和}}包含起来就可以了,里面放上对象的名称。

通过本示例也可以看出,如果指定的属性为函数的时候,不会输出函数里面的内容,而是先执行函数,然后将返回的结果显示出来。

 

 二、不转义html标签

代码:

1             var view = {2                 name: "YZF",3                 company: "<b>ninesoft</b>"4             };5             show(Mustache.render("`name` <br /> `company` <br />{`company`}<br/>{{&company}}", view));

 结果:

 

结论:

通过这个示例可以看出Mustache默认是会将值里面的html标记进行转义的,但是有时候我们并不需要。

所以这里我们可以使用{{{和}}}包含起来,或者是{{&和}}包含,那么Mustache就不会转义里面的html标记。

 

三、绑定子属性的值

代码:

1             var view = {2                 "name": {3                     first: "Y",4                     second: "zf"5                 },6                 "age": 217             };8             show(Mustache.render("`name`.`first``name`.`second` age is `age`", view));

 结果:

 

结论:

相信看到第一个示例的时候,就会有人想到能不能绑定子属性,如果你努力看下去了。

那么祝贺你,现在就是解决你的需求的方式,仅仅只需要通过.来使用子属性即可。

 

四、条件式选择是否渲染指定部分

代码:

1             var view = {2                 person: false3             };4             show(Mustache.render("eff{{#person}}abc{{/person}}", view));

 结果:

 

结论:

问题总是不断,如果我们还需要能够根据我们给的值,决定是否渲染某个部分。

那么现在就可以解决这个问题,当然还要提示的就是不仅仅是false会导致不渲染指定部分。

null,空数组,0,空字符串一样有效。语法上面比较简单,就是使用{{#key}} ... {{/key}}

来控制中间的内容。

 

五、循环输出

代码:

1             var view = {2                 stooges: [3                     { "name": "Moe" },4                     { "name": "Larry" },5                     { "name": "Curly" }6                 ]7             };8             show(Mustache.render("{{#stooges}}`name`<br />{{/stooges}}", view));

结果:

 

结论:

仅仅学会上面的方式,大部分地方你都解决了,但是还是会出现麻烦的地方。

就是循环输出,如果你一个一个写,相信会很烦躁,当然Mustache不会让我们失望,

它也给出了如何循环输出的方式,这里是将一个由对象组成的数组输出,如果我们

输出的是数组,就需要使用``.``来替代`name`。

 

六、循环输出指定函数处理后返回的值

代码:

 1             var view = { 2                 "beatles": [ 3                     { "firstname": "Johh", "lastname": "Lennon" }, 4                     { "firstname": "Paul", "lastname": "McCartney" } 5                 ], 6                 "name": function () { 7                     return this.firstname + this.lastname; 8                 } 9             };10             show(Mustache.render("{{#beatles}}`name`<br />{{/beatles}}", view));

 结果:

 

结论:

循环输出是有了,但是我们还想后期进行加工。那么这个完全符合你的需要,因为Mustache会将

数组中的值传递给你的函数,输出你函数返回的值。这里我们可以看到最外层是数组,只要在里面

使用函数那么外层的数组就会作为这个函数的参数传递进去。

 

七、自定义函数

代码:

1             var view = {2                 "name": "Tater",3                 "bold": function () {4                     return function (text, render) {5                        return render(text) + "<br />";6                     }7                 }8             }9             show(Mustache.render("{{#bold}}`name`{{/bold}}", view));

 结果:

 

结论:

上面我们都是用的变量作为节,那么我们现在用函数作为节,会有什么效果呢。

它会调用我们函数返回的函数,将节中间的原始字符串作为第一个参数,默认

的解释器作为第二个参数,那么我们就可以自行加工。

 

八、反义节

代码:

1 var view = {2                 "repos": []3             };4             show(Mustache.render("{{#repos}}``.``{{/repos}}{{^repos}}no repos{{/repos}}", view));

 结果:

 

结论:

上面我们也用节,但是仅仅只能选择是否输出某个部分。所以这里我们弥补一下。

如果我们使用了{{^和}}来定义节的话,那么这个部分只会在里面的值为空,null,

空数组,空字符串的时候才会显示。那么我们就可以实现了if else的效果了。

 

九、部分模板

代码:

 1             var view = { 2                 names: [ 3                     { "name": "y" }, 4                     { "name": "z" }, 5                     { "name": "f" } 6                 ] 7             }; 8             var base = "<h2>Names</h2>{{#names}}{{>user}}{{/names}}"; 9             var name = "<b>`name`</b>";10             show(Mustache.render(base, view, { user: name }));

 结果:

 

结论:

Mustache虽然节约了很多时间,但是我们定义了很多模板,但是彼此之间无法互相嵌套使用,也会造成繁琐。

所以这里我们还要介绍如何定义部分模板,用来在其他模板里面使用,这里使用其他模板的方式仅仅是{{>templetename}}。

最大的不同就是Mustache.render方法有了第三个参数。

 

十、预编译模板

代码:

1             Mustache.parse(template);2             //其他代码3             Mustache.render(template,view);

 

结论:

模板既然有好处,也有坏处。就是编译模板需要时间,所以在我们已知会使用某个模板的前提下,我们可以预先编译好这个模板,以便后面的使用。

Xamarin.Android -> Xamarin.IOS -> 混合 -> Xamarin.Forms

本文转自  陈小龙哈   51CTO博客,原文链接:http://blog.51cto.com/chenxiaolong/1702239

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256510.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Light OJ 1007

求区间欧拉函数平方和。。。 最后因为longlong 范围爆了WA 了&#xff0c; 0.0 #include<bits/stdc.h> using namespace std; const int maxn 5000000 131; typedef unsigned long long LL;bool Com[maxn]; LL Num[maxn], Prim[maxn / 3]; int Cnt;void INIT() {Num[1]…

MVC架构设计——EF-Code First

详情参考:http://www.cnblogs.com/guomingfeng/archive/2013/05/28/mvc-ef-repository.html转载于:https://www.cnblogs.com/shuai7boy/p/5807678.html

机器学习(一) 基于sklearn库的数据集划分(交叉验证)

机器学习中首要环节就是数据集的处理&#xff0c;其中数据集的处理从个人理解(如有错误敬请谅解)的角度来说包括两个方面&#xff1a;数据集划分和数据清理。其中数据集划分是指训练集、验证集和测试集的数据类别划分&#xff1b;数据清理是指数据的清洗、删除等等方面。这两天…

ANSYS——模态分析的理论基础

目录 一、模态分析理论基础 线性与非线性 振动与固有频率 振动方程与振动模态

购物中心潮--我的创业之路

2014年10一个月&#xff0c;我在中国大陆从北我的两个小伙伴跑到最南边中国内地。大半个中国删除更多。早在北京成立购潮商城。2014年11月&#xff0c;购潮商城正式上线。上线当天突破零订单。2014年12月&#xff0c;正式推广市场。渗透大学生校园。2015年2月至今&#xff0c;正…

敏捷项目开源管理软件ScrumBasic(2)- 多项目支持

1.加入Project对象模型 public class Project{[Key][MaxLength(32)]public string ID { get; set; }public string Name { get; set; }public int Order { get; set; }public ICollection<UserStory> Stories { get; set; }public ApplicationUser Creator { get; set; }…

postgresql表和列注释(描述)

2019独角兽企业重金招聘Python工程师标准>>> PostgreSQL添加表和列注释。本文为测试表test&#xff0c;默认无注释。 test# \d关联列表架构模式 | 名称 | 类型 | 拥有者 | 大小 | 描述 -------------------------------------------------public | test | …

ANSYS——模态提取方法简介

目录 block lancoze法 supspace(子空间法) powerdynamics reduced(缩减法) unsymmetric(非对称法) 阻尼法和QR阻尼法

python 使用小知识总结(持续更新ing)

这篇博客主要针对于使用python来进行深度学习/机器学习过程各方面小知识的总结。习惯于使用C这种严谨的语言&#xff0c;改换到python这门相对来说开放式的语言需要很多学习&#xff0c;而作为一个菜鸡&#xff0c;遇到编程问题解决了之后不到一周就会忘记&#xff0c;在此仅作…

Fifth scrum meeting - 2015/10/30

概述 从昨天开始&#xff0c;我们的开发工作终于进入了正轨&#xff0c;由于之前没有mooc服务器API接口&#xff0c;一些工作无法进行。 因为我们团队开始开发较晚&#xff0c;因此我们将开发阶段的截至时间定为了下周五&#xff0c;测试阶段则压缩为下周周六和周日两天。 我们…

计算机加入域 不能访问网络位置 解决办法

计算机加入域 不能访问网络位置 解决办法 启动以下服务 本文转自 onesthan 51CTO博客&#xff0c;原文链接&#xff1a;http://blog.51cto.com/91xueit/1660286&#xff0c;如需转载请自行联系原作者

ANSYS——模态分析的载荷施加问题以及约束的施加问题

本文续自《ANSYS入门——模态分析步骤与实例详解》:https://blog.csdn.net/qq_45769063/article/details/106389171 目录 1.模态分析的激励是从哪里来的?

【effective c++】继承与面向对象设计

1.确定你的public继承塑造出is-a关系 public继承意味着is-a.适用于base classes身上的每一件事情一定也适用于derived classes身上,因为每一个derived classes对象也都是一个base class对象&#xff0c;反过来不成立。 2.避免隐藏继承而来的名称 c名称查找不考虑类型&#xff0…

Android Camera HAL浅析

1、Camera成像原理介绍 Camera工作流程图 Camera的成像原理可以简单概括如下&#xff1a; 景物(SCENE)通过镜头&#xff08;LENS&#xff09;生成的光学图像投射到图像传感器(Sensor)表面上&#xff0c;然后转为电信号&#xff0c;经过A/D&#xff08;模数转换&#xff09;转换…

win10 下pycharm+anaconda 编译生成pyd文件

由于生产部署的问题&#xff0c;需要把用python写的深度学习代码编译为可被调用的文件。上网搜索了下&#xff0c;暂时了解到win10下pyd文件比较流行。下面是直接引用某位博主的结论&#xff0c;个人感觉总结的很好。其中Cython库将已有的Python代码转化为C语言的代码&#xff…

ANSYS——初学路径之路径的定义、作用以及ansys路径模块GUI的操作解释

目录 一、路径的定义 二、路径的作用 三、路径GUI相关操作面板解释 1、路径的定义

JVM(4)之 使用MAT排查堆溢出

为什么80%的码农都做不了架构师&#xff1f;>>> 接下来讲解如何设置以及当发生堆溢出的时候怎么排查问题。先看一小段代码&#xff1a;   代码中使用了一个无限循环来为list添加对象&#xff0c;如果采用默认的堆大小的话可能要等待好久才能出现堆溢出的错误&a…

caffe 中的一些参数介绍

转自&#xff1a;http://blog.csdn.net/cyh_24/article/details/51537709 solver.prototxt net: "models/bvlc_alexnet/train_val.prototxt" test_iter: 1000 # test_interval: 1000 # base_lr: 0.01 # 开始的学习率 lr_policy: "step" # 学习率的…

ANSYS——相同模型不同创建方式的同载荷同约束下的比较

目录 1、问题描述: 2、相同部分: 3、梁单元创建(BEAM) 4、实体单元创建

python 制作二进制文件数据集(bin)

为了方便进行深度学习的程序调用与实现&#xff0c;需要将excel的数据文件转换为二进制文件。好处就是接口统一&#xff0c;读写速度快&#xff0c;节约空间。 一、调用库 使用xlrd读入execel表格&#xff0c;经过处理后转换为对应的dataframe结构&#xff0c;再使用pickle库…