mustache.jsの使い方
mustache.js(マスタッシュ)はJavaScriptのテンプレートエンジンです。Node-REDのtemplateノードでもMustache記法が使用できるようです。
ブラウザでの使用方法
プリロードして使います。
<script type="text/javascript" src="http://www.example.com/js/mustache.min.js"></script>
簡単な使い方を紹介します。
{{と}}で囲んだ部分がタグとして認識されます。
例えばテンプレートは以下のようにあらわされます。
var template = "Hello {{data}}";
{{data}}が何かに置き換わるのが予想されると思います。
このテンプレートに置換文字を渡して表示するにはMustache.render()メソッドを使用します。
第一引数にテンプレートを格納した変数、第二引数にオブジェクトをセットします。
オブジェクトは以下の形式にします。
{data:置換したい文字列}
具体的には以下のようにします。
var template = "Hello {{data}}";
var html = Mustache.render( template, {data:"World."});
DEMO
オブジェクトには関数を渡したりすることができます。
var template = "My name is {{name}}.My age is {{age}}.";
var view = {name:"Bob",age:function(){return 12*2;}};
var html = Mustache.render(template,view);
オブジェクトの値にhtmlタグが含まれている場合です。<は<、>は>といったようにエスケープされます。
var template = "My name is {{name}}.My age is {{age}}.";
var view = {name:"Bob",age:"<b>23</b>"};
var html = Mustache.render(template,view);
これをエスケープせずに表示したい場合は{{{と}}}で囲みます。
var template = "My name is {{name}}.My age is {{{age}}}.";
var view = {name:"Bob",age:"<b>23</b>"};
var html = Mustache.render(template,view);
{{&と}}で囲んでもエスケープされません。
var template = "My name is {{name}}.My age is {{&age}}.";
var view = {name:"Bob",age:"<b>23</b>"};
var html = Mustache.render(template,view);
{{=<% %>=}}と<%={{ }}=%>で囲んだ部分は置換されずにそのまま表示されます。
そのため、この間に{{age}}としてもそのまま{{age}}が表示されます。
var template = "My name is {{name}}.My age is {{=<% %>}}{{&age}}<%={{ }}=%>.";
var view = {name:"Bob",age:"23"};
var html = Mustache.render(template,view);
{{!と}}で囲んだ部分はコメントです。
var template = "{{!comment}}My name is {{name}}.My age is {{age}}.";
var view = {name:"Bob",age:"23"};
var html = Mustache.render(template,view);
DEMO
テンプレートエンジンなので通常はjQueryと併用してhtmlやjspに記述します。
以下のようなhtmlがあったとします。
<script type="text/javascript">
$(function(){
var template=$("#template").html();
var arr=[{id:1,content:"AA"},{id:2,content:"BB"},{id:3,content:"CC"}];
for(var i=0;i<arr.length;i++){
var html = Mustache.render(template,arr[i]);
$("h3").append(html);
}
});
</script>
<body>
<h3></h3>
<script id="template" type="x-tmpl-mustache">
<div id="{{id}}">{{content}}</div>
</script>
</body>
h3タグ内に、テンプレートをviewの数だけループして表示しています。
DEMO

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
資格:少額短期保険募集人,FP3級,宅建士
コメント