0Pricing
Lua Academy · Lektion

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
end

package.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
end

Plugin-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
end

Plugins 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)
end

Plugin-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

  1. Plugins erkennen und laden
  2. Plugin-API und Hook-System
  3. Plugin-Ausführung in einer Sandbox
  4. Versions- und Abhängigkeitsverwaltung
← Zurück zu Lua Academy