[Front-End General] テンプレートエンジン JsRender を利用する

JsRender を利用して、レイアウトとロジックを分離する。
jQuery には依存しないので、単体で導入可能。

[markdown]

– jQuery 3.1.0
– jsrender 0.9.81

## jQuery で書いたサンプル

JavaScript 内で HTML を組み立てて、append する。
量が多くなると HTML の修正や、そもそも HTML と JavaScript が分業であった場合などに問題が起こりがち。

“`javascript
.done((data) => {
$(‘#comment’).empty();
$(‘#count’).text(data.count + ‘件’);
$.each(data.bookmarks, (index, value) => {
let c = value.comment;
let t = value.timestamp;
if (c !== ”) {
$(‘

  • ‘ + t + ‘: ‘ + c + ‘
  • ‘).appendTo(‘#comment’);
    }
    });
    })
    “`

    > * [jQuery Ajax $.getJSON | deadwood](https://www.d-wood.com/blog/2016/07/06_8261.html)

    ## JsRender を利用したサンプル

    JsRender を利用して、レイアウトとロジックを分離する。

    > * [JsRender/JsViews](http://www.jsviews.com/#jsrender)

    JavaScript では、テンプレートの `id` に対して `.render(data)` でレンダリングする。

    “`javascript
    .done((data) => {
    $(‘#comment’).empty();
    $(‘#count’).text(data.count + ‘件’);
    $(‘#comment’).append($(‘#bm’).render(data));
    })
    “`

    HTML テンプレート側に表示系を `{{ }}` を利用して書く。
    `>` でエスケープして出力。
    if や for も View template 側で利用でき、可読性もあまり落ちない。

    “`html

    “`

    こちらが分かりやすい。

    > * [JavaScriptのテンプレートJsRenderとJsViewsの紹介 – Qiita](http://qiita.com/mima_ita/items/628bf36dd453cf85bf7d)
    > * [徹底解説JsRender/JsViews連載一覧:CodeZine(コードジン)](https://codezine.jp/article/corner/496)

    See the Pen JsRender & Ajax $.getJSON by DriftwoodJP (@DriftwoodJP) on CodePen.

    ### Haml 内に書く場合の書式

    下記のように `id` と `type` を渡す必要がある。
    `:javascript` filter でエラーがでたりで困った。

    “`javascript

    未来の自分をターゲットに、学んだことをメモするWeb系Macのひと。

    このブログ記事は、公開日を基準に以下の macOS バージョンと対応しています。

    • Apple シリコン
      • 13.4.1 … 2023/06/24 -

    Archives