Nodeで動くテンプレートエンジンJadeを使ってみる

Nodeで動くテンプレートエンジンJadeを使ってみる

あまちゃんのブルーレイBOXが欲しいminamiです。

Node.js上で動くテンプレートエンジン、Jadeを使ってみました。

Jadeってなに

JadeはJST(JavaScript Templates)の一つでHamlなどに影響を受けています。Node.jsで動かすことができます。Express.js のような、Webアプリケーション用フレームワークのテンプレートエンジンとして採用されていますが、静的なコンテンツを作る際にも便利かも?ということで使ってみました。

インストールする

Nodeとnpmがインストールされている環境なら

$ npm install -g jade

というコマンドをたたくだけでインストールできます。

$ jade --version

でバージョン情報が表示されれば準備完了です。

Jadeでテンプレートを書く

Jadeの記法にはいくつかポイントがあります。

  • doctype宣言は "!!!" というショートハンドで書ける
  • インデントで階層構造を表す
  • 閉じタグ不要
  • 属性は()で付与、,で区切る
  • CSSセレクタと同様の書き方ができる
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; chaeset=utf-8">
    <meta name="description" content="コンテンツの説明です。コンテンツの説明です。コンテンツの説明です。コンテンツの説明です。コンテンツの説明です。">
    <meta name="keywords" content="キーワード1です,キーワード2です,キーワード3です">
    <meta http-equiv="imagetoolbar" content="no">
<title>タイトルです</title> </head> <body> <h1>ここが大見出しです</h1> <h2>次の見出しです</h2> <p>文章が入ります。文章が入ります。文章が入ります。文章が入ります。文章が入ります。文章が入ります。</p> </body> </html>

上のようなHTMLを出力するにはJadeでは以下のように書きます。

!!!
html
  head
    meta(http-equiv="content-type",content="text/html; chaeset=utf-8")
    meta(name="description",content= "コンテンツの説明です。コンテンツの説明です。コンテンツの説明です。コンテンツの説明です。コンテンツの説明です。")
    meta(name="keywords",content= "キーワード1です,キーワード2です,キーワード3です")
    meta(http-equiv="imagetoolbar",content="no")
    title タイトルです
  body
    h1 ここが多見出しです
    h2 次の見出しです
    p 文章が入ります。文章が入ります。文章が入ります。文章が入ります。文章が入ります。文章が入ります。

先ほど説明した特長がでていますね。Jadeではインデントで階層を判断するため、インデント合わせは重要です。文書内で統一されていればインデント数自体は特に決まっていません。

Jadeをコンパイルする。

Jadeの記法で書いたファイルを.jade の形式で保存します。これをコンパイルしてみます。

$ jade index.jade

するとindex.html が出力されます。

<!DOCTYPE html><html><head><meta http-equiv="content-type" content="text/html; chaeset=utf-8"><meta name="description" content="コンテンツの説明です。コンテンツの説明です。コンテンツの説明です。コンテンツの説明です。コンテンツの説明です。"><meta name="keywords" content="キーワード1です,キーワード2です,キーワード3です"><meta http-equiv="imagetoolbar" content="no"><title>タイトルです</title></head><body><h1>ここが多見出しです</h1><h2>次の見出しです</h2><p>文章が入ります。文章が入ります。文章が入ります。文章が入ります。文章が入ります。文章が入ります。</p></body></html>

出力されましたがとても見にくいです。コンパイル時に --pretty オプションをつけるとインデントを保持したままHTMLに出力してくれます。

$ jade index.jade --pretty

今回のまとめ

Jadeをインストールしてファイルをコンパイルするまでを試してみました。これだけでは便利なのか?と思われるかもしれませんが、次回以降いろいろな機能も試してみたいと思います。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