テンプレートを利用して、コンパイル!!
<script type="text/x-handlebars-template" id="template">
<!-- Wonder$$.html --> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="description" content="Bulma Handlebars" /> <title>Bulma Project Handlebars</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.1/css/bulma.min.css" /> <script defer src="https://use.fontawesome.com/releases/v5.7.1/js/all.js" ></script> <script src="https://cdn.jsdelivr.net/npm/handlebars@latest/dist/handlebars.js"></script> <script src="../../js/shortBulma$$.js"></script> <script src="../../js/shortHbs$$.js"></script> <script id="template" type="text/x-handlebars-template"> <div class='columns'> <div class='column is-8 is-offset-2'> <div class='box'> <h1 class='notification title has-background-info-dark has-text-white' > {{bold title}} </h1> {{#people}} <ul class='panel'> <li> <h1 class='panel-block subtitle has-background-info-light'> {{bold name}} </h1> </li> <li class='ml-5'> 年齢:{{age}} </li> <li class='ml-5'> メール: <a href='mailto:{{email}}'> {{email}} </a> </li> </ul> {{/people}} </div> </div> </div> </script> </head> <body> <section class="section"> <div class="container"> <div class="columns has-background-white-bis"> <div class="column"></div> <div class="column is-10 mt-4"> <article class="message is-primary"> <div class="message-header subtitle"> <p>初めての [<strong>Handlebars</strong>]</p> </div> <div class="notification has-background-primary-light mb-1"> <h1 class="subtitle">テンプレートを利用して、コンパイル!!</h1> <div class="subtitle"> <script type="text/x-handlebars-template" id="template"> </div> </div> <div class="message-body has-background-grey-lighter" style="border-bottom: inset 2px #aaaa88" > <p>シンプルな <strong>helper関数:bold</strong></p> </div> </article> <main> <div id="contents"></div> <hr /> </main> <div class="box"> <div class="box"> <h2 class="is-size-4 has-background-white-ter p-2 km">解説</h2> <div class="content"> <ul> <li> BulmaでJavascriptを利用するために、このWebサイトでは<br /> <a href="/sub/js/shortBulma.html" ><strong>shortBulma$$.js</strong> または <strong>shortBulma.js</strong></a ><br /> というライブラリを使います。 </li> <li class="pt-2"> 使い方の例:<script src="/src/js/shortBulma$$.js"></script><br /> headタグ内に挿入。但し、pathは状況によって変わります。 </li> <li class="pt-2"> <p class="pt-3 px-3"> 例えば、notification$$.htmlとshortBulma$$.jsが同じフォルダにある時は<br /> <script src="./shortBulma$$.js"></script> または<br /> <script src="shortBulma$$.js"></script> となります。 </p> </li> <li> 同じく、handlebars用に<br /> <a href="/sub/js/shortBulma.html" ><strong>shortHbs$$.js</strong></a ><br /> というライブラリを使います。 </li> <hr> <li class="pt-1"> <dl> <dt> <strong >$$qtFnqT('#template', v, '#contents');</strong > </dt> <dd class="py-2"> テンプレート#templateをコンパイルし、コンテキストvを適用して得られたHTMLコードを、要素#contentsのinnserHTMLプロパティに代入する。 </dd> </dl> </li> </ul> </div> </div> </div> </div> <div class="column"></div> </div> </div> </section> <script type="text/javascript"> let v = { title: '素敵な人々', people: [ { name: 'John', age: 34, email: 'john@gmail.com', }, { name: 'Sally', age: 22, email: 'sally12@gmail.com', }, { name: 'George', age: 45, email: 'george@hotmail.com', }, ], }; Handlebars.registerHelper('bold', function (text) { text = Handlebars.escapeExpression(text); return new Handlebars.SafeString('<b>' + text + '</b>'); }); $$qtFnqT('#template', v, '#contents'); </script> </body> </html>
例えば、notification$$.htmlとshortBulma$$.jsが同じフォルダにある時は
<script src="./shortBulma$$.js"></script> または
<script src="shortBulma$$.js"></script> となります。