Miért és hogyan használjunk 3rd party libraryket frontend projektekben?
frontend, library, 3rd party
2025-08-31
Heti gondolkodó 2025W31
weekly
2025-08-03
Heti gondolkodó 2025W30
weekly
2025-07-26
Kiszervezett gondolkodás
ai
2025-07-04
Csináljunk legacyból modern szoftvert, egy Angular frontend projekt élményei
angular, frontend, legacy
2025-06-30
Miért utálják az IT-sek a HR-eseket?
hr, recruitment, it
2025-01-19
PHP kódminőség fenntartás
php, qa, static code checking, phpunit, phpcs, phpmd, phpstan, churn, phpdd, psalm, phplint, phan
2024-10-17
Failed: bson encoding error: BSON element key cannot contain null bytes
mongo, mongodb, bson, null, key
2024-08-24
Nem bízol a kollégáidban? Akkor valamit rosszul csinálsz!
bizalom vezetokent
2023-05-03
Dolgok, amikről a programozók azt hiszik, hogy tudják, de tévednek
programozoi-tevhitek-falsehoods
2023-04-08
A programozóktól meg kell szabadulni
chatgpt no-code low-code
2023-01-22
Miért fontosak a személyes adatok egyáltalán?
privacyaware, privacy
2023-01-07
Egy tanmese a szerény, de tehetséges informatikusról, akit én csak Gézának hívok
privacyaware, privacy
2023-01-02
Beskatulyáznád magad egy termékkel? Gondold át még egyszer!
learning, vendorlockin, risky
2022-12-11
Rekrúterekről és állásajánlatokról
bérsáv, recruiter, relevancia
2022-10-30
"A hídon akkor kell átmenni, amikor odaérünk."​ - YAGNI
yagni, pagni
2022-10-17
"A lényeg, hogy a munka készen legyen!"
agile, estimation, becsles, scrum, home office
2022-08-20
Munka vs. hivatás, a klasszikus dilemma
hr, hobbi, munka, egyensuly, hivatas
2022-07-18
Miért nem fogok nálatok technikai interjún részt venni?
technikai interju, hr, recruit, leet code, coding challenge, take home challenge
2022-07-04
"Hogyan építsek kapcsolati tőkét, ha karriert szeretnék váltani?"
linkedin, tippek, trukkok
2022-06-10
Junior/Medior/Senior, hogyan mérjük?
junior, medior, senior, hr, grade, level, experience
2022-05-09
11 tipp frontendeseknek, hogyan tegyék hatékonyabbá a munkájukat
frondend, vscode, angular
2021-10-31
Motion zoom - mozgás alapú képrekonstrukció
#52het
2021-06-01
Gesture Launcher
#52het
2021-05-31
CellEvent, első Android alkalmazásom
#52het
2021-05-19
Notebookcheck, azaz hogyan válasszuk ki a legjobb ár-érték arányú eszközt
#52het
2021-05-18
Torrent multiplexer
#52het
2021-05-17
Process watcher, logger
#52het
2021-05-05
Lazy loading material dialog content
lazy loading, angular, material, dialog
2020-12-28
Runtime configuration loading in Angular
angular, runtime, configuration, settings, environment, production
2020-03-29
How to start an Angular project?
angular
2020-03-11
Az 52 hét projekt
#52het
2020-01-01
Akkutöltöttség-jelző
#52het
2020-01-01
NetClub - Kollégiumi internetszolgáltató
#52het
2019-12-31
DeeJayy - Lost Terminal
#52het
2019-12-31
Counter Strike monitor
#52het
2019-12-31
Kollégiumi CS bajnokság 2005
#52het
2019-12-31
Mozgásérzékelős képrögzítő, Camera Capture
#52het
2019-12-30
Többszörös host pingelő
#52het
2019-12-30
Sávszélesség mérő, tesztelő
#52het
2019-12-30
Generáljunk hamis adatokat
#52het
2019-12-30
SQL lekérdezések parancssorból, odbc-vel
#52het
2019-12-30
Nonogram generátor (aka. "Fesse feketére")
#52het
2019-12-30
Egyedi chat alkalmazás, kliens és szerver
#52het
2019-12-29
FontSelector - betűtípusválasztó / font preview
#52het
2019-12-28
Saját hálózati kommunikációs segédszoftver - sox
#52het
2019-12-28
Csoportos e-mail küldő szoftver Delphiben
#52het
2019-12-28
Universal Api caller module for Angular 7-9 With NGRX state management
Ngrx, API, Effects, HttpClient
2019-07-02
A leghosszabb projekt
#52het
2019-04-19
Legelső kioszk projektem: Stari Sör Jukebox
#52het
2019-02-28
BPM számláló
#52het
2018-11-01
Assembly féléves beadandók
#52het
2018-11-01
Chatbot before it was cool
#52het
2018-10-30
StartX - Cseréljük ki a windows tálcáját és a Start menüt
#52het
2018-10-28
What? - fájltípus azonosító
#52het
2018-10-27
Transport Tycoon DirectX
#52het
2018-10-26
Diff - fájlösszehasonlító
#52het
2018-10-26
De Facto - Szoftverfelügyelet
#52het
2018-10-25
CD és DVD katalogizáló
#52het
2018-09-24
MP3 segédeszközök
#52het
2018-09-24
Keylogger - azaz billentyűleütés-figyelő és naplózó alkalmazás
#52het
2018-08-29
Az örök projekt: személyes weboldal és blog
#52het
2018-08-14
Szógyakorló nyelvtanuláshoz
#52het
2018-08-13
Warzone 2100 mentett játék szerkesztő
#52het
2018-08-13
Rejtett Windows-beállításokat konfiguráló program: TweakMaster
#52het
2018-08-13
A DrótPostaGalamb levelezőprogram adatfájljainak dekódolása
#52het
2018-08-13
Privacy jegyzet
2018-07-30
Egy éve ilyenkor
2018-07-25
The Matrix - konzol szimuláció
#52het
2018-07-13
Kakaóreceptkönyv
kakaó
2018-06-29
Crackelés!
#52het
2018-06-22
A K.I.T.T. challenge
#52het
2018-06-18
Doom 2 botokkal
#52het
2018-06-16
Römi játék Delphiben
#52het
2018-06-09
MeetsCow & DeeJayy - Intro
#52het
2018-06-09
Direct viewer - bitmap megjelenítő
#52het
2018-06-09
bazMAG
#52het
2018-06-09
Console Vision - Konzolos ablakkezelő Delphiben
#52het
2018-05-01
Quake 2 egy floppyn
#52het
2018-04-20
Játék-kitömörítők
#52het
2018-04-12
Tetszőleges program elrejtése Windows tálcáról
#52het
2018-04-05
Személyre szabás
#52het
2018-03-28
A year with Angular 5, 6 - Angular 2018
#angular5 #angular #resources #articles
2018-03-16
Az ikon evolúciója
#52het
2018-03-14
Betűtípusok
#52het
2018-03-04
Billentyűzet-gyakorló
#52het
2018-02-28
Zenél is a DeeJayy?
#52het
2018-02-22
Térképrajzoló az Ascii 3D labirintushoz
#52het
2018-02-19
Ascii 3D labyrinth
#52het
2018-02-14
52 hét - 52 projekt, avagy #eletem
#52het
2018-02-14
Dockerezzünk virtualizált környezetben!
docker, xen, ubuntu
2017-11-12
A cloud-initramfs-copymods hatásai paravirtualizált környezetben
ubuntu, xen, copymods, docker, docker-ce, docker.io
2017-11-11
Virtualizáljunk Xen 4.6-tal Ubuntu 16-on (Xenial)
ubuntu, xen, virtualizálás, hypervisor, debootstrap
2017-11-04
Álláskeresésem története
álláskeresés, it, fejvadászok, linkedin, job
2017-10-24
FAR Manager competitors
far manager, file managers
2010-01-01
Blog
blog
2001-01-02

