シンプルなexpress

どうもこんばんは、south37です。いろいろあって気づいたら3:00で今めちゃくちゃ焦ってます。いろいろって言ってもほぼ自業自得な感じなんで、受け止めるしか無いです。つらいですね。

さて、今回はnode.jsでexpressを触ってみたいと思います。expressってのはnode.js用のWebアプリケーションフレームワークで、rubysinatraとかPHPのSlimのようなシンプルな書き方が出来るのが特徴です。というか、書き方の見た目はまんまです。覚え易くていいですね。

今日は、このブログを参考にしてみます。

express

では、まずはexpressを入れてみましょう。

npm install express

で一瞬です。

次に、チャチャチャっとコードを書いてみます。

// sample.js
var express = require('express');
var app = express();

app.get("/", function(req, res) {
  res.send('Hello, world!');
  console.log([req, res]);
});

app.listen(8080);

これも一瞬ですね。

node sample.js

で実行した後、実際にhttp://localhost:8080を見てみると、確かにHello world!の表示。ちゃんと動いてる事は確認出来ました。

ここまで10分くらいです。本当に一瞬でしたね。何の内容も無い感じなので、もうちょっと頑張ろうと思います。

上のサンプルコードの解説をしてみます。まず、初っ端でrequire('express')でexpressオブジェクトを取得した後、そのままexpress関数を実行してサーバappを生成しています。requireで返ってくるのが関数になってるみたいですね。
appのgetメソッドに第一引数としてurlを、第二引数として処理を書いた無名関数を渡す事で、サーバーサイドの処理を実装しています。reqはrequest、resはresponseで、res.sendでレスポンスを返しています。上の例ではただ文字列のHello worldを渡してるだけですが、JSONを返してAPIっぽくしたりももちろん出来ると思います。

htmlを返す場合には、renderメソッドを使うのが普通のようです。その際、jadeのようなテンプレートエンジンを使えて、例えば

var express = require('express');
var app = express();

app.get('/', function(req, res) {
  res.render(__dirname + '/index.jade', {title: 'My Site'});
});

app.listen(8080);

のようなコードを書き、

//index.jade
doctype
html
  head
  body
    ようこそJadeへ!

のようなjadeファイルを用意しておくと、htmlがレンダリングされます。

ちなみに、jadeは「<」や「>」無しでタグが書けて、閉じタグ無しでインデントで階層構造を作るテンプレートエンジンです。rubyのslimに似てる気がします。おしゃれ感があっていいですね。jadeはターミナルでコマンドを叩く事でコンパイルも出来て、

jade index.jade

// index.html
<!DOCTYPE html><html><head></head><body>ようこそJadeへ!</body></    html>

のようなhtmlが生成されます。expressで使うならわざわざコンパイルする必要は無い訳ですが、jadeを別のフレームワーク等と組み合わせて使う場合なら、前回紹介したgruntを利用して自動コンパイルとかするのもいいかもしれません。

今日はここまでにします。ねっむいので寝る事にします。おやすみです。