シンプルなexpress
どうもこんばんは、south37です。いろいろあって気づいたら3:00で今めちゃくちゃ焦ってます。いろいろって言ってもほぼ自業自得な感じなんで、受け止めるしか無いです。つらいですね。
さて、今回はnode.jsでexpressを触ってみたいと思います。expressってのはnode.js用のWebアプリケーションフレームワークで、rubyのsinatraとか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を利用して自動コンパイルとかするのもいいかもしれません。
今日はここまでにします。ねっむいので寝る事にします。おやすみです。