Miért és hogyan használjunk 3rd party libraryket frontend projektekben?

Frontend fejlesztésnél, főleg ha egy frameworkre építünk, mint az Angular, Vue vagy Svelte, gyakran felmerül, hogy mikor éri meg külső, 3rd party libraryt behúzni a projektbe. Sokan azt hiszik, hogy ezek a libraryk ingyen funkcionalitást adnak, amit nem kell magunknak megírni. Pedig a valóságban minden librarynek van költsége, és alaposan át kell gondolni, mit nyerünk és mit veszíthetünk vele. Az alábbiakban összefoglalom, hogyan döntök a libraryk használatáról, milyen szempontokat nézek, és hogyan kezelem a hosszú távú kihívásokat.

Mikor van értelme külső libraryt használni?

Első körben azt nézem, mennyi idő lenne a kívánt funkcionalitást nulláról lefejleszteni. Ehhez hozzácsapom a projekt jellegét, a várható jövőbeli igényeket és a csapattagok tudását. Ha a funkció gyorsan megírható, nem húzok be külső libraryt. Minek bonyolítsam a projektet egy új függőséggel, ha egyszerűbb saját kézzel megoldani?

Ha a fejlesztési idő közepes vagy hosszabb, akkor már más is számít. Például azt mérlegelem, hogy a funkció fejlesztése során megszerzett tudás mennyire lesz hasznos később. Ha egy üzletileg fontos komponensről van szó, amelynek ismerete segít a rendszer átlátásában vagy bővítésében, akkor inkább házon belül fejlesztem. Egy ügyviteli projektben viszont, ahol mondjuk egy látványos, "eye-candy" komponens kell csak, nem biztos, hogy megéri a tudást bent tartani, mert az nem hoz hosszú távú hasznot. Ilyenkor inkább külső libraryhez nyúlok.

