2021年に人気のあるNode.jsのフレームワーク6選

##Node.jsについて
![Node](https://d33wubrfki0l68.cloudfront.net/3c18c558cbf9b510cf94a560907643799c699866/0d754/images/nodejs-logo.svg)
ChromeのV8JSエンジン上に構築されたJavaScriptランタイムで、サーバー上でjavascriptコードをコンパイルします。イベント駆動型の非同期ノンブロッキング入力/出力モデル（データの読み取り/書き込み、HTTP要求の作成など、システムのディスクおよびネットワークとの対話方法を意味します）を使用し、シングルスレッドイベントループで動作します。

Node.jsは、RyanDahlによって2009年に作成されました。彼は、ソフトウェアはマルチタスクを実行できる必要があると主張し、複数の同時接続を処理する正しい方法は、シングルスレッド、イベントループ、および非ブロッキングI / Oを使用することであると述べました。これにより、ノードが非常に効率的になり、リクエストの待機がなくなりました。

##Node.jsはなぜ人気があるのか
まずは、フロントエンドのフレームワークが発展したこと、モバイルアプリやデスクトップアプリもJavaScriptで開発ができるため、バックエンドも同じJavaScriptで書くことができるNode.jsが選ばれるようになってきました。

さらに、JavaScriptの膨大なライブラリが使用できることも挙げられます。

また、最近の統計では次のことが明らかとなっています。

- Githubでは、Node.jsには75.9kのスター、19kのフォーク、3kのウォッチャーがあります。スタックシェアでは、71.8kのフォロワーと8.3kの投票があります。

- StackOverflowの2020年の開発者調査でトップの座を獲得しました。調査の回答者の半数以上が、プロジェクトでそれを使用したと報告しました。

- Node.JSは、Netflix、PayPal、Grouponなどのトラフィックの多いWebサイトで使用されます。

##Node.jsのフレームワークの種類
###RESTAPIフレームワーク

REST APIは、HTTPプロトコルを使用してリソースを転送するのに役立つ標準です。RESTベースのアーキテクチャで使用されるさまざまな方法があります。彼らです、

- GET-リソースへの読み取り専用アクセスを提供します。
- POST-リソースを追加または保存できます。
- PUT-リソースを更新するオプションを提供します
- DELETE-リソースを削除または削除します。

![REST API アーキテクチャ](https://cdn.buttercms.com/tMlvJLIPT3ODKTWkDVOM)

###MVCフレームワーク

MVCフレームワークの仕組みは次のとおりです。 

- モデルがビューを更新します
- クライアント/ユーザーはViewを使用し、コントローラーを使用してデータを更新します。
- コントローラはモデルを操作して、データベース内のデータを変更します。

![MVC アーキテクチャ](https://cdn.buttercms.com/vKuxpiaaQC60E848GGrT)

###フルスタックMVCフレームワーク

フルスタックMVCフレームワークは、アプリケーションのクライアント側とサーバー側の両方を処理できます。これは、スキャフォールディング、テンプレートエンジン、ミドルウェア、ライブラリなどの追加機能を備えたMVCアーキテクチャに従い、アプリケーション開発での多くの反復タスクを自動化するオプションを提供します。

##人気のあるNode.jsフレームワーク6選
###Express
![Express](https://camo.githubusercontent.com/0566752248b4b31b2c4bdc583404e41066bd0b6726f310b73e1140deefcc31ac/68747470733a2f2f692e636c6f756475702e636f6d2f7a6659366c4c376546612d3330303078333030302e706e67)
Node.jsフレームワークのデファクトスタンダードです。Web アプリケーションとモバイル・アプリケーション向けの一連の堅牢な機能を提供します。

Expressの哲学は、HTTPサーバーに小さくて堅牢なツールを提供することであり、シングルページアプリケーション、Webサイト、ハイブリッド、またはパブリックHTTPAPIに最適なソリューションになります。

Expressは、特定のORMまたはテンプレートエンジンの使用を強制するものではありません。[Consolidate.js](https://github.com/tj/consolidate.js)を介した14を超えるテンプレートエンジンのサポートにより、完璧なフレームワークをすばやく作成できます。

###Meteor
![Meteor](https://user-images.githubusercontent.com/841294/26841702-0902bbee-4af3-11e7-9805-0618da66a246.png)
JavascriptでWeb、モバイル、およびデスクトップアプリケーションをシームレスに構築および展開するためのオープンソースフレームワークです。

Meteorはネットワーク上のデータを使用します。つまり、サーバーはHTMLではなくデータを送信し、クライアントはそれをレンダリングします。

React, Vue, Angular, GraphQL, mongoDB, Corodovaのライブラリが含まれています。

###Koa
![Koa.js](https://github.com/koajs/koa/raw/master/docs/logo.png)
Expressにバックグラウンドがあるチームによって開発された次世代のNode.jsフレームワークです。Koa.jsは、WebアプリケーションとAPIの構築に重点を置いています。非同期関数を活用することでコールバックを回避し、バグを大幅に減らすことを目的としています。

###Sails
![Sails](https://camo.githubusercontent.com/7809ea02014a21791f76317fa04c16d460d14b9ad4db2f6166e48aa4e329d628/687474703a2f2f62616c64657264617368792e6769746875622e696f2f7361696c732f696d616765732f6c6f676f2e706e67)
SailsはNode.jsで最も人気のあるMVCフレームワークであり、Ruby on Railsなどのフレームワークの使い慣れたMVCパターンをエミュレートするように設計されていますが、最新のアプリの要件をサポートしています。スケーラブルでサービス指向のアーキテクチャを備えたデータ駆動型APIです。任意のデータベースを使用でき、フロントエンドに囚われないことも特徴です。

###Hapi
![Hapi](https://raw.githubusercontent.com/hapijs/assets/master/images/hapi.png)
もともとウォルマートのブラックフライデーの高トラフィックを処理するために開発されました。最小限のオーバーヘッドと完全なすぐに使える機能（コード、方法）を使用して、強力でスケーラブルなアプリケーションを構築します。

###Nest
![Nest](https://camo.githubusercontent.com/5f54c0817521724a2deae8dedf0c280a589fd0aa9bffd7f19fa6254bb52e996a/68747470733a2f2f6e6573746a732e636f6d2f696d672f6c6f676f2d736d616c6c2e737667)
効率的でスケーラブルなNode.jsサーバー側アプリケーションを構築するためのフレームワークです。TypeScriptで構築され 、OOP（オブジェクト指向プログラミング）、FP（関数型プログラミング）、およびFRP（関数型リアクティブプログラミング）の要素を組み合わせています。

内部的には、NestはExpressを利用しますが、Fastifyなどの他のさまざまなライブラリとの互換性も提供し、利用可能な無数のサードパーティプラグインを簡単に使用できるようにします。

Nestは、高度にテスト可能で、スケーラブルで、疎結合で、保守が容易なアプリケーションを簡単に作成できる、すぐに使えるアプリケーションアーキテクチャを提供することを目的としています。アーキテクチャはAngularに大きく影響を受けています。

##参照
https://medium.com/selleo/top-trends-in-node-js-to-watch-in-2021-d94ff38cc31e

https://scoutapm.com/blog/nodejs-frameworks

https://expressjs.com/ja/

https://docs.meteor.com/#/full/

https://koajs.com/

https://sailsjs.com/

https://hapi.dev/

https://nestjs.com/