インストール
まずは node.js と npm をインストールして、
$ sudo apt-get install nodejs npm
$ nodejs -v
v0.10.15
npm を使って Express をインストール。$ sudo npm install -g express
$ express -v
2.5.8
プロジェクト作成
では、プロジェクトを作りましょう。プロジェクト名は hello-world としました。
$ mkdir hello-world $ cd hello-world
次に package.json を作ります。
$ vi package.json
package.json
{
"name": "hello-world",
"description": "hello world test app",
"version": "0.0.1",
"private": true,
"dependencies": {
"express": "3.x"
}
}ここで npm install を実行すると、package.jsonの記述に従って必要なモジュールがインストールされます。
$ npm install
$ npm ls
npm WARN package.json hello-world@0.0.1 No README.md file found!
hello-world@0.0.1 /home/at/hello-world
└─┬ express@3.4.7
├── buffer-crc32@0.2.1
├─┬ commander@1.3.2
│ └── keypress@0.1.0
├─┬ connect@2.12.0
│ ├── batch@0.5.0
│ ├── bytes@0.2.1
│ ├─┬ multiparty@2.2.0
│ │ ├─┬ readable-stream@1.1.9
│ │ │ ├── core-util-is@1.0.0
│ │ │ └── debuglog@0.0.2
│ │ └── stream-counter@0.2.0
│ ├── negotiator@0.3.0
│ ├── pause@0.0.1
│ ├── qs@0.6.6
│ ├── raw-body@1.1.2
│ └── uid2@0.0.3
├── cookie@0.1.0
├── cookie-signature@1.0.1
├── debug@0.7.4
├── fresh@0.2.0
├── merge-descriptors@0.0.1
├── methods@0.1.0
├── mkdirp@0.3.5
├── range-parser@0.0.4
└─┬ send@0.1.4
└── mime@1.2.11これで最もシンプルなアプリのひな形が完成しました。
アプリを実装
それではアプリ本体を作っていきましょう。今回はファイル名を app.js としました。app.js の他にも server.js と命名するのもわりと一般的なようです。
$ vi app.js
app.js
var express = require('express');
var app = express();
app.get('/hello.txt', function(req, res){
var body = 'Hello World';
res.setHeader('Content-Type', 'text/plain');
res.setHeader('Content-Length', Buffer.byteLength(body));
res.end(body);
});
app.listen(3000);
console.log('Listening on port 3000');app.jsができたら早速アプリを起動してみましょう。
$ nodejs app
Listening on port 3000http://localhost:3000/hello.txt へブラウザでアクセスすると画面に「Hello World」が表示されます。エラーハンドリング
app.jsにエラーハンドリングを実装して少しだけ高度にしてみましょう。
$ vi app.js
app.js
var express = require('express');
var app = express();
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
/* Error Handling */
app.use(logErrors);
app.use(clientErrorHandler);
app.use(errorHandler);
app.get('/hello.txt', function(req, res){
var body = 'Hello World';
res.setHeader('Content-Type', 'text/plain');
res.setHeader('Content-Length', Buffer.byteLength(body));
res.end(body);
});
function logErrors(err, req, res, next) {
console.error(err.stack);
next(err);
}
function clientErrorHandler(err, req, res, next) {
if (req.xhr) {
res.send(500, { error: 'Something blew up!' });
} else {
next(err);
}
}
function errorHandler(err, req, res, next) {
res.status(500);
res.render('error', { error: err });
}
app.listen(3000);
console.log('Listening on port 3000');こんなかんじです。
おまけ:空プロジェクトを自動生成
expressコマンドを使って、お気に入りのモジュールが最初から組み込まれた空プロジェクトを自動生成することもできます。
$ express --sessions --css stylus --ejs myappこれで EJS + Stylus + sessionが組み込まれたアプリ「myapp」の空プロジェクトが完成しました。
$ cd myapp && npm install上記コマンドで必要なモジュールをインストールしたら、
$ nodejs myappmyappアプリを実行します。
expressコマンドの詳細は --help を参照してください。
以上がExpressの基本中の基本です。
次回はこれをさらに発展させて、KeyValue型データストア「Redis」を使ったアプリも作ってみましょう。
関連エントリ
Node.js+MongoDB+ExpressでWeb APIをシンプルに
参考サイト
Express - guide
0 件のコメント:
コメントを投稿