0Pricing
Lua Academy · Pelajaran

Penemuan dan Pemuatan Plugin

Pindai direktori untuk menemukan berkas plugin dan muat dengan require atau loadfile.

Penemuan dan Pemuatan Plugin adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 1 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 Arsitektur Plugin?

Arsitektur plugin memungkinkan kode pihak ketiga memperluas aplikasi tanpa mengubah intinya. require dan pemuatan dinamis Lua menjadikan hal ini alami.

Penemuan Plugin berdasarkan Konvensi

Pindai sebuah direktori untuk mencari berkas *.lua yang sesuai dengan konvensi penamaan, lalu muat masing-masing sebagai plugin.

local function discoverPlugins(dir)
  local plugins = {}
  -- platform-specific dir scan; here a mock example
  for _, name in ipairs({"logger", "cache", "auth"}) do
    local ok, mod = pcall(require, dir .. "." .. name)
    if ok then plugins[name] = mod end
  end
  return plugins
end

Menggunakan package.path untuk Penemuan

Perluas package.path agar require dapat menemukan plugin di direktori khusus.

package.path = package.path .. ";./plugins/?.lua"
local plugin = require("myplugin")

loadfile untuk Pemuatan Dinamis

loadfile(path) mengompilasi berkas Lua menjadi potongan kode tanpa mengeksekusinya. Jalankan dengan () untuk mendapatkan tabel modul plugin.

local function loadPlugin(path)
  local chunk, err = loadfile(path)
  if not chunk then return nil, err end
  local ok, result = pcall(chunk)
  if not ok then return nil, result end
  return result
end

Manifes Plugin

Setiap plugin mengekspor tabel manifes yang menjelaskan nama, versi, dan dependensinya.

-- plugins/logger.lua
return {
  name    = "logger",
  version = "1.0",
  deps    = {},
  init    = function(app) app:on("log", print) end,
}

Resolusi Dependensi

Sebelum menginisialisasi plugin, periksa apakah semua dependensinya telah dimuat.

local function initPlugin(app, plugins, name)
  local p = plugins[name]
  if not p then error("Plugin not found: " .. name) end
  for _, dep in ipairs(p.deps or {}) do
    if not plugins[dep] then
      error(("Plugin %s requires %s"):format(name, dep))
    end
  end
  if p.init then p.init(app) end
end

Memuat Ulang Plugin Secara Langsung

Untuk memuat ulang plugin: hapus plugin tersebut dari package.loaded, muat ulang dengan require, lalu daftarkan kembali kaitnya.

package.loaded["plugins.logger"] = nil
plugins.logger = require("plugins.logger")
plugins.logger.init(app)

Registri Plugin

Pertahankan registri plugin yang telah dimuat untuk mencegah pemuatan ganda dan memungkinkan pemeriksaan dependensi.

Isolasi Kesalahan

Muat plugin dengan pcall agar plugin yang rusak tidak menyebabkan seluruh aplikasi berhenti.

local ok, err = pcall(function()
  plugins[name] = loadPlugin(path)
  initPlugin(app, plugins, name)
end)
if not ok then
  print("Plugin load failed:", name, err)
end

Metadata Plugin

Simpan metadata tambahan: deskripsi, penulis, dan skema konfigurasi. Gunakan metadata tersebut untuk menampilkannya di antarmuka pengguna atau melakukan konfigurasi otomatis.

Pemuatan Tertunda

Muat plugin hanya saat pertama kali diperlukan, bukan secara langsung saat aplikasi dimulai. Terapkan melalui tabel proksi dengan metametode __index yang memicu pemuatan.

Pertanyaan tentang Pemuatan Plugin

Apa keuntungan menggunakan pcall saat memuat plugin?

Ringkasan: Penemuan dan Pemuatan Plugin

Temukan plugin dengan memindai direktori atau menggunakan konvensi penamaan. Muat dengan loadfile atau require. Validasi manifes dan selesaikan dependensi. Selalu gunakan pcall untuk mengisolasi kegagalan pemuatan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Penemuan dan Pemuatan Plugin” gratis?

Ya — teks lengkap “Penemuan dan Pemuatan Plugin” 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 “Penemuan dan Pemuatan Plugin”?

Pindai direktori untuk menemukan berkas plugin dan muat dengan require atau loadfile. 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 1 dari 4.

Berapa lama pelajaran “Penemuan dan Pemuatan Plugin” 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

  1. Penemuan dan Pemuatan Plugin
  2. API Plugin dan Sistem Hook
  3. Sandbox untuk Eksekusi Plugin
  4. Pemberian Versi dan Pengelolaan Dependensi
← Kembali ke Lua Academy