Kem Intensif Pembangunan Backend Node.js · Pelajaran

Membangunkan Perisian Tengah Express Tersuai

Tulis fungsi perisian tengah Express anda sendiri untuk melanjutkan kefungsian dan melancarkan pemprosesan permintaan.

Pelajaran 1 daripada 411 langkah

Membangunkan Perisian Tengah Express Tersuai ialah pelajaran Kem Intensif Pembangunan Backend Node.js percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Kem Intensif Pembangunan Backend Node.js, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Kem Intensif Pembangunan Backend Node.js merangkumi sejumlah 4 pelajaran.

Apakah Perisian Tengah Tersuai?

Dalam Express.js, fungsi perisian tengah adalah seperti rangkaian pembantu yang memproses permintaan masuk sebelum permintaan itu sampai kepada pengendali laluan akhir anda.

  • Fungsi ini mempunyai akses kepada objek permintaan (req) dan tindak balas (res).
  • Fungsi ini boleh mengubah suai objek tersebut, menamatkan kitaran permintaan-tindak balas atau menyerahkan kawalan kepada perisian tengah seterusnya.
  • Perisian tengah tersuai membolehkan anda menambah fungsi khusus yang disesuaikan dengan keperluan aplikasi anda, seperti pengelogan, pengesahan atau penghuraian data.

Tandatangan Perisian Tengah

Setiap fungsi perisian tengah Express mengikut tandatangan khusus: (req, res, next).

  • req (permintaan): Objek permintaan HTTP yang masuk.
  • res (tindak balas): Objek tindak balas HTTP yang dihantar kembali oleh Express.
  • next: Fungsi yang apabila dipanggil akan menyerahkan kawalan kepada fungsi perisian tengah seterusnya dalam tindanan. Jika anda tidak memanggil next(), kitaran permintaan-tindak balas akan berhenti dan tiada perisian tengah atau pengendali laluan seterusnya akan dilaksanakan.

Perisian Tengah Pengelogan Pertama Anda

Mari cipta perisian tengah tersuai yang mudah untuk merekodkan butiran setiap permintaan masuk ke konsol. Ini membantu dalam penyahpepijatan dan pemantauan.

Cuba jalankan kod itu, kemudian akses http://localhost:3000 dalam pelayar anda. Semak output konsol!

const express = require('express');
const app = express();
const port = 3000;

// Custom logging middleware
const requestLogger = (req, res, next) => {
  console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
  next(); // Pass control to the next middleware/route handler
};

// Apply the custom middleware globally
app.use(requestLogger);

// Define a simple route
app.get('/', (req, res) => {
  res.send('Hello from Express!');
});

// Start the server
app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`);
});

Menggunakan Perisian Tengah: Global berbanding Laluan

Anda boleh menggunakan perisian tengah pada tahap yang berbeza:

  • Secara Global (Tahap Aplikasi): Menggunakan app.use(middlewareFunction) akan menggunakan perisian tengah pada SEMUA permintaan masuk.
  • Khusus Laluan: Anda boleh menggunakan perisian tengah pada laluan tertentu atau kumpulan laluan dengan menghantarnya sebagai argumen sebelum pengendali laluan.

Fleksibiliti ini membolehkan anda melaksanakan logik hanya di tempat yang diperlukan.

Menghantar Data ke Hiliran

Ciri berkuasa perisian tengah ialah keupayaannya untuk menambahkan sifat pada objek req. Sifat ini kemudiannya boleh diakses oleh semua fungsi perisian tengah yang seterusnya dan pengendali laluan terakhir dalam kitaran permintaan-tindak balas.

Hal ini amat berguna untuk perkara seperti melampirkan maklumat pengguna selepas pengesahan, atau data yang telah dihuraikan sebelum mencapai logik utama.

Contoh: Melampirkan Data Pengguna

Begini cara anda boleh melampirkan objek pengguna olok-olok pada permintaan. Dalam aplikasi sebenar, data ini akan datang daripada pangkalan data atau Token Web JSON (JWT) yang telah dinyahkod.

Perhatikan bahawa pengendali laluan /profile boleh mengakses req.user secara terus kerana perisian tengah attachUserInfo dijalankan terlebih dahulu.

const express = require('express');
const app = express();
const port = 3000;

// Middleware to attach user info (mock data)
const attachUserInfo = (req, res, next) => {
  req.user = { id: '123', name: 'Alice', role: 'admin' };
  console.log('User info attached to request.');
  next();
};

// Apply the middleware globally
app.use(attachUserInfo);

// Route that uses the attached user info
app.get('/profile', (req, res) => {
  res.send(`Welcome, ${req.user.name}! Your role is: ${req.user.role}`);
});

app.get('/', (req, res) => {
  res.send('Home page (no user info explicitly needed here)');
});

app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`);
});

Membina Rantaian Perisian Tengah

