Az Angular keretrendszer fejlődésével új architekturális minták kerülnek előtérbe, amelyek célja a moduláris felépítés, a skálázhatóság és a fejlesztői élmény növelése. Az egyik ilyen megközelítés a router-első stratégia, amely során az alkalmazás routing rendszere kerül előtérbe, mint az alkalmazás szerkezetének meghatározó eleme. Ebben a modellben az alkalmazás indulásától kezdve a navigációs útvonalak állnak a középpontban, és az egész architektúra ezek köré épül fel.
Egy router-első alkalmazás fejlesztése során nincs szükség root modulra – az alkalmazás önálló komponensekből épül fel, és a moduláris szerkezetet lazy-loaded feature modulokkal valósítjuk meg. A megosztott komponenseket is lehetőség szerint lazy-loaded, önálló komponensként kezeljük, így minimalizálva az inicializálási időt és optimalizálva a teljesítményt.
Az alkalmazás létrehozásához a npm create @angular parancsot használjuk, amely már előre konfigurált routinggal generálja a projektet. A routing konfiguráció a src/app/app.routes.ts fájlban történik, míg az útvonalak regisztrálása az app.config.ts fájlban zajlik, ahol az ApplicationConfig interfészen keresztül történik a provideRouter(routes) hozzárendelés. Az alkalmazás bootstrappelése a main.ts fájlban történik a bootstrapApplication hívással.
Miután létrehoztuk az alapokat, következik a fejlesztőkörnyezet konfigurálása. Az mrm eszköz használatával automatizálhatóak azok a beállítások, amelyek az Angular és az editor (pl. VS Code) közötti integrációt biztosítják. Az npx mrm angular-vscode és npx mrm npm-docker parancsok végrehajtása után biztosítható, hogy a fejlesztés során használt konfigurációs fájlok naprakészek legyenek. A build:prod script expliciten definiálja a production build folyamatot, amely biztosítja, hogy a publikálásra kerülő kód optimalizált legyen.
A statikus kódellenőrzés és formázás szintén integrálható az npm run style:fix és npm run lint:fix parancsok segítségével, amelyek egységesítik a stílust és kiszűrik a hibákat.
A stíluslapok konfigurálása is új alapokra helyeződik. A modern böngészők megbízhatóbban követik a CSS specifikációkat, így nincs szükség a klasszikus reset.css vagy normalize.css fájlokra. Ehelyett egy minimális alapstílus bevezetése elegendő lehet, mint például a html, body { height: 100%; } és a body { margin: 0; }. A styles.scss fájlban helyezhetjük el ezeket a globális szabályokat, valamint az alkalmazás brandingjéhez szükséges további osztályokat.
Az Angular Material telepítése során a ng add @angular/material parancs segítségével választhatjuk ki a testreszabott témát, és dönthetünk a globális tipográfia és animációk használatáról. Mivel az alkalmazás modul nélküli, önálló komponensekből áll, a szükséges Material modulokat egyenként
Hogyan építsünk ki megbízható és automatizált tesztelést CI/CD környezetben Angular alkalmazásokhoz?
Az alkalmazásfejlesztés során elengedhetetlen a kód minőségének folyamatos ellenőrzése, amelyhez elengedhetetlen eszköz a végponttól végpontig tartó (end-to-end, e2e) tesztelés. A Cypress tesztkeretrendszer használata lehetővé teszi a fejlesztők számára, hogy megbízható és könnyen karbantartható teszteket írjanak. A tesztek futtatása lokálisan egyszerűen végrehajtható az npx ng e2e paranccsal, azonban a valós környezetben a folyamatos integráció (CI) keretében automatikus futtatásra is szükség van. Ennek biztosítására a CircleCI szolgáltatás kínál hatékony megoldást, amely lehetővé teszi, hogy minden kódváltoztatás előtt automatikusan lefussanak a tesztek.
A tesztek megbízhatóságának egyik kulcsa a tesztesetek strukturált megírása. Például a Cypress környezetben hasznos lehet egyedi azonosítókat (data-testid attribútumokat) használni a DOM elemek kereséséhez. Ez megakadályozza, hogy a tesztek megszakadjanak, ha az oldal felépítése vagy elemeinek elhelyezkedése változik. Ezzel együtt érdemes megismerkedni a Page Object mintával, amely segít a tesztek olvashatóságának és karbantarthatóságának javításában azáltal, hogy az oldalelemekhez tartozó interakciókat külön fájlokba szervezi.
A CI beállítása során a .circleci/config.yml fájlban definiálhatók a build, tesztelési és egyéb folyamatok, amelyeket a CircleCI futtat. A konfiguráció tartalmazza a függőségek telepítését, a kód minőségellenőrzését (lint), a buildet és a Cypress tesztek futtatását is. A Docker alapú környezet lehetővé teszi, hogy a build és tesztelési folyamatok izolált, reprodukálható környezetben fussanak, így a fejlesztők egységes platformon dolgozhatnak.
A GitHub Flow módszertanának alkalmazása szerves része az értékteremtő fejlesztési folyamathoz, ahol a kód változtatásai szigorú ellenőrzési pontokon mennek keresztül. Minden új funkció vagy hibajavítás külön ágon történik, majd többszöri commit után pull request formájában kerül be a csapat elé. A kód átvizsgálása és az automatikus tesztek lefutása után csak jóváhagyott változtatások kerülhetnek be a fő ágba, amely így biztosítja a folyamatosan magas minőséget. Az ágba történő közvetlen push korlátozása elengedhetetlen, mivel ez kényszeríti a fejlesztőket a GitHub Flow szabályainak betartására. A branch protection beállításai között szerepel a pull request kötelezővé tétele, peer review, valamint a CI tesztelések sikeres lefutásának elvárása.
Ez a folyamat nem csupán a hibák kiszűrését teszi lehetővé, hanem támogatja a csapat együttműködését, a kód olvashatóságát és a folyamatos integrációval gyorsabb, biztonságosabb alkalmazáskiadást eredményez. A CI/CD bevezetése mellett fontos megérteni, hogy a tesztelés és a minőségbiztosítás nem egyszeri események, hanem a fejlesztési ciklus állandó részei. A megfelelő infrastruktúra kialakítása – legyen szó helyi tesztelésről vagy automatizált pipeline-ról – hosszú távon időt és erőforrást takarít meg, csökkenti a hibák számát és növeli a szoftver megbízhatóságát.
A tesztelési és CI folyamatok mellett érdemes a fejlesztőknek alaposan megismerniük a kód minőségét biztosító eszközöket, például a lintelést és statikus kódelemzést, amelyek az automatikus hibakeresés első vonalát képezik. Az automatizált pipeline kialakítása során szintén fontos a hatékony cache-kezelés, hogy a függőségek telepítése ne okozzon felesleges időveszteséget. Emellett a GitHub és CircleCI integráció mélyebb megértése lehetővé teszi a komplexebb munkafolyamatok létrehozását, például több környezet (staging, production) kezelését, rollback lehetőségeket vagy a tesztek párhuzamos futtatását.
A szoftverfejlesztési életciklus automatizálása révén a csapat nemcsak a hibák számát csökkenti, hanem javítja a termék minőségét és felgyorsítja a piacra jutást. A folyamatos integráció és folyamatos szállítás (CI/CD) megoldások alkalmazása elengedhetetlen a modern fejlesztési környezetben, különösen összetett és dinamikusan fejlődő projektek esetében.
Hogyan lehet Docker képeket építeni és publikálni Angular alkalmazásokhoz
A Docker egy rendkívül hasznos eszköz, amely lehetővé teszi a konténerek egyszerű kezelését és futtatását, de ugyanúgy, mint az npm csomagok esetében, fontos megérteni azokat az eszközöket, amelyekkel dolgozunk. A Docker telepítése előtt biztosítani kell, hogy a megfelelő környezetet állítsuk be a számítógépünkön. A Docker Desktop telepítését a https://www.docker.com/products/docker-desktop/ oldalon található utasítások alapján végezhetjük el.
Miután sikeresen telepítettük a Dockert, következhet a szükséges npm szkriptek beállítása, amelyek lehetővé teszik Angular alkalmazásaink konténerezését, tesztelését és publikálását. Az alábbiakban bemutatott npm szkriptek Windows 10 és macOS rendszereken is működnek, és lehetőséget biztosítanak arra, hogy egyszerűsítsük a Dockerrel kapcsolatos műveleteinket.
A Docker szkriptek konfigurálása az Angular alkalmazásokhoz elengedhetetlen, hogy automatikusan létrehozhassuk a konténereket, építhessük a képeket és publikálhassuk őket a Docker Hub-ra. Az alábbi lépéseken keresztül biztosíthatjuk, hogy a projektünk megfelelően legyen beállítva a konténerek kezelésére:
-
Regisztrálj egy Docker Hub fiókot a https://hub.docker.com/ oldalon.
-
Hozz létre egy nyilvános (ingyenes) tárolót az alkalmazásod számára.
-
A
package.jsonfájlban add hozzá vagy frissítsd a következő konfigurációs beállításokat:
A namespace a Docker Hub felhasználóneved lesz, és a tároló nevét az általad választott névvel hozhatod létre. Az imageName a konténered azonosítására szolgál. Az imagePort az alkalmazás külső portját határozza meg, míg az internalContainerPort a belső konténer portját, amely jellemzően a Node.js szerverek esetében 3000.
Ezután a Docker szkriptek, amelyeket az npm task futtatásával automatizáltunk, a következő műveletek végrehajtását teszik lehetővé:
-
Build szkript: Az alkalmazás először lefordul, majd a Docker képe épül meg.
A docker:build szkript az Angular alkalmazásunkat lefordítja, majd létrehozza a Docker képet és címkézi azt a verzióval.
-
Tag szkript: A képet címkézni fogjuk a verziószámmal és a legújabb (
latest) címkével.
-
Stop szkript: Megállítja a már futó képet, hogy a
docker:runszkript problémamentesen fusson.
-
Run szkript: Futás előtt leállítja a már futó konténert, majd elindítja az új verziót.
-
Publish szkript: A Docker Hub-ra történő publikálás előtt biztosítani kell a megfelelő bejelentkezést, majd a képek push-olása történik.
-
Taillogs szkript: Használható a Docker konténer naplóinak megtekintésére, ami hasznos hibakereséshez.
-
Open szkript: A konténer elindítása után a böngészőt nyitja meg a megfelelő URL-lel.
-
Debug szkript: A debuggolás során a Docker konténer naplói is megjelennek, miközben az alkalmazás fut.
Miután beállítottuk ezeket a szkripteket, a Docker konténerünk képes lesz automatikusan felépülni, tesztelni, futtatni, majd publikálni a Docker Hub-ra. Fontos, hogy a build és a deploy folyamatok során figyeljünk az alkalmazás környezetére és a verziók helyes kezelésére. Mivel az Angular alkalmazások nagymértékben a környezeti változóktól függnek, elengedhetetlen, hogy mind a fejlesztési, mind a gyártási környezetek megfelelően legyenek konfigurálva.
A Docker használata megkönnyíti az alkalmazásaink kezelhetőségét és skálázhatóságát, de elengedhetetlen, hogy tisztában legyünk a konténerek működésével és a Docker Hub használatával is. A Docker kép készítése és publikálása nemcsak a fejlesztési folyamatot gyorsítja fel, hanem biztosítja, hogy az alkalmazásunk minden környezetben ugyanúgy működjön, akár lokálisan, akár éles környezetben.

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский