at.pkgs.Template

underscore.jsテンプレート相当のテンプレート処理を提供します。

テンプレートの記述

デフォルトのテンプレートブロックのデリミタは下記の通りになっています。 このデリミタは変更できます(後述)。

{% ... %}

このブロックはJavaScriptコードとして実行されます。

{% ... %%}

{% ... %}と同様ですが、後続の改行コードを1組抑制します。

{= ... =}

このブロックの式を評価し、エスケープ処理した後出力されます。 エスケープ処理は「<>'"&」を実体参照に変換するHTMLエスケープ相当の処理を行いますが、この挙動は変更できます。

{= ... ==}

{= ... =}と同様ですが、後続の改行コードを1組抑制します。

{@ ... @}

このブロックは式を評価し、直接(エスケープなどされずに)出力されます。 nullundefinedは空文字として出力されますが、この挙動は変更できます。

{@ ... @@}

{@ ... @}と同様ですが、後続の改行コードを1組抑制します。

使用例

テンプレート処理

var template;

template = at.pkgs.template('\
  あいうえお\
  {% if (a) { %}\
  aaaa\
  {% } else { %}\
  bbbb\
  {% } %}\
  cccc\n\
  {@ b.c + 1 @}\
  {= d =}\
  zzzz\
  cccc');
console.log(template({ a: false, b: { c:2 }, d:'aa' }));
//   あいうえお    bbbb    cccc  3  aa  zzzz  cccc

デリミタの変更

下記のようにデリミタが変更できます。 同様にデフォルトのHTMLエスケープ処理を差し替え可能です。 詳細はAPIリファレンスを参照してください。

var template;

at.pkgs.TemplateEngine.instance.pattern = /<%([\s\S]*?)(%?)%>|<=([\s\S]*?)(=?)=>|<@([\s\S]*?)(@?)@>|$/g;
template = at.pkgs.template('\
  あいうえお\
  <% if (a) { %>\
  aaaa\
  <% } else { %>\
  bbbb\
  <% } %>\
  cccc\n\
  <@ b.c + 1 @>\
  <= d =>\
  zzzz\
  cccc');

ファクトリの使用

デリミタの変更などをテンプレートエンジンごとに行うためにコンストラクタが使用可能です。

var engine;
var template;

engine = new TemplateEngine();
engine.escape = function (source) { ... };
template = engine.prepare(source);
Copyright (c) 2009-2014, Architector Inc., Japan.
Documentation generated by JSDoc 3.2.0 on Tue Aug 26 2014 22:27:18 GMT+0900 (JST) using the DocStrap template.