Plugins erkennen und laden
Durchsuchen Sie Verzeichnisse nach Plugin-Dateien und laden Sie sie mit require oder loadfile
Plugins erkennen und laden ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist eine Plugin-Architektur?
Eine Plugin-Architektur ermöglicht es Code von Drittanbietern, eine Anwendung zu erweitern, ohne ihren Kern zu verändern. Lua's require und das dynamische Laden machen dies zu einem natürlichen Ansatz.
Plugin-Erkennung nach Konvention
Durchsuchen Sie ein Verzeichnis nach *.lua-Dateien, die einer Namenskonvention entsprechen, und laden Sie anschließend jede Datei als 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
endpackage.path zur Erkennung verwenden
Erweitern Sie package.path, damit require Plugins in einem benutzerdefinierten Verzeichnis finden kann.
package.path = package.path .. ";./plugins/?.lua"
local plugin = require("myplugin")loadfile zum dynamischen Laden
loadfile(path) kompiliert eine Lua-Datei in einen Chunk, ohne ihn auszuführen. Führen Sie ihn mit () aus, um die Modultabelle des Plugins zu erhalten.
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
endPlugin-Manifest
Jedes Plugin exportiert eine Manifest-Tabelle, die seinen Namen, seine Version und seine Abhängigkeiten beschreibt.
-- plugins/logger.lua
return {
name = "logger",
version = "1.0",
deps = {},
init = function(app) app:on("log", print) end,
}Auflösen von Abhängigkeiten
Prüfen Sie vor der Initialisierung eines Plugins, ob alle seine Abhängigkeiten bereits geladen wurden.
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
endPlugins hot-reloaden
Um ein Plugin neu zu laden: Entfernen Sie es aus package.loaded, laden Sie es mit require neu und registrieren Sie die Hooks erneut.
package.loaded["plugins.logger"] = nil
plugins.logger = require("plugins.logger")
plugins.logger.init(app)Plugin-Registry
Verwalten Sie eine Registry der geladenen Plugins, um doppeltes Laden zu verhindern und die Prüfung von Abhängigkeiten zu ermöglichen.
Fehlerisolierung
Laden Sie Plugins mit pcall, damit ein fehlerhaftes Plugin nicht die gesamte Anwendung zum Absturz bringt.
local ok, err = pcall(function()
plugins[name] = loadPlugin(path)
initPlugin(app, plugins, name)
end)
if not ok then
print("Plugin load failed:", name, err)
endPlugin-Metadaten
Speichern Sie zusätzliche Metadaten: Beschreibung, Autor und Konfigurationsschema. Verwenden Sie sie zur Anzeige in der Benutzeroberfläche oder zur automatischen Konfiguration.
Verzögertes Laden
Laden Sie Plugins erst, wenn sie zum ersten Mal benötigt werden, statt sie beim Start sofort zu laden. Implementieren Sie dies über eine Proxy-Tabelle mit einer __index-Metamethode, die das Laden auslöst.
Frage zum Laden von Plugins
Welchen Vorteil bietet die Verwendung von pcall beim Laden von Plugins?
Zusammenfassung: Plugin-Erkennung und -Laden
Erkennen Sie Plugins durch das Durchsuchen von Verzeichnissen oder mithilfe von Namenskonventionen. Laden Sie sie mit loadfile oder require. Validieren Sie Manifeste und lösen Sie Abhängigkeiten auf. Verwenden Sie immer pcall, um Ladefehler zu isolieren.
Häufig gestellte Fragen
Ist die Lektion „Plugins erkennen und laden“ kostenlos?
Ja — der vollständige Text von „Plugins erkennen und laden“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Plugins erkennen und laden“?
Durchsuchen Sie Verzeichnisse nach Plugin-Dateien und laden Sie sie mit require oder loadfile Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Lua Academy zu starten?
Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Plugins erkennen und laden“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?
Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Plugins erkennen und laden
- Plugin-API und Hook-System
- Plugin-Ausführung in einer Sandbox
- Versions- und Abhängigkeitsverwaltung