nodejs melaksanakan mvc

May 17, 2023 am 10:23 AM

Node.js ialah sumber terbuka, persekitaran masa jalan JavaScript merentas platform. Ia membolehkan kami menulis aplikasi sisi pelayan menggunakan JavaScript. Sangat mudah untuk membangunkan aplikasi sisi pelayan berprestasi tinggi menggunakan Node.js. Dalam artikel ini, kami akan membincangkan cara melaksanakan seni bina MVC menggunakan Node.js.

  1. Apakah itu MVC?

MVC ialah singkatan kepada Model-View-Controller. Ia adalah corak reka bentuk yang menyusun kod dengan cara yang memisahkan aplikasi dan menjadikan aplikasi mudah untuk diselenggara dan dilanjutkan.

  • Model: Mengandungi semua data aplikasi dan logik perniagaan yang berkaitan.
  • Paparan: Antara muka pengguna, yang mendapatkan data daripada Model dan membentangkannya kepada pengguna.
  • Pengawal: mengendalikan interaksi antara antara muka pengguna dan logik perniagaan dan mengembalikan hasil kepada antara muka pengguna. Ia boleh bertindak sebagai perisian tengah seperti penghalaan, perisian tengah dan pengawal.

MVC menjadikan kod sangat modular, menjadikannya mudah untuk memfaktor semula dan menyelenggara bahagian aplikasi yang berbeza. Dalam Node.js, kita boleh menggunakan pelbagai rangka kerja untuk membina aplikasi MVC. Dalam artikel ini, kita akan membincangkan cara melaksanakan seni bina MVC menggunakan rangka kerja Express.

  1. Bagaimana untuk melaksanakan MVC menggunakan rangka kerja Express?

Express ialah rangka kerja popular untuk Node.js yang menyediakan alatan dan perisian tengah untuk membina aplikasi web dengan pantas. Kami boleh melaksanakan MVC menggunakan rangka kerja Express.

Pertama, kita perlu memasang rangka kerja Express. Gunakan arahan berikut dalam baris arahan:

npm install express --save
Salin selepas log masuk

Seterusnya, kita perlu memasang enjin templat. Dalam artikel ini, kami akan menggunakan EJS sebagai enjin templat. Gunakan arahan berikut dalam baris arahan:

npm install ejs --save
Salin selepas log masuk

Berikut ialah struktur direktori asas:

- app/
    - controllers/
    - models/
    - views/
- public/
- routes/
- app.js
Salin selepas log masuk

Kami akan membahagikan aplikasi kepada tiga komponen: pengawal, model dan paparan.

  1. Pengawal

Dalam folder Pengawal kami akan mentakrifkan logik pengawal kami. Sebagai contoh, kita boleh mempunyai fail yang dipanggil userController.js yang akan mengendalikan permintaan berkaitan pengguna.

Dalam fail userController.js kami boleh mengeksport objek dan kaedah yang berbeza untuk menggunakannya dalam aplikasi. Berikut ialah contoh:

const User = require('../models/user');

const UserController = {};

UserController.index = (req, res) => {
    // 获取所有用户
    User.getAll((err, users) => {
        if (err) {
            console.log(err);
            return;
        }
        // 渲染视图
        res.render('users/index', { users });
    });
};

UserController.show = (req, res) => {
    // 获取单个用户
    User.getById(req.params.id, (err, user) => {
        if (err) {
            console.log(err);
            return;
        }
        // 渲染视图
        res.render('users/show', { user });
    });
};

module.exports = UserController;
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan objek yang dipanggil UserController dan mengeksport dua kaedah: indeks dan tunjukkan. Kaedah ini akan mendapatkan data pengguna dan menghantarnya kepada enjin templat EJS untuk dipamerkan. Kami boleh menggunakan kaedah ini dalam laluan aplikasi kami untuk mengendalikan permintaan pengguna.

  1. Model

Dalam folder model, kami akan mentakrifkan logik lapisan Model. Sebagai contoh, kita boleh mempunyai fail yang dipanggil user.js yang akan menentukan data berkaitan pengguna dan logik perniagaan.

Dalam fail user.js, kita boleh menggunakan rangka kerja ORM (Pemetaan Perhubungan Objek) Node.js untuk menentukan model. Berikut ialah contoh:

const sql = require('../config/db').pool;

const User = {};

