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.pswp.cn/news/256510.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256510.shtml
英文地址,請注明出處:http://en.pswp.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庫…