Node.js + Express: Rute vs pengontrol

100

Baru mengenal Node.js dan Express, saya mencoba memahami dua konsep yang tampaknya tumpang tindih, rute vs pengontrol.

Saya telah melihat contoh yang sederhana apakah app.js + routes / *, ini tampaknya cukup untuk merutekan berbagai permintaan yang dibutuhkan.

Namun, saya juga melihat orang-orang berbicara tentang penggunaan pengontrol, dan beberapa di antaranya menyiratkan model MVC yang lebih formal (???).

Akan sangat bagus jika seseorang dapat membantu saya membersihkan misteri ini, dan jika Anda memiliki contoh yang baik untuk menyiapkan pengontrol dalam kerangka kerja Node.js + Express, itu akan sangat bagus!

Terima kasih,

pengguna1462192
sumber

Jawaban:

129

Salah satu hal keren tentang Express (dan Node secara umum) adalah ia tidak mendorong banyak opini tentang Anda; salah satu kelemahannya adalah tidak mendorong opini apa pun tentang Anda. Dengan demikian, Anda bebas (dan wajib!) Untuk mengatur opini (pola) seperti itu sendiri.

Dalam kasus Express, Anda pasti dapat menggunakan pola MVC, dan penangan rute pasti dapat berfungsi sebagai pengontrol jika Anda menginginkannya - tetapi Anda harus mengaturnya seperti itu. Contoh yang bagus dapat ditemukan di folder contoh Express , bernama mvc. Jika Anda melihatnya lib/boot.js, Anda dapat melihat bagaimana mereka menyiapkan contoh untuk meminta setiap file dalam controllersdirektori, dan menghasilkan rute Express dengan cepat tergantung pada nama metode yang dibuat pada pengontrol.

Michelle Tilley
sumber
2
Paragraf pertama jawaban yang cukup cerdas ini juga memberikan penjelasan / perbedaan yang baik antara kedua istilah tersebut.
Frank Nocke
1

Anda hanya dapat memiliki folder rute atau keduanya. Misalnya, beberapa mengatur rute / jalur (mis. / User /: id) dan menghubungkannya ke Get, Post, Put / Update, Delete, dll. Dan kemudian di folder routes:

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

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

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

Kemudian, di folder pengontrol:

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

Hanya untuk membuat sesuatu. Saya telah melakukan proyek tanpa folder pengontrol, dan menempatkan semua logika di satu tempat.

C. Johari
sumber