Express.jsとは

初めに

Express.js は、Node.js の Web フレームワークで、簡単な API 開発から、バックエンドとフロントエンドの一環した Web アプリケーションの開発をサポートします。

Express.js は以下のコア機能を提供します。

  • 単一ページ、複数ページ、およびハイブリッド Web アプリケーションの設計
  • HTTP リクエストに応答するミドルウェアをセットアップ
  • HTTP メソッドと URL に基づいてさまざまなアクションを実行するために使用されるルーティング テーブルを定義
  • テンプレートエンジンを使用し、それに引数を渡すことによって実現する HTML ページを動的レンダリング

Express.js の概要

Express.js は Node.js で Web アプリケーションを作成するためのフレームワークであり、シングルページ、マルチページ、およびハイブリッド Web アプリケーションを構築することができます。

Express.js 公式サイト

Node.js 公式サイト

MEAN スタックのバックエンド担当

Express.js は、MEAN スタックのバックエンド部分を担当します。MEAN スタックとは以下の構成のことを言います。

  • MongoDB
    標準の NoSQL データベース
  • Express.js
    デフォルトの Web アプリケーションフレームワーク
  • Angular.js
    Web アプリケーションに使用される JavaScriptMVC フレームワーク
  • Node.js
    スケーラブルなサーバー側およびネットワークアプリケーションに使用されるフレームワーク。

MEAN スタックの最大のメリットは、構成要素のすべてが JavaScript で書けるため、学習コストが低く済むことです。また、MEAN スタックではなくても API 開発にも広く使われます。

Express.js の最小サンプル

var express = require('express');
var app = express();
app.get('/', function(req、res){{
  res.send('Hello World');
});

var server = app.listen(3000、function(){});

  1. モジュール取り込み require 関数を使用して Express モジュールを取り込みます。
  2. オブジェクト化 Express モジュールの使用を開始する前に、Express モジュールをオブジェクト化します。
  3. ルーティング処理 オブジェクト化した Express モジュールからの app.METHOD 関数にパスと、コールバック関数を設定し、アクセスされた際に"Hello Wolrd"をレスポンスとして返すように設定しています。
  4. 解放ポートの設定 listen 関数を使用して、サーバーアプリケーションが 3000 番ポートをクライアントの要求を処理するように、設定します。

Express.js のメリット

  • 最小構成のインターフェースの提供なので、軽量であり、カスタマイズしやすい
  • コアが Node.js なので利用可能な npm モジュールが豊富
  • Node.js のクライアント API である Mongoose でデータベースのアクセスが容易
  • 日本語ドキュメントが豊富なので、初心者も学習しやすい
  • pug を使うことで、フロントエンドの開発も行うことでができます。開発者はバックエンドとフロントエンドの開発を JavaScript だけで行うことができます。

Express.js のデメリット

  • JavaScript の知識が必要です。ない人はプレーンな JavaScript の学習をお勧めします。
  • Node.js の API の仕様が頻繁に変更されるため、書いたコードに互換性が持てなくなる可能性があります。そのため Express.js も気軽に最新化できません。

他の代替

node.js フレームワークとして代替はたくさんあります。以下がその例です。

  • NestJs
    NestJS は、エンタープライズグレードの Node.js アプリケーションの構築に最適なプログレッシブフレームワークです。モジュール、コントローラー、サービス、フィルター、ミドルウェア、ゲートウェイなど、Web アプリケーションに必要なすべてのものを提供しています。
  • Meteor
    Meteor は、Web アプリケーションを簡単に開発するための JavaScript プラットフォームです。サーバーサイドとクライアントサイドの両方で JavaScript を使用することができます。
  • Sails.js
    Sails.js は、MVC フレームワークであり、Node.js でアプリケーションを構築する際に生産性を高めるために必要なすべての機能を提供しています。
  • Hapi
    Hapi は、アプリケーションとサービスを構築するための豊富なフレームワークです。これにより、開発者はインフラストラクチャの構築に時間を費やす代わりに、再利用可能なアプリケーションロジックの作成に集中できます。
  • Express.js
    Express.js は、最小限で柔軟な Node.js Web アプリケーションフレームワークであり、Web およびモバイルアプリケーションに堅牢な機能セットを提供し、サーバーとルートの管理を支援するミドルウェアのように動作します。
  • Koa
    Koa は、Express の背後にある同じチームによって構築され、Web アプリケーションと API のより小さく、より表現力があり、より堅牢な基盤になることを目指しています。
  • Fastify
    Fastify は、最小限のオーバーヘッドと強力なプラグインアーキテクチャで処理速度に重点を置いた最速の Web フレームワークです。

node.js フレームワークは、他にも多様な候補があります。 どのような候補があるかは『Node.js フレームワーク比較(2021 年版)』にまとめてあるので、こちらを参照してください。

まとめ

Express.js は、Node.js で Web アプリケーションを開発する際に必要なフレームワークであり、API 開発からフロントエンドとバックエンドを含めた一体的な Web アプリケーションの開発をサポートしています。

Express.js は軽量でカスタマイズしやすく、豊富な日本語ドキュメントが存在しているため、初心者でも簡単に学習することができます。

ただし、JavaScript の知識が必要であり、Node.js の API の仕様が頻繁に変更されるため、書いたコードに互換性が持てなくなる可能性があるというデメリットもあります。

それでも、Express.js は汎用性が高く、API 開発に広く使われるため、学習する価値があるフレームワークです。 以上です。