できれば「unsafe-eval」を設定せずに Chrome 拡張機能でサポートされている、ある種の JavaScript テンプレート エンジンを探しています。
ここで他の質問を見ると、展開前にテンプレートを事前にコンパイルすることが提案されていますが、「ユーザー」がその場でテンプレートを変更することを許可したくないため(プラグインオプションを介して)、それはうまくいきません。 ..これは、ユーザーがコードを挿入できるようにすることを意図していないため、「unsafe-eval」を必要としないテンプレートエンジンが必要な理由でもあります。JSON オブジェクトのプロパティを使用する非常に単純なテンプレートを作成するだけです。
文字列の置換でほぼ十分です...しかし、ほとんどだけで、いくつかの簡単な評価も必要です...
私はしばらく doT.js を使用してきましたが、これは十分に単純なので、そのセマンティクスに隣接するか、より単純なものです。
これは、doT でのシンプルさの例です...
<div class="card">
<header class="header {{= it.type }}">
<div class="project_id">
<div class="project">{{= it.project }}</div>
<div class="id">{{= it.id }}</div>
</div>
<div class="title">
<div class="nooverflow">{{= it.type }}: {{= it.summary }}</div>
</div>
<div class="sizeheader_size">
<div class="sizeheader">RELATIVE SIZE</div>
<div class="size">{{= it.estimate }}</div>
</div>
</header>
<section class="description">
<div class="nooverflow">{{= it.description }}</div>
</section>
<footer class="footer">
<div class="hours">
<span class="marked"></span>
<span class="{{?? it.days > 1 }}marked{{??}}"></span>
<span class="{{?? it.days > 2 }}marked{{??}}"></span>
<span class="{{?? it.days > 3 }}marked{{??}}"></span>
<span class="{{?? it.days > 4 }}marked{{??}}"></span>
<span class="{{?? it.days > 5 }}marked{{??}}"></span>
<span class="{{?? it.days > 6 }}marked{{??}}"></span>
<span class="{{?? it.days > 7 }}marked{{??}}"></span>
<span class="{{?? it.days > 8 }}marked{{??}}"></span>
<span class="{{?? it.days > 9 }}marked{{??}}"></span>
</div>
<div class="priorityheader_priority">
<div class="priorityheader">PRIORITY</div>
<div class="priority">{{= it.priority }}</div>
</div>
</footer>
</div>
ご覧のとおり、これは最も複雑な条件ではありません...