API Plugin dan Sistem Hook
Definisikan tabel API plugin dan daftarkan hook untuk peristiwa siklus hidup.
API Plugin dan Sistem Hook adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.
Apa Itu Sistem Kait?
Sistem kait memungkinkan plugin mendaftarkan fungsi panggil balik untuk peristiwa tertentu dalam siklus hidup aplikasi. Aplikasi memanggil semua kait yang terdaftar pada waktu yang sesuai.
Objek Aplikasi
Objek aplikasi diteruskan ke plugin saat init. Objek ini menyediakan API pendaftaran kait.
local App = {}
App.__index = App
App._hooks = {}
function App:on(event, fn)
self._hooks[event] = self._hooks[event] or {}
table.insert(self._hooks[event], fn)
end
function App:emit(event, ...)
for _, fn in ipairs(self._hooks[event] or {}) do
fn(...)
end
endPlugin Mendaftarkan Kait
Fungsi init plugin menerima aplikasi dan mendaftarkan kait.
-- plugins/auth.lua
return {
name = "auth",
init = function(app)
app:on("request", function(req)
if not req.headers.token then
error("Unauthorized")
end
end)
end
}Prioritas Kait
Izinkan plugin menentukan prioritas agar kait penting (misalnya autentikasi) dijalankan sebelum kait opsional (misalnya pencatatan log).
function App:on(event, fn, priority)
priority = priority or 50
local hooks = self._hooks[event] or {}
hooks[#hooks+1] = {fn=fn, priority=priority}
table.sort(hooks, function(a,b) return a.priority < b.priority end)
self._hooks[event] = hooks
endNilai Kembalian dari Kait
Beberapa kait mengembalikan nilai yang mengubah perilaku. Aplikasi dapat menghentikan proses pada nilai pertama yang bukan nil.
function App:filter(event, data)
for _, fn in ipairs(self._hooks[event] or {}) do
local result = fn(data)
if result ~= nil then return result end
end
return data
endMembatalkan Pendaftaran Kait
Sediakan metode :off(event, fn) untuk menghapus kait tertentu berdasarkan referensi fungsi.
Pemberian Ruang Nama pada Kait
Gunakan nama peristiwa yang dipisahkan titik untuk pengorganisasian: "request.before", "request.after", "db.query".
Perintah yang Disediakan Plugin
Selain kait, plugin dapat mendaftarkan perintah bernama yang dapat dipanggil oleh aplikasi atau plugin lain.
function App:registerCommand(name, fn)
self._commands = self._commands or {}
self._commands[name] = fn
end
function App:run(name, ...)
local cmd = self._commands[name]
if cmd then return cmd(...) end
error("Unknown command: " .. name)
endPola Perantara
Rangkaian kait dapat membentuk tumpukan perantara, tempat setiap kait memanggil kait berikutnya sehingga memungkinkan transformasi permintaan/tanggapan dalam alur pemrosesan.
Menguji Plugin secara Terisolasi
Buat objek aplikasi tiruan dalam pengujian untuk memverifikasi bahwa kait plugin didaftarkan dan dipanggil dengan benar.
Konvensi Dokumentasi
Dokumentasikan semua nama kait yang tersedia, argumennya, dan nilai kembalian yang diharapkan. Ini membentuk kontrak plugin yang menjadi andalan pengembang pihak ketiga.
Pertanyaan tentang Sistem Kait
Apa tujuan prioritas dalam sistem kait?
Ringkasan: API Plugin dan Sistem Kait
Sediakan API pendaftaran :on(event, fn) pada objek aplikasi. Pancarkan peristiwa dengan :emit(). Tambahkan prioritas untuk eksekusi berurutan. Gunakan nama peristiwa dengan ruang nama dan dokumentasikan kontrak kait untuk pengembang plugin.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “API Plugin dan Sistem Hook” gratis?
Ya — teks lengkap “API Plugin dan Sistem Hook” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “API Plugin dan Sistem Hook”?
Definisikan tabel API plugin dan daftarkan hook untuk peristiwa siklus hidup. Kamu berlatih Lua Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Lua Academy?
Tidak diperlukan pengalaman sebelumnya. Lua Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “API Plugin dan Sistem Hook” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Lua Academy ini?
Ya. Setiap pelajaran Lua Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Penemuan dan Pemuatan Plugin
- API Plugin dan Sistem Hook
- Sandbox untuk Eksekusi Plugin
- Pemberian Versi dan Pengelolaan Dependensi