Arsitektur berbasis peristiwa yang kuat dari Node adalah salah satu keunggulan terkuatnya.

Poin Penting

  • Pemrograman berbasis peristiwa adalah pilihan yang baik untuk aplikasi interaktif, terutama aplikasi GUI, karena memungkinkan kode merespons tindakan pengguna dalam urutan apa pun.
  • Pemrograman berbasis peristiwa biasanya digunakan dalam aplikasi web, tempat pemroses peristiwa terpicu saat pengguna berinteraksi dengan DOM.
  • Mengimplementasikan pemrograman berbasis peristiwa di Node.js mudah dilakukan dengan kelas EventEmitter, yang memungkinkan Anda membuat peristiwa khusus dan melampirkan pendengar peristiwa untuk menanganinya.

Saat membangun aplikasi perangkat lunak apa pun, satu keputusan penting melibatkan pemilihan paradigma yang sesuai untuk kode Anda.

Pemrograman berbasis peristiwa adalah pilihan yang baik untuk aplikasi interaktif yang merespons tindakan pengguna yang mungkin terjadi dalam urutan apa pun. Ini adalah paradigma yang lebih populer dengan aplikasi GUI dibandingkan dengan program baris perintah atau kode sistem tertanam.

instagram viewer

Apa Itu Acara?

Anda dapat menganggap peristiwa sebagai tindakan atau kejadian yang dapat dikenali dan ditanggapi oleh kode Anda. Sistem atau pengguna dapat memicu suatu peristiwa dan kode Anda biasanya akan mendaftarkan fungsi untuk menanganinya.

Contoh kejadian dasar adalah mengklik tombol untuk melakukan tindakan tertentu. Tindakan mengklik tombol akan memicu suatu peristiwa, dan fungsi yang berjalan ketika klik terjadi disebut pendengar acara (atau pawang).

Apa itu Pemrograman Berbasis Peristiwa?

Pemrograman berbasis peristiwa adalah a paradigma pemrograman di mana alur eksekusi aplikasi bergantung pada peristiwa yang terjadi, bukan berurutan.

Paradigma ini banyak digunakan ketika membangun antarmuka pengguna dan aplikasi real-time, di mana peristiwa seperti tindakan pengguna harus memicu tindakan dalam sistem.

Paradigma ini sangat populer ketika membangun aplikasi web, di mana event listening terpicu ketika pengguna berinteraksi dengannya Model Objek Dokumen (DOM).

Gambar berikut memvisualisasikan cara kerja alur dalam pemrograman berbasis peristiwa. Ketika suatu peristiwa terjadi, saluran peristiwa menerimanya dan meneruskannya ke pendengar yang tepat untuk ditangani:

Pemrograman Berbasis Peristiwa di Node.js

Itu Perulangan peristiwa JavaScript adalah salah satu konsep dasar di balik sifat asynchronous dari runtime Node.js. Arsitektur berbasis peristiwa menggunakan bawaannya AcaraEmitter modul untuk memfasilitasi aliran eksekusi yang lancar.

Dengan pemrograman berbasis peristiwa, Node.js memungkinkan Anda membuat aplikasi sisi server yang dapat menangani interaksi pengguna, operasi I/O, dan pemrosesan data waktu nyata. Hal ini terjadi tanpa pemblokiran, sehingga menghasilkan peningkatan kinerja dan pengalaman yang lebih lancar bagi pengguna.

Mengimplementasikan pemrograman berbasis peristiwa di Node.js mudah dilakukan jika Anda memahami dasar-dasar pendefinisian, pemicuan, dan penanganan peristiwa.

Kelas EventEmitter

Dengan AcaraEmitter kelas di Node.js, Anda dapat membuat acara khusus dan melampirkan pendengar acara untuk menanganinya. Untuk menggunakan kelas dalam kode Anda, imporlah dari acara modul seperti ini:

// CommonJS
const { EventEmitter } = require("events")

// ES6
import { EventEmitter } from"events"

Kelas dan fungsi anggotanya kemudian tersedia untuk Anda gunakan dalam aplikasi Anda. Untuk mulai memancarkan dan menangani peristiwa, inisialisasi instance baru dari AcaraEmitter kelas.

Misalnya:

const FoodEvents = new EventEmitter()

Ini menciptakan objek emitor baru yang disebut Acara Makanan yang dapat memancarkan peristiwa dan mendaftarkan pendengar. Kelas EventEmmitter menyediakan tiga metode untuk mendengarkan suatu peristiwa: pada, tambahkan Pendengar, Dan sekali.

Itu pada metode adalah fungsi paling dasar untuk menambahkan pendengar acara, dan tambahkan Pendengar bekerja dengan cara yang persis sama. Keduanya menerima nama acara dan fungsi panggilan balik sebagai argumen. Panggilan balik adalah fungsi pengendali sebenarnya. Anda dapat gunakan pada Dan tambahkan Pendengar secara bergantian.

Inilah cara Anda menangani acara menggunakan pada metode:

FoodEvents.on("cookie_ready", (data) => {
console.log("Cookie ready for packaging, data received: ", data);
})

