OWNED MEDIAウェブ制作に役立つコンテンツを発信中!

変数にテキストやHTMLを入れる時に役立つテンプレートリテラルとプレースホルダー

JavaScriptで動的に出力するHTMLや、複数行に渡るテキストを変数へ格納するようなケースにおいては、改行は「n」のコードで指定する必要があったり、文字列や変数を扱うときには「+」で繋ぐ必要があるなど色々とわかりにくい点がありました。javascriptの新しい仕様であるES6では、テンプレートリテラルとプレースホルダーというものが使えるようになっており、HTMLや複数行のテキストを扱う際にとても便利になっています。   例えば、HTMLをJavaScriptで動的に出力し、テキストを変数で持たせたいといったケースでは、従来ですとこのような記述になるかと思います。(分かりやすいようにインデントをつけています) 【javascript】
const elem = document.getElementById('box');
const first_item = '飛行機';
const second_item = '新幹線';
const third_item = '自動車';
const h = '<ul>'
        + '<li>'
        + first_item
        + '</li>'
        + '<li>'
        + second_item
        + '</li>'
        + '<li>'
        + third_item
        + '</li>'
        + '</ul>';
elem.insertAdjacentHTML('beforeend',h);
  上記のコードでは、コードの可読性を上げるために改行とインデントを使っていますが、それぞれの文字列は「+」で繋げている形になります。また変数などもそのまま文字列内では使えないため、分けて書く必要があります。これを実際に実行すると下記のようなHTMLが出来上がります。 【HTML】
<div id="box">
 <ul>
  <li>飛行機</li>
  <li>新幹線</li>
  <li>自動車</li>
 </ul>
</div>
  では、同じ形でES6のテンプレートリテラルとプレースホルダーを使う方法を見ていきます。テンプレートリテラルは開始と終了を「 ` (バッククオート)」で囲むことで、その中ではそのまま自由に改行することができます。また、テンプレートリテラルの中で変数や数式を使うには「 ${ ・・・ } 」で囲むプレースホルダーを用いることで可能になります。 【javascript】
const elem = document.getElementById('box');
const first_item = '飛行機';
const second_item = '新幹線';
const third_item = '自動車';
const h = `
 <ul>
  <li>${first_item}</li>
  <li>${second_item}</li>
  <li>${third_item}</li>
 </ul>`;
elem.insertAdjacentHTML('beforeend',h);
  このようにテンプレートリテラルとプレースホルダーを使うことで、コーディングしやすくなったり、可読性が上がるようになります。ただし、これらはES6で使える仕様になりますので、いろんな環境に適用させるためにはBabelでES5の記述に変換する必要があります。Babelの環境構築が必要になりますが、とても便利な機能なのでコーディングの効率化のためにもぜひ積極的に使っていきたいですね。   (参考にさせて頂いたサイト) テンプレート文字列 - JavaScript | MDN
  • はてなブックマーク
  • Pocket
  • Linkedin
  • Feedly

この記事を書いた人

Twitter

SPONSORED

    KEYWORD SEARCH

    RECENT POSTS

    合同会社デザインサプライ -DesignSupply. LLC-

    サイト制作・開発 / 各種デザイン制作 / ウェブプロモーション企画

    合同会社デザインサプライ(DesignSupply. LLC)

    Office:大阪府大阪市天王寺区清水谷町3-22
    Email:info@designsupply-web.com
    • Twitter
    • Github
    CONTACT USSCROLL TO TOP
      • Facebook
      • Twitter
      • Github
      • Instagram