Connect 2-新しい追加、改善、ドキュメント!





少し前、つまり2011年10月5日、connect 2.0フレームワークの新しいバージョンがリリースされました。 ハブでギャップが認識され、数時間の空き時間が出ました。 2月29日にリリースされたバージョン2.0.1についてすぐに書きます。 2番目のバージョンでは、非常に必要で待望の変更が数多く行われました。





1つのサーバーアプリケーションのHTTPおよびHTTPS!



Connect.Serverは、以前NodeJSコアからnet.Serverから継承されていたため、HTTPアプリケーションとHTTPSアプリケーションの両方を作成するのに不便がありました。 その結果、connect()(以前はconnect.createServer())は、より汎用的な新しい関数になりました。 つまり、app.listen()の呼び出しをスキップできますが、アプリケーションでNodeJSのnet.Serverを使用するだけです。次に例を示します。

var connect = require('connect'), http = require('http'), https = require('https'); tlsOptions = { key: fs.readFileSync('keys/key.pem'), cert: fs.readFileSync('keys/cert.pem') }; var app = connect() .use(function(req, res) { res.end('hello habrahabr\n'); }) http.createServer(app).listen(80); https.createServer(tlsOptions, app).listen(443);
      
      







クエリパーサーの改善



bodyParser()に加えて、着信リクエストを処理するための新しい関数が追加されました:json()アプリケーション/ jsonリクエスト、multipart()マルチパート/フォームデータリクエスト、およびurlencoded()アプリケーション/ x-www-form-urlencodedリクエスト これらはすべて、req.bodyのクエリで送信されたデータにアクセスするための新しい機会を表し、multipart()関数は、req.bodyだけでなく、ダウンロードされたファイルのreq.filesの送信されたパラメーターへのアクセスを提供します。



パーサーを個別に接続できます。

 app.use(connect.json()); app.use(connect.urlencoded()); app.use(connect.multipart());
      
      





これは次の記述と同等です。

 app.use(connect.bodyParser());
      
      







カーネルレベルのデフレートとgzipのサポート



Nodeバージョン0.6.0以降、圧縮(zlib.createGzipおよびzlib.createDeflate)をネイティブで使用できるようになったため、それらをサポートするために接続するためにcompress()が追加されました。 アドオンには、ネイティブ機能に渡される圧縮設定があります。



Cookie Parser



cookieParser()を補完する署名が利用可能になりました。 以前は、セッション({secret:string})およびセッション()拡張自体を使用する必要がありました。 これで、req.signedCookiesプロパティを使用して署名付きCookieとセッションを操作したり、req.cookiesプロパティを使用して署名なしCookieを操作したりできます。

 connect() .use(connect.cookieParser('keyboard cat')) .use(function(req, res, next){ res.end(JSON.stringify(req.cookies)); })
      
      







エラー処理





以前は、エラー処理が問題でした。 すべてのエラーは、connect()自体のerrorHandler()によってキャッチされ、標準ページを発行しました。 これで、コード内でnext(err)を使用しながら、エラーハンドラを再定義できます。

 app.use(function(err, req, res, next){ if (4 == err.status / 100) { // render a client-error page } else { // render a server-error page } });
      
      







セッション



すでに述べたように、セッション()はシークレットを必要としません。 Cookieの場合、デフォルトでは.maxAgeプロパティはnullでした。つまり、ブラウザーを閉じると、設定されたすべてのCookieが削除されました。



サイド追加



接続するすべてのアドオン()は引き続き機能する必要があります。 それはすべてExpress 2.0と互換性がなく、Express 3.0が登場することを期待しています!



すべての変更のリスト



説明されている重要な変更、およびAPIに影響を与えない他のいくつかの変更が行われました。 すべてのテストはMochaを使用して実施されました。



2.0.1 / 2012-02-29





2.0.0 / 2011-10-05





エクスプレス3を待っています!



ソースとリンク:

TJ Holowaychukブログエントリ

接続ページ

Github接続



All Articles