Skip to content

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