Expressz vezérlők szervezése nagy kódbázisokhoz

Három évvel ezelőtt elkezdtem kifejleszteni egy Express.js API-t egy vállalat számára. Kíváncsi voltam, hogy mi lehet a legjobb vezérlő architektúra, amely szervezett maradhat a kódbázis növekedésével.

A Sails vagy a Rails és a kutatásaim hatására jött létre saját rendszerem létrehozása. Nem akartam túlterhelni a projektemet egy olyan teljes keretrendszerrel, mint a Sails, hanem szükség esetén könnyebb függőségeket választottam.

Ezért létrehoztam egy szervezeti rendszert az alkalmazás vezérlőihez, amelyet párosítottam egy házi rakodóval . Azóta mindkettőjüket továbbfejlesztettem annak a tapasztalatnak köszönhetően, amelyet más projektek során szereztem.

Ma már elég magabiztos vagyok ezzel a módszerrel, hogy megosszam, mivel az eredmények meggyőzőek.

Tudomásom szerint néhány nagyvállalat használja. Leegyszerűsíti az új fejlesztők beillesztését, mivel megkönnyíti a kódbázis olvasását.

✅ Így állíthatja be a tiszta vezérlők architektúráját.

A szerkezet

Ha nem számítasz az alkalmazásod növekedésére, akkor gyorsan lesz egy rendezetlen kódbázisod. A szervezési módszert széleskörű kompatibilitásra terveztem, ami azt jelenti, hogy egyszer nem leszel bezárva egy olyan használati esetbe, amelyet nem tudsz megoldani ezzel a módszerrel.

Állítsa be a fájlfát

  • Csoportosítsa az útvonalakat a vezérlőkben
  • Hozzon létre mappákat minden vezérlőhöz
  • Hozzon létre egy fájlt útvonal egyes vezérlő, amely leírja az utat az egyes útvonalak, a módszer hívást, annak adott kapcsolódó middleware, és a korlátozási szintet.
  • Hozzon létre egy fájlt minden vezérlő műveletéhez, amely tartalmazza a végrehajtás módját és a köztes eszközöket .
  • Hozzon létre egy specifikációs fájlt a teszteléshez

Lássuk, hogyan néz ki.

Ne féljen sok fájlt létrehozni . Ez nem lassítja a fejlesztést, és a kódbázist rendezetté és szellőssé teszi. ✨

Töltse be az útvonalakat

Ahhoz, hogy a dolgok a fent meghatározott struktúrát követve működjenek, egy egyszerű, az általam létrehozott betöltőt kell használnunk: Lumie-t. Végigmegy a vezérlőkön, elolvassa a definíciós fájlokat és betölti az útvonalakat.

Ez egy kis csomag, ellenőrizheti a kódforrást a GitHubon.

Fájlok átirányítása

Úgy lettek kialakítva, hogy könnyen olvashatók legyenek. A cél az, hogy a .routing fájlok gyors áttekintésével azonosítani lehessen a fejlesztés során frissítendő módszereket . A következő példában három útvonal jön létre:

  • [PUT] / felhasználó
  • [GET] / felhasználó
  • [GET] / user / reset-password

Kíváncsi vagy, miért vannak az útvonalak „ user ” előtaggal, bár az útválasztási definíció nem írja le. Lumie annak a mappának a nevét használja, amelyben az útválasztási fájl az előtagokat jelöli ki.

Itt vagyunk controllers/user/user.routing.js. Ha a usermappa adminpéldául egy almappában volt, akkor az útvonalakat előtaggal látta volna el admin/user.

Ne feledje, hogy egy opcionális pathmezőt átadhat az útválasztási definíciónak, így azt az alapértelmezett helyett használni fogja.

Műveletek és köztes eszközök

Amint a fentiekből látható, minden útvonalkonfiguráció rendelkezik egy műveleti módszerrel, amely nem más, mint az a logika, amelyet végre kell hajtani, amikor meghívjuk az API útvonalát. Azt javaslom, hogy egy fájlban tartsa: egy műveleti módszer és az opcionálisan társított köztes szoftver .

Korlátozások

Az egyes útvonalkonfigurációkhoz válassza ki a társított korlátozási szintet. A szint értékét átadjuk annak a korlátozási függvénynek, amelyet létrehoz, hogy Lumie működjön. Nézze meg, hogyan lehet inicializálni Lumie-t a saját korlátozási funkciójával.

Ennek csak egy olyan funkciónak kell lennie, amely egy klasszikus expressz köztes szoftvert ad vissza.

Következtetés

Már egy ideje ezt a módszert használom. Szeretem, ha egy ilyen véleményes keretrendszert követnék, amikor fejlődöm. A nap végén segít, hogy megtartsak egy szép kódbázist, és hogy ne váltsak olyan parancsikonokat, mint például túl sok logika írása egy fájlba vagy útvonal meghatározása egy nem megfelelő fájlba.

Köszönöm, hogy elolvasta. Mondja meg a megjegyzésekben, mit gondol a vezérlők ilyen módon történő szervezéséről.

Ha hasznosnak találta ezt a cikket, dobjon el néhányat? ?