EJSで使う構文まとめ
会社でGulpでEJS触わる機会が多いので、よく使う構文をまとめておこうと思います。
基本
.html
<% var ejsRoot = './'; %> <%- include(ejsRoot + '_module/ejsFileName'); %>
.ejs
<!-- .htmlで出力するHTML -->
パラメータ指定
ボタンのコンポーネントをejs化するサンプル
.html
<%- include(ejsRoot + '_module/component/button', { buttonColor: 'red', buttonLink: '/path/', buttonText: 'ボタンのテキスト' }); %>
.ejs
<p class="button button--<%= buttonColor %>"> <a href="<%= buttonLink %>"> <%= buttonText %> </a> </p>
.html側でパラメータ指定がない場合はGulpでコンパイルエラーになるのを回避するには、
<% if( typeof buttonColor!='undefined' ){ %> <!-- ここに `buttonColor: 'hogehoge' が定義されている場合 --> <% } else { %> <!-- それ以外の場合 --> <% } %>
などとすると分岐してエラー回避できる。
参考: Using "if" to check variable before usage results in Error, Undefined · Issue #90 · tj/ejs
出力するバナーの個数をパラメータで指定する
.html
<%- include(ejsRoot + '_module/component/banner', { item: 4 }); %>
.ejs
<ul> <% for (var i=0; i<item; i++) { %> <li> <a href="#"> <img src="banner.png" alt=""> </a> </li> <% } %> </ul>
パンくずをパラメータで指定する
<%- include(ejsRoot + '_module/component/breadcrumb', { navigationList: [ { path: '/', label: 'ホーム' }, { path: '/parent/', label: '親階層ページ' }, { path: '', label: '子階層ページ' } ] }); %>
.ejs
<ol> <% for (var key in navigationList) { %> <% // .html 側に定義された path と label をループしてパンくずを生成 var path = navigationList[key].path; var label = navigationList[key].label; %> <li> <% if ( path === '' ) { %> <span class="current"> <%= label %> </span> <% } else { %> <a href="<%= path %>"> <%= label %> </a> <% } %> </li> <% } %> </ol>