Node.js(フレームワークなし)とExpressの「Hello World!」比較

こんにちは!
最近、Node.jsの学習を初めて、様々なフレームワークやライブラリがあると知りました。フレームワークだとExpress、Next.js、Nuxt.jsあたりは耳にしたことがあるのではないでしょうか。それぞれ書き方が異なるので、Node.jsの学習を始めたばかりの人にとっては「フレームワーク使うと何が変わるん?」って疑問を持つこともあると思います。

今回はNode.jsフレームワーク「Express」をざっくり理解するために、以下の2つを比較したいと思います。

①純正Node.js(フレームワークなし、ライブラリなし)
②Node.js × Expressフレームワーク(ライブラリなし)

前提

・どちらも「Hello World」を出力する
・どちらも1ファイルのため、記述方法の違いに限定する

①純正Node.js(フレームワークなし、ライブラリなし)の場合

//httpオブジェクトを生成
var http = require('http');

//サーバーオブジェクトの生成
var server = http.createServer(function(req,res){
    //writeHeadメソッドでhttpヘッダを書き出す
    res.writeHead(200,{'Content-Type':'text/plain'});
    //writeメソッドでhtmlコンテンツを書き出す
    res.write('Hello World');
    //endメソッドでhttpコンテンツ出力を完了する
    res.end();
});
//ポート番号を指定してサーバーを待ち受け状態にする
server.listen(1234);
//サーバーを起動したことを明示するため
console.log('サーバーを起動しました');

②Node.js × Expressフレームワーク(ライブラリなし)の場合

// expressオブジェクトの生成
var express = require('express');
// expressメソッドを用いて、appオブジェクトの生成
var app = express();

// appオブジェクトのgetメソッドを用いて、GETリクエストの登録
// リクエストのURIによって、処理を分けられる
app.get('/',function(req,res){
    // ルートにアクセスされた場合の処理
    // sendメソッドで応答を送信する
    res.send('Hello World');
});

var server = app.listen(1234, function(){
    console.log('サーバを起動しました');
})

順番に記述して見ましたが、いかがでしょうか??


大きな違いはこんな感じ

・サーバーサイド のレンダリングの記述の違い
 純正node.jsではhttpオブジェクトを使用 ↔︎ Expressではappオブジェクトを使用

・Expressでは以下の記述が不要
 ・httpヘッダ(ステータスコードやヘッダ情報)
 ・http書き出しの完了(res.end)

・ExpressではクエストのURIによって、処理を分けられる

まとめ

当たり前ですが、フレームワークを使った方が負担はだいぶ軽くなります。
上記の例ではapp.getでGETリクエスト時のサーバーサイドのレンダリングを行いましたが、app.postでも同様のことが可能です。

説明不足もあるかと思いますが、なんとなくExpressのイメージができてもらえたら幸いです。
誤り等がありましたら、お気軽にお問い合わせください〜

Leave a comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA