Node.js + Express:ルートとコントローラー


98

Node.jsとExpressの新機能である、ルートとコントローラーという2つの概念が重複しているように見えることを理解しようとしています。

app.js + routes / *がシンプルな例を見てきたが、これは必要なさまざまなリクエストをルーティングするのに十分であるようだ。

ただし、コントローラーの使用について話している人や、より正式なMVCモデル(???)を暗示する人もいます。

誰かがこの謎を解くのを手伝ってくれるなら、そしてNode.js + Expressフレームワークでコントローラーをセットアップする良い例があれば素晴らしいでしょう!

おかげで、

回答:


129

Express(およびNode全般)のクールな点の1つは、それがあなたに多くの意見を押し付けないことです。不利な点の1つは、あなたの意見を押し付けないことです。したがって、そのような意見(パターン)を自分で設定するのは自由です(そして必須です!)。

Expressの場合、MVCパターンを確実に使用でき、ルートハンドラーは、必要に応じてコントローラーの役割を果たすことができますが、そのように設定する必要があります。優れた例は、Express examplesフォルダありますmvc。を見るとlib/boot.jscontrollersディレクトリ内の各ファイルを必要とするようにサンプルがどのように設定されているかを確認でき、コントローラーで作成されたメソッドの名前に応じて、オンザフライでExpressルートを生成します。


2
このかなり賢い答えの最初の段落も、2つの用語の間に適切な説明/区別を与えています。
Frank Nocke

1

ルートフォルダーまたはその両方を持つことができます。たとえば、いくつかのルート/パス(例:/ user /:id)を設定し、それらをGet、Post、Put / Update、Deleteなどに接続してから、routesフォルダーに接続します。

const subController = require('./../controllers/subController');

Router.use('/subs/:id);

Router
 .route('subs/:id');
 .get(
 subController.getSub
 .patch(
 subController.updateSub
 );

次に、controllersフォルダーで:

exports.getSub = (req, res, next) => {
  req.params.id = req.users.id;
};

ただ何かを作るために。コントローラーフォルダーを使用せずにプロジェクトを実行し、すべてのロジックを1か所に配置しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.