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
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).
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;
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 };
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'));
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!