Created
March 12, 2012 12:53
-
-
Save aya-eiya/2021652 to your computer and use it in GitHub Desktop.
expressの初期化時サンプル:メインScript説明コメント付き
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
勉強になりました!