Rumah > hujung hadapan web > tutorial js > 'Dalam corak reka bentuk MVC, mengapa penghala sangat diperlukan? Apakah peranan yang dimainkannya?'

'Dalam corak reka bentuk MVC, mengapa penghala sangat diperlukan? Apakah peranan yang dimainkannya?'

Susan Sarandon
Lepaskan: 2024-12-19 13:06:10
asal
136 orang telah melayarinya

Kemahiran yang sering diabaikan namun penting untuk menguasai corak MVC atau seni bina yang serupa ialah memahami prinsip terasnya. Di sini, kami membongkar konsep dan memecahkannya dengan cara yang jelas dan mudah diikuti:

Gambaran Keseluruhan Corak MVC

“In the MVC design pattern, why is the router indispensable? What role does it play?

Model: **Mengendalikan data dan logik perniagaan (Contoh: Mengambil atau menyimpan data dalam pangkalan data).
**Paparan:
Memaparkan data kepada pengguna (Contoh: HTML, templat atau antara muka pengguna).
Pengawal: Bertindak sebagai “orang tengah”, menyelaras antara Model dan View.

Tetapi… bagaimanakah apl mengetahui pengawal yang hendak dipanggil apabila pengguna berinteraksi dengannya? Di situlah laluan (atau penghala) masuk.

Ingin tahu? Mari kita demystify,…

Apakah Peranan Penghala?

Penghala itu seperti polis trafik. Ia mengarahkan permintaan daripada pengguna ke fungsi pengawal yang betul berdasarkan URL yang mereka cuba akses. Contohnya:

Jika pengguna melawati yourapp.com/login, penghala memastikan Pengawal Log Masuk dicetuskan.

Jika mereka pergi ke yourapp.com/profile, penghala mengaktifkan Pengawal Profil.

Tanpa laluan, aplikasi anda tidak akan tahu logik yang hendak dilaksanakan untuk tindakan atau permintaan pengguna tertentu.

Mengapa Penghala Sangat Penting?

Dari pengetahuan kita sehingga sekarang, bolehkah kita sekurang-kurangnya membayangkan kepentingannya?

1. Pengendalian Permintaan Tersusun:

o Laluan mencipta peta yang jelas tentang gelagat apl anda.

o Daripada menjejalkan logik di mana-mana, anda memberikan tanggungjawab seperti:

/pengguna → Kendalikan tindakan pengguna.

/produk → Urus tindakan produk.

2. Pemisahan Kebimbangan:

o Penghalaan memisahkan logik URL-ke-pengawal daripada kod anda yang lain.

o Ini memastikan aplikasi anda kekal modular dan lebih mudah diselenggara.

3. Gelagat Dinamik:

o Laluan membolehkan anda mengendalikan parameter dinamik. Contohnya:

/users/:id → Boleh mengambil data pengguna secara dinamik berdasarkan id unik mereka.

4. Integrasi Perisian Tengah:

o Penghala membolehkan anda memasang perisian tengah dengan mudah untuk laluan tertentu. Contoh:

Tambahkan semakan pengesahan hanya pada laluan yang dilindungi seperti /papan pemuka.

5. Kebolehskalaan:

o Dalam apl yang lebih besar, penghala membenarkan anda membahagikan laluan kepada modul (Contoh: laluan berkaitan pengguna, laluan pentadbir, dll...).

o Ini menjadikan penskalaan logik apl anda mudah.

Cara Ia Sesuai dalam MVC

Fikirkan penghala sebagai titik sambungan:

Seorang pengguna membuat permintaan (Contoh: GET /products/123).
Penghala menyemak senarai peraturannya dan menentukan:
Pengawal mana yang hendak dipanggil.
Apakah fungsi yang perlu dilaksanakan dalam pengawal itu (Contoh: mengambil produk dengan ID 123).

  1. Pengawal kemudian menggunakan Model untuk mendapatkan data dan menghantarnya ke Paparan untuk paparan.

Contoh Contoh untuk mempunyai pemahaman yang kukuh

Jom gunakan Node’s Express.js

Penghala (laluan/produk.js):

const express = require('express');
const router = express.Router(); // Invoking express's router library
const productController = require('../controllers/productController'); // Importing the controller routes

// Define a route for fetching a product by ID
router.get('/:id', productController.getProductById);

// Exporting routes to be eccessible in app.js
module.exports = router;
Salin selepas log masuk

Pengawal (pengawal/productController.js):

exports.getProductById = (req, res) => {
  const productId = req.params.id;
  // Call the Model to get product data. Notice here I'm using NoSQL(MongoDb) querying language.
  const product = Product.findById(productId);
  res.json(product); // Send product data to the user
};
Salin selepas log masuk

Aplikasi (app.js): Entri permohonan pertama

const express = require('express');
const app = express();
const productRoutes = require('./routes/products');

// The route to be triggered when user requests a product
app.use('/products', productRoutes);

app.listen(3000, () => console.log('Server running on port 3000'));
Salin selepas log masuk

Apabila pengguna meminta produk tertentu misalnya, entri pertama aplikasi iaitu app.js memanggil laluan yang ditentukan (di sini productRoutes). Pemburu fungsi productRoutes memanggil fungsi yang berkaitan dalam fail route/products.js (di sini getProductById) yang diimport daripada folder pengawal (di sini controllers/productController.js) tetapi diperuntukkan kepada productController constant. Fungsi dalam pengawal memanggil model untuk mendapatkan data produk dan akhirnya mengemas kini paparan dengan data. Ambil perhatian bahawa pengawal (orang tengah) yang mengemas kini paparan dengan data yang diambil.

Ringkasnya

Penghala adalah penting kerana ia:

Tentukan pengawal untuk diaktifkan berdasarkan URL.
Memastikan kod anda modular, bersih dan berskala.
Menambahkan fleksibiliti dengan laluan dinamik, perisian tengah dan gelagat tersuai.

Tanpa penghala, apl anda akan menjadi huru-hara dan hampir mustahil untuk skala apabila anda menambah lebih banyak ciri!

Terima kasih dan…Selamat mengekod...

Atas ialah kandungan terperinci 'Dalam corak reka bentuk MVC, mengapa penghala sangat diperlukan? Apakah peranan yang dimainkannya?'. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan