PHPなどのプログラムがサーバ側で動かない時こそ、gulp+EJSが真価を発揮する時だと思う。
サーバ側でプログラムが動かないサーバを指定されている案件の時、ページ数が増えると正直面倒臭いですよね。
しかも、よりによってナビゲーションの変更とか言われてしまうと、「ページによって違うコードになってないよなあ・・・」なんて一括置換をドキドキしながらやることになるわけです。
そんな時には最近使っているgulpさんに大活躍してもらいましょう。
gulpさんにejsを動かしてもらうことによって、静的なHTMLでもパーツの共通化できたり、ループが使えるようになったり、細分化することによって全体のソースコードの見通しを良くするなど、便利にコーディングをすることができますよ!
導入方法
まずはgulp本体が入っていて、gulpを使ってサイトを作っている前提で話を進めてしまいます。
sudo npm install gulp-ejs --save-dev
なにはともあれ、こいつをターミナルで打ち込み、環境を作ります。
gulpfile.jsに、こいつを動かすためのコードを追加しましょう。
サンプルでは、
/ – gulpfile.jsとか
/htdocs – 公開したいサイトのドキュメントルート
/ejs – この中にejsファイルを作っていきます!
といった構成にしています。
var ejs = require("gulp-ejs"); gulp.task('ejs', function (){ gulp.src(["./htdocs/ejs/*.ejs", "!./htdocs/ejs/_*.ejs"]) .pipe(plumber()) .pipe(ejs()) .pipe(gulp.dest('./htdocs/')); });
これを追加します。
gulp−plumberを入れておかないと動かないですが、エラーを出さない自信のある人はいらないのかな・・・。
そしてwatchタスクに、ejsを追加
gulp.task("default", ["server"], function() { gulp.watch("./htdocs/ejs/*.ejs",["ejs"]); gulp.watch("./htdocs/sass/**/*.scss",["sass"]); gulp.watch("./htdocs/sass/**/*.sass",["sass"]); gulp.watch("./htdocs/**/*.html",["html"]); });
これは今使っているサイトから引っ張ってきただけの例(ライブリロードやらsassが動いている・・・)なので、適宜書き換えてください。
というわけで動かしてみる
なんとなくのサンプルなのですごく適当に。
<html> <header> <title><%= title %></title> </header> <body> <div id="header">ヘッダですよ</div>
<div id="footer">フッタですよ</div> </body> </html>
<% var title = "ページのタイトルとか入れればいいと思う。" %> <% include _header %> <% include _footer %>
これでgulpのタスクを走らせるだけ。
アンダーバーからはじまるファイルは書き出さないようにしているので、ゴミファイルも増えないかな?と思っています。
ちなみに、静的ファイルのジェネレーター、テンプレートエンジン的なものは、今回の記事でご紹介したnode.jsのgulpだけではなく、RubyならJekyll、Middlemanなどのメジャーなツールが、その他Pytonなどでもこういったツールは存在しているので、活用していきたいですね!