Komolyabb vagy időigényes feladatoknál nagy eséllyel eleve külső libraryn gondolkodom. Például, ha egy projektben földterületek méretét kell kiszámolni, ami üzletileg kulcsfontosságú, de matekban és térgeometriában nem triviális, nem kezdenék saját megoldásba. Egy ilyen speciális területen a külső library időt és energiát spórol, még akkor is, ha a tudás bent tartása elméletileg hasznos lenne.

A libraryk költségei

Nem szabad elfelejteni, hogy a libraryknek mindig van költsége. Először is, időt kell rászánni, hogy megtanuljuk a használatukat. Néha egy library olyan nagy és bonyolult, hogy gyorsabb megírni a funkcionalitást magunknak, mint kitanulni. Máskor egyszerűbb megírni, mint egyáltalán telepíteni. Ráadásul a libraryk változásai, például új verziók vagy breaking change-ek, átírást igényelhetnek a saját kódunkban, ami szintén idő és energia.

Hogyan válasszunk jó libraryt?

A library kiválasztásakor több dolgot megnézek, hogy biztos legyek a megbízhatóságban, a karbantarthatóságban és a hosszú távú illeszkedésben. Először is, azt nézem, mennyire szükséges karbantartani. Ha például külső rendszerekhez csatlakozik, más librarykre épül, vagy olyan alapokra támaszkodik, amelyek hajlamosak biztonsági hibákra (mondjuk regex), akkor van rá esély, hogy gyakran kell frissíteni. Ha a karbantartók nem tudják ezt követni, az gondot okozhat. Viszont ha a library "kész" van, vagyis tökéletesen megcsinálja, amit kell, és nincs szükség további fejlesztésre, akkor akár egy többéves verzió is jó lehet.

A megbízhatóság szempontjából fontos, hogy a library forráskód-követő rendszerében (például GitHubon) milyen a nyitott és lezárt hibajelentések aránya a kód terjedelméhez és bonyolultságához képest, és hogy van-e rendes tesztlefedettség. Az is számít, hányan gondolják jónak a libraryt, például a GitHub "star"-ok vagy az npm letöltések száma alapján. Emellett ellenőrzöm, hogy a legfrissebb verzióban van-e nyitott biztonsági hiba (például a CVE adatbázis vagy npm audit alapján), és hogy a projekt tudja-e egyáltalán használni a legfrissebb verziót. Ha nem, akkor azt is megnézem, hogy vannak-e backportolt biztonsági javítások a régebbi verziókhoz. Ha amúgy minden rendben, akkor a múltbéli reakciók is beszédesek lehetnek: mennyi idő alatt és milyen alapossággal javítják a felfedezett hibákat.

A közösségi támogatás is lényeges. Nem elég, hogy sokan használják; az is fontos, hogy a közösség mennyire aktív a fejlesztésben. Ha csak egy ember dolgozik rajta, az kockázatos, mert ha ő kiesik, megállhat a projekt. A legjobb, ha legalább 2-3 olyan fejlesztő van, akik nagyjából egyformán sokat tesznek hozzá, és megosztják a tulajdonosi jogosultságokat, így a library akkor is életképes marad, ha valaki lelép.

A dokumentáció sem elhanyagolható. Ezt több oldalról is megnézem: van-e például a kódkiegészítésnél függvényleírás, használati példa, vagy tipikus hibák és azok elkerülésének leírása? Van-e egy "kézikönyv" jellegű dokumentáció, ami kereshető, példákkal szemléltetett, és jól formázott? Ezek rengeteget segítenek a fejlesztés során.