User.getAll = (callback) => {
    sql.query('SELECT * FROM users', (err, users) => {
        if (err) {
            callback(err, null);
            return;
        }
        callback(null, users);
    });
};

User.getById = (id, callback) => {
    sql.query('SELECT * FROM users WHERE id = ?', [id], (err, user) => {
        if (err) {
            callback(err, null);
            return;
        }
        callback(null, user[0]);
    });
};

module.exports = User;
Salin selepas log masuk

Dalam kod di atas, kami mengeksport objek bernama Pengguna dan mentakrifkan dua kaedah: getAll dan getById. Kaedah ini akan melaksanakan pertanyaan SQL dan menghantar keputusan kembali kepada pengawal.

  1. Paparan

Dalam folder pandangan kami akan mentakrifkan fail paparan EJS kami. Sebagai contoh, kita boleh mempunyai fail yang dipanggil index.ejs yang memaparkan data untuk semua pengguna.

Berikut ialah contoh:

<h1>All Users</h1>

<% if (users && users.length > 0) { %>
  <ul>
    <% users.forEach(function(user) { %>
      <li><a href="/users/<%= user.id %>"><%= user.name %></a></li>
    <% }); %>
  </ul>
<% } else { %>
  <p>No users found.</p>
<% } %>
Salin selepas log masuk

Dalam kod di atas, kami akan menggunakan sintaks EJS untuk memaparkan semua pengguna dan mencipta senarai. Kami menghantar data pengguna dalam pengawal dan menjadikannya dalam paparan.

  1. Laluan

Dalam folder laluan kami akan menentukan laluan untuk aplikasi kami. Dalam fail app.js kami akan mengkonfigurasi perisian tengah kami. Berikut ialah contoh:

const express = require('express');
const app = express();
const router = express.Router();
const UserController = require('./app/controllers/userController');

// 路由
router.get('/', UserController.index);
router.get('/users/:id', UserController.show);

// 中间件
app.use(express.static('public'));
app.use(express.urlencoded({ extended: true }));
app.set('view engine', 'ejs');
app.set('views', __dirname + '/app/views');
app.use(router);

// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`Server listening on port ${PORT}.`);
});
Salin selepas log masuk

Dalam kod di atas, kami telah menentukan dua laluan: satu untuk memberikan data untuk semua pengguna dan satu lagi untuk memaparkan data untuk seorang pengguna. Kami juga mengkonfigurasi perisian tengah yang membolehkan kami menggunakan enjin templat EJS dan menggunakan fail statik. Akhirnya, kami memulakan pelayan.

  1. Ringkasan

Dalam artikel ini, kami melaksanakan seni bina MVC menggunakan rangka kerja Express. Kami membahagikan aplikasi kepada tiga komponen: pengawal, model dan pandangan. Kami juga menggunakan rangka kerja ORM Node.js untuk mentakrifkan model dan enjin templat EJS untuk memaparkan paparan. Akhir sekali, kami menggunakan penghalaan untuk mengendalikan permintaan pengguna dan menghantar data kembali kepada pengawal dan pandangan.

Seni bina MVC Node.js membantu sangat memudahkan penyelenggaraan dan penskalaan aplikasi. Selain itu, rangka kerja Express menyediakan banyak alatan berguna dan perisian tengah yang boleh membantu kami membina aplikasi web dengan lebih pantas.

Atas ialah kandungan terperinci nodejs melaksanakan mvc. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Peranan React dalam HTML: Meningkatkan Pengalaman Pengguna Peranan React dalam HTML: Meningkatkan Pengalaman Pengguna Apr 09, 2025 am 12:11 AM

React menggabungkan JSX dan HTML untuk meningkatkan pengalaman pengguna. 1) JSX membenamkan HTML untuk menjadikan pembangunan lebih intuitif. 2) Mekanisme DOM maya mengoptimumkan prestasi dan mengurangkan operasi DOM. 3) UI pengurusan berasaskan komponen untuk meningkatkan kebolehkerjaan. 4) Pengurusan negeri dan pemprosesan acara meningkatkan interaktiviti.

Komponen React: Membuat unsur -unsur yang boleh diguna semula di HTML Komponen React: Membuat unsur -unsur yang boleh diguna semula di HTML Apr 08, 2025 pm 05:53 PM

