Node.jsの一番メジャーなフレームワーク「Express」について解説

Node.jsは、JavaScriptを使ってサーバーサイドの開発を行うことができるランタイム環境です。

その中でも、特に人気があるのがフレームワークのExpressです。

この記事では、Expressについて解説していきます。

1. Expressとは何か?


Expressは、Node.jsのためのWebフレームワークです。

WebアプリケーションやAPIの開発をより簡単かつ迅速に行うことができます。

Node.jsには標準でhttpモジュールがあるため、Expressもこのモジュールをベースにしています。

しかし、httpモジュールでは実現が難しいことがExpressにはできるようになっています。

2. Expressのインストールと使い方

Expressを使うためには、まずNode.jsがインストールされている必要があります。

次に、以下のコマンドを使って、Expressをインストールします。

npm install express

これで、Expressがインストールされました。

Expressを使うには、まずrequire()関数でexpressモジュールを読み込みます。

const express = require('express');
const app = express();


これで、Expressの準備が整いました。次に、ルーティングを設定することができます。

例えば、以下のように書くことで、GETリクエストに対して"Hello World"というレスポンスを返すことができます。

app.get('/', (req, res) => {
  res.send('Hello World');
});

このように、Expressは非常に簡単に使うことができます。

3. Expressのディレクトリ構造

Expressでは、ディレクトリ構造を決めることができます。通常は、以下のような構造になります。

app.js
routes/
    index.js
    users.js
views/
    index.ejs
    users.ejs
public/
    stylesheets/
        style.css
    images/
        logo.png

app.jsはアプリケーションのエントリーポイントであり、ルーティングやミドルウェア、テンプレートエンジンなどの設定を行います。


routes/は、ルーティングを行うためのファイルが格納されるディレクトリです。

index.jsやusers.jsのようなファイル名で、それぞれのルーティングを定義します。


views/は、テンプレートエンジンで使われるテンプレートファイルが格納されるディレクトリです。

index.ejsやusers.ejsのようなファイル名で、それぞれのテンプレートを定義します。


public/は、静的ファイル(画像やCSSファイルなど)が格納されるディレクトリです。

stylesheets/やimages/のようなサブディレクトリを作成し、ファイルを保存します。

4. Expressの特徴


Expressには以下のような特徴があります。

4-1. ルーティング

ルーティングは、アプリケーションにリクエストが来た時に、そのリクエストに対してどの処理を行うかを決定することです。

Expressでは、このルーティングを非常に簡単に設定することができます。

例えば、以下のように書くことで、GETリクエストに対して"Hello World"というレスポンスを返すことができます。

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello World');
});

app.listen(3000, () => {
  console.log('Example app listening on port 3000!');
});

4-2. ミドルウェア

ミドルウェアとは、リクエストとレスポンスの間で処理を行うための関数のことです。

Expressでは、これを使って様々な処理を実装することができます。

例えば、以下のように書くことで、全てのリクエストに対して、リクエストが来た時間をログに出力することができます。

const express = require('express');
const app = express();

app.use((req, res, next) => {
  console.log(`Time: ${Date.now()}`);
  next();
});

app.get('/', (req, res) => {
  res.send('Hello World');
});

app.listen(3000, () => {
  console.log('Example app listening on port 3000!');
});

4-3. テンプレートエンジン

テンプレートエンジンとは、HTMLを生成するための仕組みです。

Expressには、JadeやEJSなどの様々なテンプレートエンジンがあります。

これを使うことで、HTMLを動的に生成することができます。

例えば、以下のように書くことで、EJSを使って変数を表示することができます。

const express = require('express');
const app = express();

app.set('view engine', 'ejs');

app.get('/', (req, res) => {
  const message = 'Hello World';
  res.render('index', { message });
});

app.listen(3000, () => {
  console.log('Example app listening on port 3000!');
});

このコードでは、"Hello World"というメッセージをEJSのテンプレートに渡し、ブラウザに表示されるようにしています。

5. まとめ


Expressは、ルーティングやミドルウェア、テンプレートエンジンなど、様々な機能を持ったNode.jsのWebフレームワークです。

Expressを使うことで、簡単にWebアプリケーションを開発することができます。


本記事では、Expressの基本的な使い方やディレクトリ構造、ミドルウェアについて解説しました。

Expressを使ってWebアプリケーションを開発する際には、これらの機能を上手く活用することが大切です。


また、Expressは多くの拡張機能(ミドルウェアやテンプレートエンジン)が提供されており、Webアプリケーション開発をさらに便利にすることができます。

ぜひ、公式ドキュメントや他のチュートリアルを参考にして、Expressの使い方をマスターしてください。