-
3との違いを中心にメモします
-
参考サイト
-
https://github.com/visionmedia/express/wiki/Migrating-from-3.x-to-4.x
npm install -g express-generator
- 基本的には3と同じ要領で、起動方法が変わった。
$ express appName # appNameプロジェクトを作成
.. # ひな形が作成される
$ npm install # package.jsonに記述されてる依存モジュールを入れる
..
$ npm start # アプリケーション起動
- express3では
node app.js
で起動していたが、4からはnpm start
で起動 - package.jsonのscriptsに書いてあるシェルが実行されている
"scripts": {
"start": "node ./bin/www"
}
実際にnpm start
コマンドを実行すると、ターミナルはこうなる
$ npm start
> [email protected] start /Users/<username>/<appName>
> node ./bin/www
npm start
とnode ./bin/www
は同じことをやっている
- ./bin/wwwの中身
#!/usr/bin/env node
var debug = require('debug')('appName');
var app = require('../app');
app.set('port', process.env.PORT || 3000);
var server = app.listen(app.get('port'), function() {
debug('Express server listening on port ' + server.address().port);
});
ここでサーバーが立ち上がり、app.jsが呼ばれている模様
- express3でapp.jsに書いてあったことが分けられている??
- いろんなコードをみていると、socket.ioの設定もここ(./bin/www)に書いてあった。お作法?
- ひな形の app.jsにて
var express = require('express');
・・・略・・・
var routes = require('./routes/index');
var users = require('./routes/users');
var app = express();
・・・略・・・
app.use('/', routes);
app.use('/users', users);
・・・略・・・
-
アプリケーションを起動してサーバが立ち上がり、クライアントが
localhost:port
にアクセスするとroutes
が呼ばれ、./routes/index(.js)
が呼ばれるindex.jsをみると↓↓
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res) {
res.render('index', { title: 'Express' });
});
module.exports = router;
ここでindex.jadeがレンダリングされてhome pageがGETされている。
-
routerは4.0から追加されてるようです
-
とりあえずここまで、、、まだまだもり沢山
express-generatorが作るテンプレートだと,app.listen()と戻り値であるサーバインスタンス(server)が/bin/wwwに記述されています.socket.ioはserverインスタンスを必要とするため,便宜上同じファイル内に記述しているのでしょう.