2015/02/01

[underscore.js]templateメソッドのエスケープについて

最近知ったのですが、underscore.jsのtemplateメソッドは、htmlをエスケープするかどうか決めることができるようです。

<div id="hoge"></div>
<div id="bar"></div>
<script>
jQuery(function($){

  var _t = _.template("hello: <%= name %>");
  $('#hoge').append(_t({name:'<span>hello</span>'}));

  var _t = _.template("hello: <%- name %>");
  $('#bar').append(_t({name:'<span>hello</span>'}));

});
</script>
これ実行した結果、
hello: hello
hello: <span>hello</span>
となった。

つまり、
<%= %>で囲まれた部分はhtmlが実行された。

<%- %>で囲まれた部分はhtmlがエスケープされた。

0 コメント:

コメントを投稿