Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

a-template.js

Simple Template Engine used for gulp-generator

example

<script id="search" type="text/template">
 <input type="text" data-bind="search" data-action-input="update">
 <ul>
 <!-- BEGIN result:loop -->
 <li>{name}-{id}</li>
 <!-- END result:loop -->
 </ul>
</script>
<script>
var list = new aTemplate({
templates:["search"],
data:{
 search:"",
 list:[
 {name:"tomomi",id:0},
 {name:"daigo",id:1112},
 {name:"taro",id:11113},
 {name:"koike",id:1114},
 {name:"aboki",id:1115},
 {name:"tetsuro",id:1116},
 {name:"takahashi",id:1117},
 {name:"suzuki",id:1118},
 {name:"okazaki",id:1119},
 {name:"aoi",id:1120},
 ],
 result:function(){
 var search = this.data.search;
 var list = this.data.list;
 return list.filter(function(str){
	 var id = str.id+"";
	 return str.name.indexOf(search) >= 0 || id.indexOf(search) >= 0;
 });
 }
},
}).update();
</script>

セキュリティ上の注意 (XSS)

a-template.js はテンプレートの描画に innerHTML / insertAdjacentHTML を使用しています。 {key} に展開される値や data に渡す値は HTML としてそのまま挿入されるため、 ユーザー入力など信頼できない文字列を エスケープせずに data へ渡すと XSS (クロスサイトスクリプティング) の原因になります。

信頼できない値をテンプレートに渡す場合は、あらかじめ HTML エスケープするか、 DOMPurify 等のサニタイズライブラリを通してから data にセットしてください。

About

Simple Template Engine

Topics

Resources

Stars

9 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /