LoginSignup
4
0

More than 3 years have passed since last update.

EJS触ってみた

Last updated at Posted at 2019-10-28

EJS触ってみた

今回たまたま参加した案件で使っていたので、色々と調べつつ書いてみた。

EJSとは?

What is the "E" for? "Embedded?" Could be. How about "Effective," "Elegant," or just "Easy"? EJS is a simple templating language that lets you generate HTML markup with plain JavaScript. No religiousness about how to organize things. No reinvention of iteration and control-flow. It's just plain JavaScript.

google翻訳で見ると

「E」とは何ですか?"埋め込み?" になり得る。「効果的」、「エレガント」、または「簡単」はどうですか?EJSは単純なテンプレート言語であり、プレーンJavaScriptを使用してHTMLマークアップを生成できます。物事を整理する方法についての宗教性はありません。反復および制御フローの再発明はありません。それは単なるJavaScriptです。

おそらく
EJSとはテンプレート言語でJavaScriptを使ってhtmlを生成できるらしい。

実際に書いてみた例

ページごとに変数を入れ、固定パーツを作成

配列を変数metadataに入れそれを各パーツに渡して行く。
例)大本のテンプレート

<% var metadata = {days:'2019/xx/xx', category:'カテゴリー', title:'タイトル'}; %>
<%- include('days', {data:metadata}); %>
<%- include('category', {data:metadata}); %>
<%- include('title', {data:metadata}); %>

例)呼び出しているパーツの中身

<h1><%- data.title %></h1>

それで出力されるのが

<h1>タイトル</h1>

こんな感じで、変数を渡しパーツを生成することができる、しかも配列にできるので一気に値を設定でき楽ちん!

forとifで階層があるリストを作成

  • リスト
    • リスト
    • リスト
    • リスト
  • リスト
  • リスト

上記リストをejsパーツ化してみた。

まず変数定義

<% var list = ['リスト1','リスト2','リスト3','リスト4']; %>
<!-- 何個目に下層リストを入れるか(index番号) -->
<% var child = ['0','2']; %>
<% var childarr = [['リスト1の小リスト1','リスト1の小リスト2','リスト1の小リスト3'],['リスト3の小リスト1','リスト3の小リスト2']]; %>

パーツを呼び出し

<%- include('list', {li:list, child:child, childarr:childarr}); %>

パーツで変数を展開

<ul>
  <% for (var i = 0; i < li.length; i++) { %>
    <li><%- li[i] %>
    <% if ( child !=='') { %>
      <% for (var j = 0; j < child.length; j++) { %>
        <% if ( child[j] == i) { %>
          <ul>
            <% for (var q = 0; q < childarr[j].length; q++) { %>
              <li><%- childarr[j][q] %>
            <% } %>
          </ul>
        <% } %>
      <% } %>
    <% } %>
    </li>
  <% } %>
</ul>

すると

<ul>
  <li>リスト1
    <ul>
      <li>リスト1の小リスト1</li>
      <li>リスト1の小リスト2</li>
      <li>リスト1の小リスト3</li>
    </ul>
  </li>
  <li>リスト2</li>
  <li>リスト3
    <ul>
      <li>リスト3の小リスト1</li>
      <li>リスト3の小リスト2</li>
    </ul>
  </li>
  <li>リスト4</li>
</ul>

と出力されます。

触ってみて

パーツベースの中から大規模案件でものすごい力を発揮しそう書くのが楽、設計段階をきっちりしなくてもある程度修正は聞くと思われる(変数の渡し方でどうにかなりそう)
逆にそのパーツ一回しか使わないもの、LPや個性的なページの案件ではpugとか使って書いたほうが早い。

もっと有用な使い方はあると思うので色々発見していきたいです。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0