
変数にテキストや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 | MDNcategories
- WordPress(61)
- JavaScript(49)
- Vue.js(48)
- CSS(46)
- jQuery(34)
- Nuxt.js(22)
- Sass(21)
- Gulp(17)
- webpack(16)
- PHP(14)
- HTML(14)
- GSAP(11)
- React(10)
- Vite(9)
- Pug(9)
- Laravel(8)
- Cordova(8)
- Linux(7)
- Next.js(6)
- Apache(5)
- Shopify(4)
- REST API(4)
- Node.js(4)
- Smarty(3)
- Git(3)
- JSON(3)
- その他プログラミング(3)
- Google Apps API(3)
- Bootstrap(3)
- 環境構築・システム(3)
- TypeScript(2)
- EJS(2)
- RMS(2)
- Docker(2)
- Instagram API(2)
- Excel VBA(2)
- SVG(1)
- Dart(1)
- ECカートASP(1)
- Markdown(1)
- AMP(1)
- Nginx(1)
- XML(1)
- shellscript(1)
- Ruby(1)
- MySQL(1)