Komponen React boleh ditakrifkan oleh fungsi atau kelas, merangkumi logik UI dan menerima data input melalui prop. 1) Tentukan komponen: Gunakan fungsi atau kelas untuk mengembalikan elemen bertindak balas. 2) Rendering Component: React Call Render Kaedah atau Melaksanakan Komponen Fungsi. 3) Komponen multiplexing: Lulus data melalui prop untuk membina UI yang kompleks. Pendekatan kitaran hayat komponen membolehkan logik dilaksanakan pada peringkat yang berbeza, meningkatkan kecekapan pembangunan dan pemeliharaan kod.

Apakah batasan sistem kereaktifan Vue 2 berkenaan dengan perubahan array dan objek? Apakah batasan sistem kereaktifan Vue 2 berkenaan dengan perubahan array dan objek? Mar 25, 2025 pm 02:07 PM

Sistem Reaktiviti Vue 2 bergelut dengan tetapan indeks array langsung, pengubahsuaian panjang, dan penambahan/penghapusan harta benda objek. Pemaju boleh menggunakan kaedah mutasi Vue dan vue.set () untuk memastikan kereaktifan.

React and the Frontend: Membina Pengalaman Interaktif React and the Frontend: Membina Pengalaman Interaktif Apr 11, 2025 am 12:02 AM

React adalah alat pilihan untuk membina pengalaman front-end interaktif. 1) React memudahkan pembangunan UI melalui komponen dan DOM maya. 2) Komponen dibahagikan kepada komponen fungsi dan komponen kelas. Komponen fungsi adalah lebih mudah dan komponen kelas menyediakan lebih banyak kaedah kitaran hayat. 3) Prinsip kerja React bergantung kepada algoritma DOM dan perdamaian maya untuk meningkatkan prestasi. 4) Pengurusan negeri menggunakan useState atau ini. Kaedah kitaran hayat seperti ComponentDidMount digunakan untuk logik tertentu. 5) Penggunaan asas termasuk membuat komponen dan pengurusan negeri, dan penggunaan lanjutan melibatkan cangkuk tersuai dan pengoptimuman prestasi. 6) Kesalahan biasa termasuk kemas kini status yang tidak betul dan isu prestasi, kemahiran debugging termasuk menggunakan reactdevtools dan sangat baik

Apakah faedah menggunakan TypeScript dengan React? Apakah faedah menggunakan TypeScript dengan React? Mar 27, 2025 pm 05:43 PM

TypeScript meningkatkan pembangunan React dengan menyediakan keselamatan jenis, meningkatkan kualiti kod, dan menawarkan sokongan IDE yang lebih baik, dengan itu mengurangkan kesilapan dan meningkatkan kebolehkerjaan.

Bagaimanakah anda boleh menggunakan UserEducer untuk Pengurusan Negeri Kompleks? Bagaimanakah anda boleh menggunakan UserEducer untuk Pengurusan Negeri Kompleks? Mar 26, 2025 pm 06:29 PM

Artikel ini menerangkan menggunakan UserEducer untuk Pengurusan Negeri Kompleks dalam React, memperincikan manfaatnya ke atas UseState dan bagaimana untuk mengintegrasikannya dengan useeffect untuk kesan sampingan.

Apakah komponen berfungsi dalam vue.js? Bilakah mereka berguna? Apakah komponen berfungsi dalam vue.js? Bilakah mereka berguna? Mar 25, 2025 pm 01:54 PM

Komponen fungsional dalam vue.js adalah cangkuk kitaran hidup, ringan, dan kekurangan kitaran, sesuai untuk memberikan data tulen dan mengoptimumkan prestasi. Mereka berbeza daripada komponen yang berkesudahan dengan tidak mempunyai keadaan atau kereaktifan, menggunakan fungsi render secara langsung, a

Bagaimana anda memastikan bahawa komponen React anda boleh diakses? Alat apa yang boleh anda gunakan? Bagaimana anda memastikan bahawa komponen React anda boleh diakses? Alat apa yang boleh anda gunakan? Mar 27, 2025 pm 05:41 PM

Artikel ini membincangkan strategi dan alat untuk memastikan komponen React boleh diakses, memberi tumpuan kepada HTML semantik, atribut ARIA, navigasi papan kekunci, dan kontras warna. Ia mengesyorkan menggunakan alat seperti ESLINT-PLUGIN-JSX-A11Y dan AXE-CORE untuk TESTI

See all articles