第9章で説明されている、node.jsのフレームワーク、「Express」でのブログアプリ作成を、
4.x系で動かすための情報を記述します。
書籍の第8章まで読み進められており、第9章の内容もなんとなく理解できる方を対象にしています。
いまのところ、macの環境でのみ動作確認をしています。
動作済みのソースもこのページの一番下にアップロードしています。
ただし、このサイトが1MB以上のアップロードに対応していないため、
node_modules以下のモジュールを削除しています。動作確認時にモジュールをインストールしてください。
また説明が簡素というか大分足りてないと思いますので、適宜書籍ソースと改変したソースを参考にしてください。
テンプレートエンジンで書籍同様jadeを利用していますが、jadeに関しての説明も省略しています。
node.js : v0.10.5
express: 4.8.3
express-generator: 4.2.0
expressのインストール自体は書籍を参照してください。
書籍でexpressの導入後にスケルトンコードを生成していますが、
4.x系ではスケルトンコードのジェネレーターがexpress本体から独立しました。
そのため、以下のコマンドでジェネレーターを追加インストールします。
npm install express-generator
次にインストールしたジェネレーターが存在するフォルダ
(個人の環境によって違いますが~/node_modules/express-generator/bin等)
に移動して、以下のコマンドを実行します。
node express [環境を作りたいフォルダ名]
さらに環境を作ったフォルダに移動して、以下のコマンドを実行します。
npm install
これで環境ができました。テストプログラムの実行は以下のコマンドです。
npm start
書籍では、
app.get('/login', routes.login);
app.post('/login', routes.login.post);
app.get('/logout', routes.logout);
というように、appオブジェクトのgetメソッドとpostメソッドを呼び、引数にパスと関数の参照を渡していたのを、、、
4.x版では
app.jsに
var routes = require('./routes');
とroutesフォルダの参照をもらって、
app.use('/', routes);
のようにappオブジェクトのuseメソッドに"/"パスとフォルダの参照を渡しています。
実際のurlパスごとの処理は、routesフォルダ以下に設置したindex.jsで処理をします。
/routes/index.js では書籍の「app.get('/login', routes.login);」に当たる処理を以下のように記述します。
var express = require('express');
var router = express.Router();
router.get('/login', function(req, res) {
// GETリクエストに対する処理
res.render('login', {
page: { title: 'login' },
user: null,
name: '',
error: 200,
loginFailed: false
});
return;
});
module.exports = router;
expressオブジェクトのRouter()メソッドの戻り値のgetメソッドを呼んでいます。
メソッドの中身は3.xの処理をほぼそのまま流用しています。
他にも、モジュールの宣言やセッションの生成等いろいろと修正していますので、
ソースと書籍を適宜確認して下さい。
最終更新:2014年08月21日 19:43