A library mérete is számít. Ha csak a funkciók töredékét használom, de a bundle méretét jelentősen megnöveli (például 1% funkcionalitás 25% méretnövekedést okoz), akkor elgondolkodom alternatívákon vagy más megközelítésen. Például lehet, hogy a releváns kódrészletet gond nélkül beemelem a projektbe. Ezzel elveszítek pár előnyt (frissítések, közösségi támogatás), de nem terhelem a felhasználókat olyan kompromisszumokkal, amire nincs szükségük (legyen az akár méretbeli, teljesítmény vagy akár memóriahasználat okán).

A kiválasztásnál azt is nézem, hogy a library mennyire illeszkedik a választott frameworkhöz. Angular esetén például nagy előny, ha van típusdefiníció, mert ez segít a fejlesztésben és a kód megértésében. Ha a library Angular modulon keresztül használható, vagy az Angularban elterjedt reaktív mintákat követi, az még jobb. Az sem mindegy, hogy unit tesztelésnél jól mockolható-e, esetleg eleve ad-e mock változatot.

Mi van, ha a library elavul?

Ha a library elavul vagy a karbantartása leáll, több megoldásom is van. Ha még mindig használható a projekt igényei szerint, egyszerűen forkolom, és a saját csomagkezelőmből használom tovább. Ha már nem jó, akkor számolok azzal, hogy valószínűleg van alternatíva. A migráció időigényes lehet, de tervezhető. Éppen ezért érdemes a libraryt egy belső absztrakciós rétegen keresztül használni, ami csökkenti a csere munkáját. Ha gyors tűzoltás kell, a funkcionalitást átmenetileg saját kézbe veszem (fork + saját csomagkezelő), míg az alternatívára váltás egy lassabb, tervezett folyamat keretében zajlik.

Absztrakciós réteg a rugalmasságért

A külső libraryk gyakran többet tudnak, mint amire a projektben szükség van. Ezért először mindig azt nézem, mire van szükségem, és hogyan illeszthető be az üzleti logika már meglévő mintáiba. A libraryk ritkán passzolnak tökéletesen, ezért egy "lebutított", testreszabott absztrakciós réteget építek köréjük. Ez csak azokat a funkciókat adja, amik kellenek, és úgy, hogy illeszkedjen a projekt struktúrájához. Így, ha később egy kevésbé fejlett libraryre kell váltani, de az a szükséges funkciók nagy részét lefedi, a csere nem okoz nagy gondot.

Licencelés és jogi kérdések

Fontos megnézni, hogy a library milyen licenccel rendelkezik. Ha például egy MIT vagy Apache licencű libraryről van szó, az általában gond nélkül használható a legtöbb projektben. De ha egy szigorúbb, például GPL licencű libraryt nézek, az megkötheti a kezem, mert előírhatja, hogy a saját kódomat is nyílt forráskódúvá kell tennem. Ez üzleti projekteknél nagy gond lehet. Azt is érdemes ellenőrizni, hogy a licenc kompatibilis-e a projekt többi részével, nehogy később jogi problémák jöjjenek elő.

Röviden a mérlegelendő szempontokról

Élettel teli: karbantartott? fejlesztett? utolsó commit? utolsó release? heti letöltések? fő fejlesztők száma?

Biztonságos: CVE? npm audit? backportolt javítások? múltbéli reakciók?

Minőségi: tesztlefedettség? hibajelentések? dokumentáció? közösségi támogatás?

Hatékony: teljesíti a célt? csak a szükséges funkciók? méret? teljesítmény?

Kompatibilis: illeszkedik a frameworkhöz? típusdefiníció? mockolhatóság?

Összegzés

A 3rd party libraryk használata frontend projektekben nem ördögtől való, de alaposan át kell gondolni. A fejlesztési idő, a csapaton belüli tudás értéke, a library megbízhatósága, karbantarthatósága, dokumentációja, licenszelése, mérete, a frameworkhöz való illeszkedése, elterjedtsége, stabilitása és használhatósága mind fontos szempont. Az absztrakciós réteg és az elavulásra felkészült stratégiák pedig biztosítják, hogy a projekt stabil és rugalmas maradjon. Egy jól megválasztott library időt spórol, miközben a fejlesztés fókusza az üzleti logikán maradhat. Viszont sose felejtsük el: minden librarynek van költsége, és csak akkor használjuk, ha a haszna tényleg meghaladja ezt.