Inleiding
In de webdevelopmentwereld zijn tal van JavaScript-frameworks populair. Iedere webdeveloper kent waarschijnlijk namen als React, Vue en Angular. Naast de ‘grote drie’ zijn er nog tal van kleinere frameworks die allemaal een bepaalde specialisatie en een eigen plekje in de markt hebben veroverd. Bekend zijn onder meer Svelte en Qwik.
Frameworks zijn echter vooral geschikt voor kernfunctionaliteiten. Denk aan het bouwen met componenten, communicatie tussen componenten onderling, http-communicatie met een backend, routing enzovoort.
Dit betekent dat je als programmeur behoorlijk wat tijd kwijt bent met het inrichten van een complete applicatie met homepage, overzichtspagina’s, detailpagina’s en meer. Frameworks zijn bekend (of: berucht) om de hoeveelheid boilerplatecode die nodig is om een complete applicatie in de lucht te krijgen.
Metaframeworks
Dit is precies het gat waarin metaframeworks zijn gesprongen! Ze breiden de kernmogelijkheden van de basisframeworks uit door extra functionaliteit en abstracties toe te voegen. Hiermee worden veelvoorkomende taken bij het maken van een webapplicatie geautomatiseerd. Dit gebeurt vaak doordat metaframeworks een serie afspraken (conventions) hebben die je als programmeur moet kennen. Daarna werk je een stuk sneller.
De bekendste metaframeworks zijn:
Metaframeworks zijn full-stack frameworks. Ze bestaan uit een client- en een serverdeel.
Convention over configuration
In metaframeworks is bijvoorbeeld vaak afgesproken dat wanneer componenten in een specifieke map /pages in de applicatie staan, deze componenten automatisch een route in de applicatie worden. Je hoeft dan niet meer de router te programmeren en zelf routes en componenten te onderhouden. Het metaframework pikt alle pagina’s op en zorgt dat er routes bestaan. Dit principe is nog veel verder uitgewerkt door met speciale naamgeving ook parameters in de pagina’s te gebruiken, pagina’s te groeperen, pagina’s op de server te renderen voor betere SEO en nog veel meer.
Essentiële kenmerken
Metaframeworks hebben veel overeenkomsten. Dit zijn onder meer:
- Server-Side Rendering (SSR): metaframeworks ondersteunen SSR waardoor je pagina’s vooraf op de server kunt renderen voor betere vindbaarheid in Google (SEO), snellere laadtijden en een verbeterde bezoekerservaring doordat pagina’s sneller laden.
- Static Site Generation (SSG): metaframeworks maken het mogelijk om tijdens de buildfase van de applicatie statische HTML-pagina’s op de server te renderen. Ook dit komt de snelheid van de applicatie ten goede. Via configuratiebestanden kun je altijd aangeven welke pagina’s in de applicatie wél en welke niet gegenereerd moeten worden.
- File Based Routing: door bestanden in een speciale map te plaatsen (zoals /pages) wordt de router automatisch geconfigureerd en krijg je direct een navigatiestructuur voor je applicatie. Dit scheelt erg veel tijd, omdat je het niet zelf hoeft in te stellen.
- API-routing: metaframeworks bieden vaak ingebouwde ondersteuning voor serverloze functies (of: ‘api-routes’). Dit vereenvoudigd communicatie met een backend. In sommige gevallen is een aparte API-server zelfs compleet overbodig. Het voorkomt in ieder geval dat je aparte CORS-instellingen moet toepassen op je server, omdat deze op hetzelfde adres draait als je frontend applicatie (er is vaak een route als /v1/api gedefinieerd). Ook dit gebeurt op basis van conventies. Via configuratiebestanden kun je hier overigens van afwijken, maar dit is niet beslist nodig.
- Bundeling en code-splitting: metaframeworks splitsen op intelligente wijze code in aparte modules en bundelen code die elkaar nodig heeft. Ook dit komt de snelheid ten goede.
- Hot Module Replacement: als developer is het handig dat tijdens het ontwikkelen alleen modules worden vervangen die je daadwerkelijk hebt aangepast – zonder dat de complete applicatie opnieuw gecompileerd hoeft te worden. Dit verbetert de ontwikkelervaring of developer experience of dx.
- SEO-optimalisatie en metatag-beheer: de meeste metaframeworks bieden tools voor het beheren van de titel en metatags op een pagina en andere SEO-elementen zoals Open Graph-tags voor Facebook en X.
Wanneer kies je voor een metaframework?
Als je een klein project hebt, kan het gebruik van een metaframework voor extra overhead zorgen waar je niet op zit te wachten.
In veel andere gevallen zal het je echter veel tijd besparen. Het inzetten van een metaframework is uiteindelijk een tijdsbeparende actie. Je moet in het begin even wat instellen – en je natuurlijk de conventies van het betreffende framework eigen maken – maar die tijd win je dubbel en dwars terug.
Gebruik een metaframework voor:
- SEO-intensieve projecten: als je applicatie afhankelijk is van SEO, zoals e-commerce en contentrijke sites, maken metaframeworks SSR en SSG eenvoudiger. Dit verbetert de doorzoekbaarheid en pageranking.
- Prestatie Optimalisatie: als je snelle laadtijden nodig hebt, helpen SSR, SSG en geoptimaliseerde bundeling om de snelheid te verbeteren. Met name in JavaScript-rijke applicaties zoals Vue, React en Angular is dit een groot pluspunt.
- Snelle Prototyping: metaframeworks versnellen de ontwikkeling omdat ze standaardoplossingen hebben voor routing, API-endpoints en code-splitting. Dit is natuurlijk ideaal voor startups en proof-of-concept applicaties (POC).
- Schaalbaarheid en onderhoudbaarheid: naarmate de app groeit, zorgen metaframeworks voor goede praktijken en structuur. Dit kan het inwerken van nieuwe ontwikkelaars vereenvoudigen. Voorwaarde is dan uiteraard wel dat het principe van convention-over-configuration goed is gevolgd en gedocumenteerd.
Conclusie
Metaframeworks kunnen het leven van een developer behoorlijk veraangenamen. Ze versnellen het proces van applicatieontwikkeling.
Als je een kleine applicatie met beperkte scope maakt waarbij niet veel ingewikkelde configuratie nodig is – en waarvan je weet dat dit in de toekomst ook niet nodig zal zijn! – is het inzetten van een metaframework vanwege de extra overhead waarschijnlijk overbodig. Dan kun je beter de zaken slank houden.
In alle andere gevallen loont het de moeite om een metaframework in te zetten dat past bij de technologie van jouw keuze!
<shameless-plug>
Als er behoefte is aan een training in jouw bedrijf over React, Angular, Vue of een van de metaframeworks, aarzel dan niet om contact op te nemen! Training op jouw of onze locatie, op een tijdstip dat uitkomt. Ook 1:1-trainingen.
</shameless-plug>
-- Peter Kassenaar
1 november 2024