Express version 4 以降は express-generator というモジュールをインストールすることで、 Web アプリケーションのテンプレートを生成することができる。
今回の環境: Mac OS X Yosemite 10.10.2
$ uname -mrsv
Darwin 14.1.0 Darwin Kernel Version 14.1.0: Thu Feb 26 19:26:47 PST 2015; root:xnu-2782.10.73~1/RELEASE_X86_64 x86_64
Node.js はインストール済みの環境。
npm で express-generator モジュールをインストール。
$ npm install express-generator
express-generator@4.12.1 node_modules/express-generator
├── sorted-object@1.0.0
├── commander@2.6.0
└── mkdirp@0.5.0 (minimist@0.0.8)
express コマンドで、 ./app ディレクトリに Web アプリの雛形を生成。
$ ./node_modules/.bin/express ./app
create : ./app
create : ./app/package.json
create : ./app/app.js
create : ./app/public
create : ./app/public/images
create : ./app/public/javascripts
create : ./app/public/stylesheets
create : ./app/public/stylesheets/style.css
create : ./app/routes
create : ./app/routes/index.js
create : ./app/routes/users.js
create : ./app/views
create : ./app/views/index.jade
create : ./app/views/layout.jade
create : ./app/views/error.jade
create : ./app/bin
create : ./app/bin/www
install dependencies:
$ cd ./app && npm install
run the app:
$ DEBUG=app:* ./bin/www
$ cd app/
生成された package.json には、必要なモジュール等が記載されている。
$ cat ./package.json
{
"name": "app",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"body-parser": "~1.12.0",
"cookie-parser": "~1.3.4",
"debug": "~2.1.1",
"express": "~4.12.2",
"jade": "~1.9.2",
"morgan": "~1.5.1",
"serve-favicon": "~2.2.0"
}
}
npm install で、必要なモジュールをインストールする。 package.json を参照して、必要なモジュールを自動的にインストールしてくれる。
$ npm install
debug@2.1.3 node_modules/debug
└── ms@0.7.0
cookie-parser@1.3.4 node_modules/cookie-parser
├── cookie-signature@1.0.6
└── cookie@0.1.2
morgan@1.5.2 node_modules/morgan
├── basic-auth@1.0.0
(以下略)
npm start で Web アプリを起動する。
$ npm start
> app@0.0.0 start /Users/hogeuser/node/app
> node ./bin/www
雛形の Web アプリにアクセスできるか確認する。別のターミナルを立ち上げて、 http://localhost:3000/ にアクセスすると、「Welcome to Express」と表示される。
$ curl http://localhost:3000/
<!DOCTYPE html><html><head><title>Express</title><link rel="stylesheet" href="/stylesheets/style.css"></head><body><h1>Express</h1><p>Welcome to Express</p></body></html>
./bin/www ファイルを見ると、ポート番号3000でリクエストを受け付けてるのがわかる。
$ head -16 ./bin/www
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('app:server');
var http = require('http');
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
./bin/www は app.js を require している。メインの処理となるのは app.js に記述されている。
$ head -15 ./app.js
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var routes = require('./routes/index');
var users = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
Web アプリの開発では、 app.js とそこから require したファイルに機能を実装していけば良さそう。
-
ref.
- Express application generator
- Node.js - express-generator を使う - Qiita
- Express入門をexpress 4.xで学ぶ場合のメモ - Tomute’s Notes
tags: node.js express
Posted by NI-Lab. (@nilab)