「WordPressで学ぶPHP(3)関数編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」の続編にあたり、PHP組み込みの関数や、独自の関数を作る方法などを解説します。
Kindle本で、定価400円です。
Node.jsを学ぶ(その9・Expressでアドレスに応じて処理を分ける)
Expressでは、アクセスされたアドレスに応じて、処理を分けて出力することができます。
例として、「http://localhost:3000/entry/○○」のようなアドレスにアクセスされたときに、「○○」の値に応じて出力を分けることを取り上げます。
1.アドレスのパターンとルーターを対応付ける
アプリケーションを作った時点では、app.js内に以下のような部分があります。
app.get('/', routes.index); app.get('/users', user.list);
この部分によって、「/」にアクセスされたときには、routesオブジェクトのindexメソッドが実行されます。
また、「/users」にアクセスされたときには、userオブジェクトのlistメソッドが実行されます。
この部分に記述を追加することで、他のアドレスへのアクセスも処理することができます。
今回のように、「/entry/○○」のアドレスをまとめて処理するには、以下のような文を追加して、「○○」の部分をパラメータに受け取るようにします。
app.get('/entry/:パラメータ名', ルーターのメソッド名);
ここでは、パラメータ名を「entry_id」にすることにします。
また、「entry」というルーターのオブジェクトを作って、その「show」というメソッドでページを表示することにします。
そこで、app.jsに以下の行を追加します。
app.get('/entry/:entry_id', entry.show);
2.ルーターの追加
次に、ルーターのオブジェクトを追加します。
アプリケーションのディレクトリにある「routes」ディレクトリに「entry.js」というファイルを作り、内容を以下のようにします。
exports.show = function(req, res){ var 変数 = req.params.パラメータ名; ・ ・(idに応じた処理) ・ res.render('ビュー名', { 変数: 値, 変数: 値, ・・・ 変数: 値 }); };
1行目の「exports」は、モジュール内のプロパティなどを、外部からアクセスできるようにするための構文です。
上の例だと、「exports.show = function・・・」としているので、外部からshowメソッドを呼び出すことができます。
2行目の「req.params.パラメータ名」は、app.jsの「app.get('/entry/:パラメータ名', ・・・);」が対応します。
アドレスの中のパラメータの部分を、「req.params.パラメータ名」で得ることができます。
作業1の中では、パラメータ名を「entry_id」にしていました。
したがって、以下の文を実行すれば、変数idにパラメータの値を得ることができます。
var id = req.params.entry_id;
後は、パラメータに応じた処理を行って、結果をビューに渡し、ページをレンダリングします。
3.app.jsにrequireの行を追加
最後に、app.jsの先頭にあるrequireの部分を以下のように書き換えて、entry.jsを読み込んでentryオブジェクトにアクセスできるようにします。
var express = require('express') , routes = require('./routes') , user = require('./routes/user') , entry = require('./routes/entry') , http = require('http') , path = require('path');
なお、今日の話をベースに、後日に事例を紹介します。