swig|htmlのヘッダ・フッタの共通化などで実装を効率化する

swightmlの実装すれば、htmlのヘッダーやフッターの共通化などができ、htmlの管理・実装の効率が格段に上がります。

swigとは、テンプレートエンジンの1つで、htmlの中に変数やif文やfor文などのプログラムを書き足して、それをhtmlに変換することができます。

また、phpなどのサーバ言語と違い、ローカルでコンパイルしてhtmlファイルを作成できるので、レンタルサーバーとの契約でサーバ言語が使えない場合でも簡単に導入することができます。

今までどおり、htmlファイルをレンタルサーバに置くだけです。

swigを使った具体例

例えば下記のようなホームページ(html)があるとします。

<!DOCTYPE HTML>
<html>

<head>
  <title>サンプルホームページ</title>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>

<body>
  <!-- 共通ヘッダー -->
  <header>
    swigでhtmlを効率化する方法
  </header>

  <h1>swigとは</h1>
  swigでhtmlの実装しすれば、htmlのヘッダーやフッターの共通化などができ、htmlの管理・実装の効率が格段に上がります。

  <!-- 共通フッター -->
  <footer>
    コピーライト
    問い合わせ先
  </footer>
</body>
</html>

おそらくほとんどの画面でhead部分と共通ヘッダーと共通フッターの部分は共通になる思います。

10ページくらいhtmlで作りこんだあとに、「やっぱり共通ヘッダーのレイアウトを変えたい」となった場合に、すべてのhtmlを直さなければいけなくなります。

しかしswigで実装すれば、ヘッダー部分などを別ファイルにすることができます。なので各画面ではその別ファイルを読み込むだけでいいので、すべての画面で実装し直す手間がなくなります。

まず1ページごとのhtml(拡張子は.swigに変換します)は下記のようになります。

sample.swig
{% include './head.swig' %}

  <h1>swigとは</h1>
  この部分のみ各画面で実装するだけです!!

{% include './foot.swig' %}

上記ソースでincludeしているファイルを作成します。

head.swig
<!DOCTYPE HTML>
<html>

<head>
  <title>サンプルホームページ</title>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>

<body>
  <!-- 共通ヘッダー -->
  <header>
    swigでhtmlを効率化する方法
  </header>

foot.swig

  <!-- 共通フッター -->
  <footer>
    コピーライト
    問い合わせ先
  </footer>
</body>
</html>

gulpを使ってswigをコンパイルする方法

swigからhtmlに変換する方法ですが、gulpというツールを利用すると簡単に変換することができます。

gulpの使い方についてはgulp|gulpの基本的な使い方で詳しく紹介しています。

まずプラグインをインストールします

$ npm install --save-dev gulp-swig

そしてgulpのタスクを作成し、実行するだけでdestで指定した場所に変換されたhtmlファイルが出来上がります。

var swig = require('gulp-swig');

gulp.task('swig', function() {
  gulp.src('sample.swig')
    .pipe(swig())
    .pipe(gulp.dest('dest'));
});

関連記事

  • watchifyとgulpで自動コンパイルと差分更新をおこなう

    vuejsの開発環境を構築するでvueをビルドする環境を作成しました。今回は開発環境をさらに便利にするために、ファイルが変更されたら自動でビルドを実行し、ブラウザをリロードする処理を実装します。開発用...


  • 拡張メタ言語を使用して静的ホームページを簡単に作成する

    ちょっとしたホームページやブログを作成するとき、どのように作成しているでしょうか?最初はhtmlやcssをそのままテキストエディタなどで書いて作成していたが、ページ数が多くなるにつれ管理が大変になり、...


  • テンプレートエンジンのnunjucksとhighlight.js組み合わせる

    便利なテンプレートエンジンのnunjucksのテンプレートの中で、コードをシンタックスハイライト(色付け)する便利なライブラリのhighlight.jsを組み込む方法を紹介します。nunjucksのコ...


  • Nunjucksで独自のファンクションを実行する

    Nunjucksのテンプレートファイルに独自に定義した別ファイルのファンクションを実行する方法を紹介します。gulpでコンパイルする場合を想定しています。gulp-nunjucks-renderでNu...


  • Nunjucksの基本的な使い方 -extends,block,include-

    htmlのおすすめテンプレートエンジンNunjucksがとても便利なのですが、日本語のページがほとんど見当たらなかったので、基本的な使い方を紹介します。ホームページを作成していると、htmlのヘッダと...


  • npmのpackage.jsonを最新のバージョンに更新する

    package.jsonのパッケージを最新のバージョンに更新する方法を紹介します。npmは以下のコマンドを実行すれば、package.jsonに記載されているバージョンに更新されます。最新のバージョン...


  • less|cssに変数を使い実装を効率化する方法

    ホームページを作っていて、規模が大きくなっていくにつれ、気をつけていてもcssのソースはグチャグチャになってしまい、後で見返したときに「これはどこのスタイルだっけ?」となってしまうことがあると思います...


  • gulpの便利なタスク gulpfile.jsの記述例

    gulpの便利なおすすめプラグインで紹介したプラグインなどを利用したgulpの便利なタスクの実装例を紹介します。less,js,htmlのコンパイルや軽量化、watchとlivereload、エラー時...


  • gulp|watchやlivereloadのタスクを停止する方法

    gulpでwatchやlivereloadを停止したい場合、ctrl+Cで停止することができますが、sublime textやatomのプラグインからwatchなどを起動した場合、ctrl+Cで停止す...


  • gulpでディレクトリ構造を維持したままdestにコピーする

    gulpで以下のようなフォルダ構成で、page.html、page2.htmlをそれぞれのフォルダ配下のフォルダにコピーする場合、普通にdestを指定するだけではうまくいかないことがあります。以下のよ...