Skip to content

Instantly share code, notes, and snippets.

@tokunami
Created July 17, 2014 07:05
Show Gist options
  • Save tokunami/e9b1330fb6675661ab92 to your computer and use it in GitHub Desktop.
Save tokunami/e9b1330fb6675661ab92 to your computer and use it in GitHub Desktop.

express4 メモ

インストール

npm install -g express-generator

使用手順
  • 基本的には3と同じ要領で、起動方法が変わった。
$ express appName # appNameプロジェクトを作成
.. # ひな形が作成される

$ npm install # package.jsonに記述されてる依存モジュールを入れる
..

$ npm start # アプリケーション起動
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 startnode ./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.use([path], function)
  • ひな形の 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から追加されてるようです

  • とりあえずここまで、、、まだまだもり沢山

@stoshiya
Copy link

いろんなコードをみていると、socket.ioの設定もここ(./bin/www)に書いてあった。お作法?

express-generatorが作るテンプレートだと,app.listen()と戻り値であるサーバインスタンス(server)が/bin/wwwに記述されています.socket.ioはserverインスタンスを必要とするため,便宜上同じファイル内に記述しているのでしょう.

@tokunami
Copy link
Author

tokunami commented Oct 2, 2014

Express 4 のログ出力とフォームの処理について

Express 4 ではログ出力のパッケージは独立して morgan という名前になった
http://qiita.com/hoshi-takanori/items/7f5602d7fd7ee0fa6427

@tokunami
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment