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