Liitännäis-API ja hook-järjestelmä
Määrittäkää liitännäis-API-taulukko ja rekisteröikää hookit elinkaaritapahtumia varten.
Liitännäis-API ja hook-järjestelmä on ilmainen Lua Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Lua Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Lua Academy-kurssilla on yhteensä 4 oppituntia.
Mikä on hook-järjestelmä?
Hook-järjestelmän avulla pluginit voivat rekisteröidä takaisinsoittajia tiettyihin sovelluksen elinkaaren tapahtumiin. Sovellus kutsuu kaikkia rekisteröityjä hookeja oikeaan aikaan.
Sovellusobjekti
Sovellusobjekti välitetään plugineille alustuksen aikana. Se tarjoaa hookien rekisteröinnin ohjelmointirajapinnan.
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 rekisteröi hookeja
Pluginin init-funktio vastaanottaa sovelluksen ja rekisteröi hookit.
-- 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
}Hookien prioriteetit
Sallikaa pluginien määrittää prioriteetti, jotta kriittiset hookit, kuten todennus, suoritetaan ennen valinnaisia hookeja, kuten lokitusta.
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
endHookien palautusarvot
Jotkin hookit palauttavat arvoja, jotka muuttavat toimintaa. Sovellus voi lopettaa käsittelyn ensimmäiseen palautusarvoon, joka ei ole 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
endHookien rekisteröinnin poistaminen
Tarjotkaa :off(event, fn)-metodi, jolla tietty hook voidaan poistaa funktioviitteen perusteella.
Hookien nimeämisalueet
Käyttäkää pisteillä eroteltuja tapahtumanimiä järjestämiseen: "request.before", "request.after", "db.query".
Pluginien tarjoamat komennot
Hookien lisäksi pluginit voivat rekisteröidä nimettyjä komentoja, joita sovellus tai muut pluginit voivat kutsua.
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)
endMiddleware-malli
Hook-ketjut voivat muodostaa middleware-pinon, jossa kukin hook kutsuu seuraavaa. Näin voidaan toteuttaa pyyntöjen ja vastausten muunnosputkia.
Pluginien testaaminen erillään
Luokaa testeissä mock-sovellusobjekti ja varmistakaa, että pluginien hookit rekisteröidään ja niitä kutsutaan oikein.
Dokumentointikäytäntö
Dokumentoikaa kaikki käytettävissä olevat hookien nimet, niiden argumentit ja odotetut palautusarvot. Näin muodostuu plugin-sopimus, johon kolmannen osapuolen kehittäjät voivat luottaa.
Hook-järjestelmää koskeva kysymys
Mikä on prioriteetin tarkoitus hook-järjestelmässä?
Kertaus: pluginien ohjelmointirajapinta ja hook-järjestelmä
Tarjotkaa sovellusobjektissa rekisteröintiohjelmointirajapinta :on(event, fn). Lähettäkää tapahtumia komennolla :emit(). Lisätkää prioriteetti järjestettyä suoritusta varten. Käyttäkää nimiavaruudellisia tapahtumanimiä ja dokumentoikaa hook-sopimus pluginien kehittäjille.
Opi Lua tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 40
- Oppitunnit
- 159
Usein kysytyt kysymykset
Onko oppitunti ”Liitännäis-API ja hook-järjestelmä” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Lua Academy-oppimispolun 3 oppituntia, myös oppitunnin “Liitännäis-API ja hook-järjestelmä”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Lua Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Liitännäis-API ja hook-järjestelmä”?
Määrittäkää liitännäis-API-taulukko ja rekisteröikää hookit elinkaaritapahtumia varten. Harjoittelet Lua Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Lua Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Lua Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Liitännäis-API ja hook-järjestelmä”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Lua Academy-oppitunnilla?
Kyllä. Jokainen Lua Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Liitännäisten etsiminen ja lataaminen
- Liitännäis-API ja hook-järjestelmä
- Liitännäisten suorittamisen hiekkalaatikointi
- Versiointi ja riippuvuuksien hallinta