MENU

なぜEJSを使うとコーディングが楽しくなるのか② header共通化編

静的コーディングが圧倒的に楽になる、EJS。
前回は、forEach文で同じ要素を繰り返す方法についてまとめました。

あわせて読みたい
なぜEJSを使うとコーディングが楽しくなるのか① forEach編 静的コーディングって大変ですよね。特に長いページだと、HTMLの記述量が多くて混乱する。コード量が多くなると修正漏れも出てきて地獄。 自分もずっと悩んでたのですが...

2回目の今回は、「header」の共通化についてまとめます。
headerを共通化できるだけでもかなりの時短につながります。

目次

headerを毎回書くのはめんどくさい

仮に5ページくらいの静的コーディングをするとき。
全てのページにheaderとfooterを記述するのはマジでめんどくさいです。

1箇所修正しようとすると5ページ分修正をかけないといけないし、
コード量も多くなり混乱してしまいます。

HTMLでそのまま書く場合と、EJSで書く場合で比較します。

①HTMLでそのまま書く場合

<body>
  <!-- ヘッダー部分 -->
  <header class="header">
    <nav>
      <ul class="nav-list">
        <li><a href="/top">Top</a></li>
        <li><a href="/contact">Contact</a></li>
        <li><a href="/news">News</a></li>
        <li><a href="/blog">Blog</a></li>
        <li><a href="/about">About</a></li>
      </ul>
    </nav>
  </header>

  <!-- メインコンテンツ -->
  <main>
    <h1>トップページへようこそ</h1>
    <p>ここにコンテンツを追加します。</p>
  </main>
</body>

上記の記述をページ数分繰り返し記述しないといけません。
今回はシンプルなヘッダーですが、ハンバーガーメニューなどがある場合100行近くになります。
これを全てのページで書くのは非常にめんどくさい….

②EJSを使う場合

・まずはheader.ejsというファイルを作り、その中にheaderのhtmlを書きます。
(wordpressみたいな感じ。)

header.ejs

<header class="header">
  <nav>
    <ul class="nav-list">
      <li><a href="/top">Top</a></li>
      <li><a href="/contact">Contact</a></li>
      <li><a href="/news">News</a></li>
      <li><a href="/blog">Blog</a></li>
      <li><a href="/about">About</a></li>
    </ul>
  </nav>
</header>

②header.ejsを各ページで呼び出す
次に各ページでheader.ejsを呼び出します。

<body>
  <!-- ヘッダーをインクルード -->
  <%- include('header.ejs') %>

  <!-- メインコンテンツ -->
  <main>
    <h1>トップページへようこそ</h1>
    <p>ここにコンテンツを追加します。</p>
  </main>
</body>

ポイントは、<%- include(‘header.ejs’) %> という部分。
この部分でheaderを呼び出せます。

例え100行を超えるheaderだろうと、
<%- include(‘header.ejs’) %>というたった1行書くだけでheaderを表現できます。

もしも修正が必要なときは、header.ejsを変えるだけで良いので効率的です。
1箇所だけの修正はミスも減るし、ファイルも短くなってコーディングも楽になります。

少しの工夫だけど、効率はものすごく上がる。

ちょっとした工夫ですが、積み重なればものすごい効率化につながります。
特にheaderやfooterなどの共通化は、簡単な割に効果は絶大ですのでおすすめです。

今回の記事が少しでも参考になれば幸いです。

もしも質問などあれば、コメント欄かXのDMよりお気軽にご連絡ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

リゾバ→工場→牧場と転々とした後、フロントエンジニアに。
現在はWebコーダーとして、Web制作に特化した学習記録をアップしています。

X→https://twitter.com/yuhi1321
note→https://note.com/yuhi1321

コメント

コメントする

目次