Plugin-API en hooksysteem
Definieer een plugin-API-table en registreer hooks voor levenscyclusgebeurtenissen
Plugin-API en hooksysteem is een gratis Lua Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Lua Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Lua Academy bevat in totaal 4 lessen.
Wat is een hooksysteem?
Met een hooksysteem kunnen plug-ins terugbelfuncties registreren voor specifieke gebeurtenissen in de levenscyclus van de toepassing. De app roept alle geregistreerde hooks op het juiste moment aan.
Het app-object
Het app-object wordt tijdens init aan plug-ins doorgegeven. Het biedt de API voor hookregistratie.
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
endHooks registreren vanuit plug-ins
De functie init van een plug-in ontvangt de app en registreert hooks.
-- 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
}Prioriteiten van hooks
Laat plug-ins een prioriteit opgeven, zodat kritieke hooks (bijvoorbeeld voor authenticatie) vóór optionele hooks (bijvoorbeeld voor logboekregistratie) worden uitgevoerd.
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
endRetourwaarden van hooks
Sommige hooks retourneren waarden die het gedrag wijzigen. De app kan stoppen bij de eerste retourwaarde die niet nil is.
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
endHooks uitschrijven
Bied een methode :off(event, fn) aan om een specifieke hook op basis van een functieverwijzing te verwijderen.
Naamruimten voor hooks
Gebruik gebeurtenisnamen met punten voor structuur: "request.before", "request.after", "db.query".
Opdrachten van plug-ins
Naast hooks kunnen plug-ins opdrachten met een naam registreren die door de app of andere plug-ins kunnen worden aangeroepen.
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)
endMiddlewarepatroon
Hookketens kunnen een middlewarestapel vormen waarin elke hook de volgende aanroept. Zo zijn transformatiepijplijnen voor verzoeken en antwoorden mogelijk.
Plug-ins geïsoleerd testen
Maak in tests een nagebootst app-object om te controleren of plug-inhooks correct worden geregistreerd en aangeroepen.
Documentatieconventie
Documenteer alle beschikbare hooknamen, hun argumenten en hun verwachte retourwaarden. Zo ontstaat het plug-incontract waarop ontwikkelaars van derden vertrouwen.
Vraag over het hooksysteem
Wat is het doel van prioriteit in een hooksysteem?
Samenvatting: plug-in-API en hooksysteem
Bied een registratie-API :on(event, fn) aan op het app-object. Verzend gebeurtenissen met :emit(). Voeg prioriteiten toe voor uitvoering in een vaste volgorde. Gebruik gebeurtenisnamen met naamruimten en documenteer het hookcontract voor ontwikkelaars van plug-ins.
Leer Lua met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 40
- Lessen
- 159
Veelgestelde vragen
Is de les “Plugin-API en hooksysteem” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Lua Academy, waaronder “Plugin-API en hooksysteem”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Lua Academy bevat in totaal 4 lessen.
Wat leer ik in “Plugin-API en hooksysteem”?
Definieer een plugin-API-table en registreer hooks voor levenscyclusgebeurtenissen Je oefent met Lua Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Lua Academy te beginnen?
Ervaring vooraf is niet nodig. Lua Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Plugin-API en hooksysteem”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Lua Academy?
Ja. Elke les over Lua Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Plugins ontdekken en laden
- Plugin-API en hooksysteem
- Pluginuitvoering sandboxen
- Versiebeheer en afhankelijkheidsbeheer