Anda boleh merantaikan beberapa fungsi perisian tengah bersama-sama. Express melaksanakannya mengikut turutan fungsi tersebut ditakrifkan. Setiap perisian tengah mesti memanggil next() untuk menyerahkan kawalan kepada perisian tengah yang seterusnya.

  • Hal ini membolehkan anda memecahkan pemprosesan permintaan yang kompleks kepada fungsi yang lebih kecil, mudah diurus dan boleh digunakan semula.
  • Contohnya, anda boleh mempunyai perisian tengah untuk pengesahan, diikuti perisian tengah untuk pengelogan, kemudian perisian tengah untuk penghuraian, semuanya sebelum pengendali laluan terakhir anda.

Pelaksanaan Perisian Tengah Bersyarat

Kadang-kadang anda hanya mahu perisian tengah dijalankan dalam keadaan tertentu. Anda boleh melakukannya melalui:

  • Penggunaan khusus laluan: Seperti yang dilihat, gunakan perisian tengah secara terus pada app.get(), app.post() dan sebagainya.
  • Logik dalaman: Tambahkan semakan bersyarat (pernyataan if) dalam perisian tengah itu sendiri.
  • Fungsi pembungkus tersuai: Cipta fungsi yang mengembalikan perisian tengah berdasarkan parameter.

Praktikal: Perisian Tengah Pemasa Permintaan

Mari kita bina perisian tengah yang mengukur tempoh pemprosesan sesuatu permintaan dan penghantaran tindak balas. Hal ini amat berguna untuk pemantauan prestasi.

Contoh ini menggunakan res.on('finish', ...) untuk melaksanakan kod SELEPAS tindak balas dihantar kepada klien.

const express = require('express');
const app = express();
const port = 3000;

// Middleware to measure request duration
const requestTimer = (req, res, next) => {
  const start = Date.now(); // Record start time
  res.on('finish', () => { // Listen for the response 'finish' event
    const end = Date.now(); // Record end time
    const duration = end - start;
    console.log(`${req.method} ${req.originalUrl} took ${duration}ms`);
  });
  next(); // Pass control
};

// Apply the timer middleware
app.use(requestTimer);

// Define a route that simulates some work
app.get('/slow', (req, res) => {
  setTimeout(() => {
    res.send('This was a slow response!');
  }, 500); // Simulate 500ms delay
});

app.get('/', (req, res) => {
  res.send('Hello, fast world!');
});

app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`);
});

Kuiz Fungsi Perisian Tengah

Pertimbangkan fungsi perisian tengah tersuai yang ditakrifkan sebagai const myMiddleware = (req, res, next) => { /* ... */ };

Manakah antara pernyataan berikut tentang kelakuannya yang BENAR?

Imbas Kembali Perisian Tengah Tersuai

Anda telah mempelajari cara mencipta dan menggunakan perisian tengah Express tersuai!

  • Fungsi perisian tengah tersuai mempunyai tandatangan (req, res, next).
  • Memanggil next() amat penting untuk menyerahkan kawalan kepada perisian tengah atau pengendali laluan yang seterusnya.
  • Perisian tengah boleh mengubah suai objek req dan res, supaya data tersedia untuk komponen seterusnya.
  • Anda boleh menggunakan perisian tengah secara global dengan app.use() atau pada laluan tertentu.
  • Perisian tengah berkuasa untuk menambahkan logik yang boleh digunakan semula, seperti pengelogan, pengesahan atau pemasaan permintaan.

Penguasaan perisian tengah tersuai ialah kunci untuk membina aplikasi Express yang modular dan cekap.

Percuma untuk bermula

Pelajari JavaScript dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
22
Pelajaran
92

Soalan Lazim

Adakah pelajaran “Membangunkan Perisian Tengah Express Tersuai” percuma?

Ya — teks penuh “Membangunkan Perisian Tengah Express Tersuai” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Kem Intensif Pembangunan Backend Node.js, tingkat taraf kepada CoddyKit PRO. Kursus Kem Intensif Pembangunan Backend Node.js merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Membangunkan Perisian Tengah Express Tersuai”?

Tulis fungsi perisian tengah Express anda sendiri untuk melanjutkan kefungsian dan melancarkan pemprosesan permintaan. Anda berlatih Kem Intensif Pembangunan Backend Node.js menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Kem Intensif Pembangunan Backend Node.js?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Kem Intensif Pembangunan Backend Node.js di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Membangunkan Perisian Tengah Express Tersuai” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Kem Intensif Pembangunan Backend Node.js ini?

Ya. Setiap pelajaran Kem Intensif Pembangunan Backend Node.js menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Membangunkan Perisian Tengah Express Tersuai
  2. Strategi Pengendalian Ralat Global
  3. Pengesahan Input dengan Joi/Express-Validator
  4. Perisian Tengah Pengesahan dengan JWT
← Kembali ke Kem Intensif Pembangunan Backend Node.js