Express.js: app.listen vs server.listen の違い
Express.jsにおける app.listen と server.listen の違い
サーバーを起動するには、app.listen()
または server.listen()
のいずれかを使用できます。一見同じように見えるこれらの2つのメソッドですが、いくつかの重要な違いがあります。
app.listen()
は Express.js によって提供されるメソッドです。これは、内部的に http.createServer()
を呼び出してサーバーを作成し、そのサーバーに Express アプリケーションをリスナーとして登録します。
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000);
このコードは、ポート3000で "Hello World!" というテキストを表示するシンプルなサーバーを作成します。
app.listen()
メソッドは、以下の利点があります。
- コードが簡潔になる。
- Express アプリケーションとサーバーを密接に統合できる。
server.listen()
は、Node.js の http
モジュールによって提供されるメソッドです。これは、既存のサーバーオブジェクトにリスナーを登録するために使用されます。
const http = require('http');
const server = http.createServer((req, res) => {
res.end('Hello World!');
});
server.listen(3000);
このコードは、app.listen()
を使用した例と同じサーバーを作成しますが、Express.js を使用していません。
- より多くの制御と柔軟性を提供する。
- Express.js 以外のフレームワークやライブラリと組み合わせて使用できる。
ほとんどの場合、app.listen()
を使用するのがおすすめです。これは、コードが簡潔になり、Express アプリケーションとサーバーを密接に統合できるためです。
ただし、以下の場合は server.listen()
を使用することを検討する必要があります。
app.listen()
と server.listen()
は、どちらも Node.js でサーバーを起動するために使用できるメソッドです。それぞれに利点と欠点があるため、使用目的によってどちらを選択するべきかを判断する必要があります。
app.listen() を使用した例
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000);
const http = require('http');
const server = http.createServer((req, res) => {
res.end('Hello World!');
});
server.listen(3000);
両方のメソッドを使用する例
const express = require('express');
const http = require('http');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
const server = http.createServer(app);
server.listen(3000);
このコードは、app.listen()
と server.listen()
の両方のメソッドを使用しています。
- Express.js チュートリアル: URL Express チュートリアル
- Node.js HTTP モジュール: URL Node HTTP モジュール
Express.js でサーバーを起動するその他の方法
createServer() メソッドを使用する
app.listen()
メソッドは内部的に http.createServer()
メソッドを使用します。そのため、createServer()
メソッドを直接使用してサーバーを作成し、Express アプリケーションをリスナーとして登録することもできます。
const express = require('express');
const http = require('http');
const app = express();
const server = http.createServer(app);
server.listen(3000);
cluster
モジュールを使用すると、複数のワーカープロセスを起動して、サーバーの負荷を分散させることができます。
const express = require('express');
const cluster = require('cluster');
const app = express();
if (cluster.isMaster) {
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
} else {
app.listen(3000);
}
このコードは、CPU のコア数と同じ数のワーカープロセスを起動します。
PM2 プロセスマネージャーを使用する
PM2 は、Node.js アプリケーションを管理するためのプロセスマネージャーです。PM2 を使用すると、サーバーを自動的に起動、停止、再起動することができます。
pm2 start app.js
このコマンドは、app.js
ファイルを実行してサーバーを起動します。
app.listen()
と server.listen()
は、Express.js でサーバーを起動するための最も一般的な方法です。ただし、上記で説明したその他の方法も、特定の状況では役立ちます。
node.js express server