Menggunakan tambahkan Pendengar sebagai alternatif langsung untuk pada:

FoodEvents.addListener("cookie_ready", (data) => {
console.log(
"Cookie will now be packaged and sent out, data received: ",
data
);
})

Kedua contoh ini akan menambahkan callback ke array event pendengar untuk kue_siap peristiwa. Jika Anda menggunakan keduanya, callbacknya akan diaktifkan secara berurutan.

Itu sekali metode mendaftarkan pendengar acara satu kali yang berjalan pada saat acara berikutnya diaktifkan. Setelah itu, sistem akan menghapusnya dari array pendengar.

Berikut cara menggunakannya sekali untuk menangani acara satu kali:

FoodEvents.once("cookie_sent", (data) => {
console.log("Cookie is sent out, data received: ", data);
})

Dalam hal ini, emitor hanya akan mendengarkan cookie_terkirim acara sekali dan hapus handler setelah dijalankan.

Ketiga metode mengembalikan emitor, sehingga Anda dapat melakukan panggilan berantai ke salah satu metode tersebut.

Jangan lupa bahwa, agar pendengar dapat menangani suatu peristiwa, aplikasi harus memancarkan peristiwa tersebut pada suatu saat. Berikut beberapa contoh kode untuk dipancarkan kue_siap acara menggunakan memancarkan metode:

functionbakeCookie() {
console.log("Cookie is baking, almost ready...")

setTimeout(() => {
FoodEvents.emit("cookie_ready", { flavor: "vanilla cookie" })
}, 3000)
}

bakeCookie()

Saat Anda menjalankan kode ini yang mencetak pemberitahuan di konsol bahwa kue sedang dipanggang, tunggu selama 3 detik, dan keluarkan kue_siap event, Anda akan mendapatkan output seperti gambar di bawah ini:

Ini menunjukkan bagaimana pendengar acara berjalan sesuai urutan Anda mendaftarkannya.

Itu AcaraEmitter kelas menyediakan lebih banyak metode, termasuk:

  • hapus Pendengar: Menghapus instance pendengar dari array pendengar acara. Itu mati metode juga tersedia untuk tujuan ini.
  • prependListener: Metode ini juga mendaftarkan pendengar tetapi, alih-alih menambahkannya ke akhir array pendengar, metode ini menambahkannya ke awal. Ini kemudian akan dijalankan sebelum pendengar lain yang mungkin sudah Anda daftarkan.
  • prependOnceListener: Ini berfungsi seperti prependListener, tetapi pendengar hanya berjalan sekali, seperti dalam kasus sekali.
  • hapusSemua Pendengar: Fungsi ini menghapus semua pendengar yang terdaftar untuk peristiwa bernama tertentu, atau semua pendengar jika Anda tidak memberikan argumen padanya.
  • pendengar: Mengembalikan array pendengar dari nama acara yang Anda berikan sebagai argumen.
  • Nama acara: Anda dapat menggunakan fungsi ini untuk mendapatkan semua nama acara yang pendengarnya telah Anda daftarkan.
  • setMaxListeners: Node.js memberikan peringatan secara default ketika Anda mendaftarkan lebih dari 10 pendengar untuk suatu peristiwa, untuk mencegah kebocoran memori. Anda dapat menyesuaikan nilai default ini menggunakan setMaxListeners. Anda juga dapat memeriksa nilai ini menggunakan getMaxListeners.

Itu acara paket menyediakan fungsionalitas komprehensif untuk pemrograman berbasis peristiwa di Node.js.

Apa Saja Praktik Terbaik Pemrograman Berbasis Peristiwa?

Setiap pendekatan pemrograman memiliki konsekuensinya masing-masing, dan mengabaikan praktik terbaik dapat berdampak buruk pada aplikasi Anda. Berikut ini adalah beberapa praktik terbaik yang perlu dipertimbangkan saat membangun aplikasi berbasis peristiwa:

  • Gunakan nama peristiwa yang ringkas dan deskriptif untuk memungkinkan basis kode yang bersih dan mudah dipelihara.
  • Terapkan praktik penanganan kesalahan dan pencatatan yang baik, untuk memudahkan proses debug kesalahan.
  • Hindari callback hell (menyarangkan beberapa callback) saat menulis pendengar acara. Gunakan janji JavaScript sebagai gantinya.
  • Jangan membuat terlalu banyak pendengar untuk satu acara. Pertimbangkan untuk membagi acara dan merangkainya.

Bangun Aplikasi Dengan Arsitektur yang Tepat

Aturan umum yang berlaku untuk membangun perangkat lunak adalah membuat keputusan arsitektur dan desain yang tepat. Jika Anda mengikuti pendekatan yang salah dalam membangun aplikasi, pada akhirnya Anda akan menghadapi konsekuensinya.

Pemrograman berbasis peristiwa adalah paradigma yang dapat berdampak signifikan pada arsitektur dan kinerja aplikasi. Setiap kali aplikasi Anda, atau sebagian darinya, bergantung pada peristiwa untuk berfungsi, Anda harus mempertimbangkan pemrograman berbasis peristiwa.