Skip to content

Instantly share code, notes, and snippets.

@aya-eiya
Created March 12, 2012 12:53
Show Gist options
  • Save aya-eiya/2021652 to your computer and use it in GitHub Desktop.
Save aya-eiya/2021652 to your computer and use it in GitHub Desktop.
expressの初期化時サンプル:メインScript説明コメント付き
/**
* Module dependencies.
*/
var express = require('express') // express の機能を使う
, routes = require('./routes'); // ルーティングのあとの処理
// express.createServer()で作成したオブジェクトをエクスポートする
// エクスポートされたオブジェクトのメンバは、このファイルがrequireで
// 参照を受けた際に公開される。
// 同時に、同じオブジェクトをこのファイル内部ではappと呼ぶ。
// express.createServer()が返すObjectは、HTTPServer機能を提供する。
// これは、expressの作者が作ったネットワークミドルウェアであるconnectに
// 含まれているHttpServer機能を継承しつつexpressが機能を追加したもの。
// Connect -> http://www.senchalabs.org/connect/
var app = module.exports = express.createServer();
// Configuration
app.configure(function(){ // app内部で有効な設定を行う
// 以下の二行の設定で、表示に関する設定を行う。
// viewsには、HTMLに変換されるテンプレートを配置するディレクトリを、
// view engineには、テンプレートをHTMLに変換するテンプレートエンジンを設定する。
app.set('views', __dirname + '/views'); // viewsに実行箇所直下の/viewsディレクトリへのパスを設定
app.set('view engine', 'jade'); // view engineにjadeを設定
// 以下で設定するmethodOverrideは、Connectが提供している機能。
// hidden属性のinputタグを用いてPostメソッドの取り扱いを便利にする。
// この操作のため、<input type="hidden" name="_method" />は予約される。
app.use(express.bodyParser()); // bodyParserを有効化(下記methodOverrideのために必要)
app.use(express.methodOverride()); // methodOverrideを有効化
// app.routerを設定すると、通信の実行までに必要なマッピング処理を省略できる
app.use(app.router); // ルーティングの機能を提供する。これはExpressでの拡張。
// express.staticは、connect.staticの実装そのもの。
// 詳しい機能説明 -> http://www.senchalabs.org/connect/middleware-static.html
app.use(express.static(__dirname + '/public')); // 実行位置直下の/publicを静的ファイルの参照位置として設定する。
});
app.configure('development', function(){ // developmentというモードでサーバを起動すると有効になる設定を作成
// 以下のexpress.errorHandlerはConnectの実装そのもの。
// 詳しくは -> http://www.senchalabs.org/connect/errorHandler.html
app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); // 例外はDumpして、StackTraceも出す。
});
app.configure('production', function(){ // productionというモードでサーバを起動すると有効になる設定を作成
app.use(express.errorHandler()); // 例外処理なんてなかったんや
});
// Routes
// 以下のgetはhttp.get()。
// http.request()との違いは、自動でGETメソッドとなってhttp.end()が呼ばれること。
// URLが基底パスのとき、route.indexを実行する。
app.get('/', routes.index);
// ポート番号3000で待ち受ける。
app.listen(3000);
// コンソールにログを表示する。
// ちなみに、listenが呼ばれた直後にログを表示する。
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
@aya-eiya
Copy link
Author

よく分からんかったので、全行の意味を大体調べた。

@aya-eiya
Copy link
Author

app.routerを使っている行の意味を理解したので変更した。

@mas-kanamori
Copy link

勉強になりました!

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