これは非常に基本的な質問かもしれませんが、私は単純にそれを得ません。 Express.jsを使用してアプリを作成することと、ポート1234で待機するアプリを起動することの違いは何ですか。
var express = require('express');
var app = express();
//app.configure, app.use etc
app.listen(1234);
そしてhttpサーバを追加します。
var express = require('express');
var http = require('http');
var app = express();
var server = http.createServer(app);
//app.configure, app.use etc
server.listen(1234);
違いは何ですか?http://localhost:1234
に移動しても、同じ出力が得られます。
2番目の形式(Expressが自動的に作成するのではなく、HTTPサーバーを自分で作成する方法)は、HTTPサーバーを再利用したい場合、たとえば同じHTTPサーバーインスタンス内でsocket.io
を実行する場合に便利です。
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
...
server.listen(1234);
ただし、app.listen()
はHTTPサーバーインスタンスも返すので、少し書き直すと、自分でHTTPサーバーを作成しなくても同様のことが実現できます。
var express = require('express');
var app = express();
// app.use/routes/etc...
var server = app.listen(3033);
var io = require('socket.io').listen(server);
io.sockets.on('connection', function (socket) {
...
});
アプリを使用してhttpサーバーを聴くことのもう1つの違いは、httpsサーバー用にセットアップしたい場合です
Httpsを設定するには、以下のコードが必要です。
var https = require('https');
var server = https.createServer(app).listen(config.port, function() {
console.log('Https App started');
});
Expressからのアプリはhttpサーバーのみを返します、expressでそれを設定することはできませんので、https serverコマンドを使用する必要があります。
var express = require('express');
var app = express();
app.listen(1234);
時間厳守目的のためだけに、少しTimの答えを広げてください。
公式文書 から:
Express()によって返されるアプリは、実際にはJavaScript関数です。リクエストを処理するためのコールバックとしてノードのHTTPサーバーに渡されるように設計されています。
アプリはこれらのコードを継承しないため、HTTPとHTTPSの両方のバージョンのアプリに同じコードベースを簡単に提供できます(単にコールバックです)。
http.createServer(app).listen(80);
https.createServer(options, app).listen(443);
app.listen()メソッドはhttp.Serverオブジェクトを返し、(HTTPの場合)はの便利さです。以下の方法
app.listen = function() {
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
Expressは基本的にhttpモジュールのラッパーで、開発者が簡単に使えるように作成されています。
私は同じ質問で来ました、しかし、グーグルの後に、私は大きな違いがないことがわかりました:)
から Github
HTTPサーバーとHTTPSサーバーの両方を作成したい場合は、ここに示すように "http"と "https"モジュールを使用して作成できます。
/**
* Listen for connections.
*
* A node `http.Server` is returned, with this
* application (which is a `Function`) as its
* callback. If you wish to create both an HTTP
* and HTTPS server you may do so with the "http"
* and "https" modules as shown here:
*
* var http = require('http')
* , https = require('https')
* , express = require('express')
* , app = express();
*
* http.createServer(app).listen(80);
* https.createServer({ ... }, app).listen(443);
*
* @return {http.Server}
* @api public
*/
app.listen = function(){
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
また、socket.ioを使用したい場合は、 の例を参照してください
私はapp.listen()
:)が好きです