Heim > Artikel > Web-Frontend > Das MVC-Muster mit Node.js verstehen
Das Model-View-Controller (MVC)-Muster ist eines der beliebtesten Architekturmuster in der Webentwicklung. Durch die Aufteilung einer Anwendung in drei miteinander verbundene Komponenten – Modell, Ansicht und Controller – fördert MVC organisierten, wartbaren und skalierbaren Code. Node.js ist mit seiner asynchronen Verarbeitung und seinem umfangreichen Ökosystem eine ausgezeichnete Wahl für die Erstellung von MVC-basierten Anwendungen, insbesondere für die Web- und API-Entwicklung. Dieser Leitfaden untersucht das MVC-Muster mit Node.js und führt Sie durch seine Vorteile und eine praktische Implementierung.
Das MVC-Muster unterteilt eine Anwendung in drei verschiedene Teile:
Diese Trennung von Belangen hilft dabei, Code so zu organisieren, dass er einfach zu verwalten, zu testen und zu erweitern ist.
Hier erstellen wir eine einfache MVC-Anwendung mit Node.js und Express. Unser Beispiel wird ein einfacher „Task-Manager“ sein, der es Benutzern ermöglicht, Aufgaben anzuzeigen, hinzuzufügen und zu löschen.
Erstellen Sie zunächst ein neues Node.js-Projekt und installieren Sie die erforderlichen Abhängigkeiten.
# Create a project folder mkdir mvc-task-manager cd mvc-task-manager # Initialize Node.js npm init -y # Install Express and other dependencies npm install express ejs mongoose body-parser
Organisieren Sie die Anwendung in Modell-, Ansichten- und Controller-Ordnern. Diese Struktur ist für ein MVC-Muster unerlässlich.
mvc-task-manager/ │ ├── models/ │ └── Task.js │ ├── views/ │ ├── index.ejs │ └── tasks.ejs │ ├── controllers/ │ └── taskController.js │ ├── public/ │ └── css/ │ └── styles.css │ ├── app.js └── package.json
Das Modell repräsentiert die Datenstruktur in Ihrer Anwendung. Für diesen Task-Manager definieren wir mithilfe von Mongoose ein Task-Modell in MongoDB.
// models/Task.js const mongoose = require('mongoose'); const taskSchema = new mongoose.Schema({ title: { type: String, required: true }, description: { type: String }, completed: { type: Boolean, default: false } }); module.exports = mongoose.model('Task', taskSchema);
Hier definiert taskSchema unser Aufgabenmodell mit Feldern für Titel, Beschreibung und abgeschlossen.
Der Controller verwaltet die Anwendungslogik, verarbeitet Benutzereingaben, interagiert mit dem Modell und weist die Ansicht an, die Daten zu rendern.
// controllers/taskController.js const Task = require('../models/Task'); exports.getTasks = async (req, res) => { const tasks = await Task.find(); res.render('tasks', { tasks }); }; exports.createTask = async (req, res) => { const { title, description } = req.body; await Task.create({ title, description }); res.redirect('/tasks'); }; exports.deleteTask = async (req, res) => { await Task.findByIdAndDelete(req.params.id); res.redirect('/tasks'); };
Dieser Controller definiert drei Hauptaktionen:
In diesem Beispiel verwenden wir EJS, um HTML-Ansichten zu rendern. Dadurch können wir Aufgabendaten dynamisch im Browser anzeigen.
Erstellen Sie eine index.ejs-Datei für die Homepage und eine task.ejs-Datei zum Anzeigen von Aufgaben.
<!-- views/index.ejs --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Task Manager</title> <link rel="stylesheet" href="/css/styles.css"> </head> <body> <h1>Welcome to Task Manager</h1> <a href="/tasks">View Tasks</a> </body> </html>
Die Datei „tasks.ejs“ rendert eine Liste von Aufgaben und stellt Formulare zum Hinzufügen oder Löschen von Aufgaben bereit.
<!-- views/tasks.ejs --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Task List</title> </head> <body> <h1>Tasks</h1> <ul> <% tasks.forEach(task => { %> <li><%= task.title %> - <a href="/delete/<%= task._id %>">Delete</a></li> <% }) %> </ul> <form action="/add" method="POST"> <input type="text" name="title" placeholder="Task Title" required> <input type="text" name="description" placeholder="Description"> <button type="submit">Add Task</button> </form> </body> </html>
Definieren Sie Routen in der Hauptdatei app.js, um jeden URL-Endpunkt mit der relevanten Controller-Funktion zu verbinden.
// app.js const express = require('express'); const mongoose = require('mongoose'); const bodyParser = require('body-parser'); const taskController = require('./controllers/taskController'); const app = express(); app.set('view engine', 'ejs'); mongoose.connect('mongodb://localhost:27017/taskDB', { useNewUrlParser: true, useUnifiedTopology: true }); app.use(bodyParser.urlencoded({ extended: true })); app.use(express.static('public')); // Routes app.get('/', (req, res) => res.render('index')); app.get('/tasks', taskController.getTasks); app.post('/add', taskController.createTask); app.get('/delete/:id', taskController.deleteTask); const PORT = 3000; app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
Um ein wenig Stil hinzuzufügen, erstellen Sie eine Datei „styles.css“ im Ordner „public/css/“. Sie können grundlegende Stile hinzufügen, um Ihre Anwendung optisch ansprechend zu gestalten.
Starten Sie die Anwendung mit:
node app.js
Besuchen Sie http://localhost:3000 in Ihrem Browser. Mithilfe der MVC-Architektur können Sie zwischen Ansichten navigieren, neue Aufgaben hinzufügen und Aufgaben löschen.
Das obige ist der detaillierte Inhalt vonDas MVC-Muster mit Node.js verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!