Node.js + Express: Trasy a kontroler

100

Jako nowy w Node.js i Express, próbuję zrozumieć, że te dwa wydają się nakładać się koncepcje, trasy a kontroler.

Widziałem przykłady, które po prostu robią app.js + Routes / *, wydaje się to wystarczające do kierowania różnych potrzebnych żądań.

Jednak widzę również, że ludzie mówią o używaniu kontrolerów, a niektóre z nich sugerują bardziej formalny model MVC (???).

Byłoby wspaniale, gdyby ktoś mógł mi pomóc wyjaśnić tę tajemnicę i jeśli masz dobry przykład konfiguracji kontrolera we frameworku Node.js + Express, to będzie świetne!

Dzięki,

user1462192
źródło

Odpowiedzi:

129

Jedną z fajnych rzeczy w Express (i ogólnie Node) jest to, że nie wywiera on wielu opinii na twój temat; jedną z wad jest to, że nie wypycha żadnych opinii na Twój temat. Dzięki temu możesz samodzielnie (i musisz!) Tworzyć takie opinie (wzorce).

W przypadku Express na pewno możesz użyć wzorca MVC, a program obsługi trasy z pewnością może pełnić rolę kontrolera, jeśli chcesz - ale musisz to ustawić w ten sposób. Świetny przykład można znaleźć w folderze przykładów Express o nazwie mvc. Jeśli spojrzysz lib/boot.js, możesz zobaczyć, jak skonfigurowali przykład, aby wymagać każdego pliku w controllerskatalogu i generować trasy Express w locie, w zależności od nazwy metod utworzonych na kontrolerach.

Michelle Tilley
źródło
2
Pierwszy akapit tej całkiem sprytnej odpowiedzi również zawiera dobre wyjaśnienie / rozróżnienie między tymi dwoma terminami.
Frank Nocke
1

Możesz mieć tylko folder tras lub oba. Na przykład niektóre ustawiają trasy / ścieżki (np. / User /: id) i łączą je z Get, Post, Put / Update, Delete itp., A następnie w folderze routingu:

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

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

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

Następnie w folderze kontrolerów:

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

Po prostu coś zrobić. Zrobiłem projekty bez folderu kontrolerów i umieściłem całą logikę w jednym miejscu.

C. Johari
źródło