EJS
Dankzij Express kunnen we nu dynamisch HTML terugsturen naar de client. Bekijk eventjes dit voorbeeld:
Bezoek http://localhost:3000
en merk op wat er gebeurt.
Bij elke refresh verandert de waarde van het random getal. Kijk naar de source code van deze pagina. Je ziet enkel een getal, geen scripts! Express stuurt een nieuwe inhoud van de pagina bij elke refresh! Laten we het voorbeeld even analyseren:
Deze lijn geeft een willekeurig getal terug. We gebruiken Math.random dat een random getal geeft tussen 0 en 1 en vermenigvuldigen dat met 100.
In plaats van een vaste string, geven we nu het randomgetal mee. Elke refresh voert de callback in app.get uit, dus elke refresh zorgt voor een ander getal.
Templates
Volledige web paginas in variabelen steken is niet ideaal. Wanneer je weet dat ook nog CSS en scripts erbij moeten, dan is het duidelijk dat we een andere oplossing nodig hebben. Express laat toe templates te gebruiken.
We kunnen bv een Hello World pagina maken:
Maar wat als we nu een willekeurige boodschap willen tonen?
Templates laten ons toe HTML paginas te schrijven zoals we dat gewoon zijn maar met variabele inhoud. Express ondersteunt verschillende template "engines". Hier gaan we gebruik maken van EJS.
EJS
Om EJS (Embedded JavaScript templating) te gebruiken installeren we de ejs module:
en we installeren ook de TypeScript types:
We stellen onze express app in om EJS als default view engine te gebruiken:
Net zoals we 'port' de waarde 3000 geven, zetten we de property 'view engine' op ejs.
EJS renderen
EJS bestanden lijken op HTML files maar bevatten wat extras. Laten we starten met een simpel EJS bestand.
Dit bestand bewaren we als index.ejs in de folder /views. Merk op, dit is HTML in een EJS bestand, niets speciaals.
Alle EJS files moeten de extensie .ejs hebben.
Alle EJS files moeten in de views folder staan (die zich in de folder van jouw applicatie bevindt)
Nu passen we onze applicatie aan om de index.ejs te tonen (renderen: omzetten van EJS naar HTML):
Merk op hoe eenvoudig onze route naar / is geworden:
Ipv res.send
gebruiken we res.render
. Render verwacht als parameter de naam van een template die zich in de views folder bevindt. Hier tonen we de index file. Ga naar localhost:3000/ om jouw EJS file als HTML te zien.
Je kan nu verschillende EJS files toevoegen. Render ze via verschillende routes en kijk hoe je nu volledige control hebt over routes en de html die getoond wordt.
Dynamische content
Templates helpen ons de HTML dynamisch te maken. Laten we ons voorbeeld aanpassen zodat we het willekeurig getal weer zien verschijnen. Eerst passen we onze TypeScript aan.
res.render()
heeft ook een tweede optionele parameter: een object waar elke property een variabel is die beschikbaar zal zijn in de EJS file.
In dit voorbeeld heeft de tweede parameter maar 1 property: aRandomNumber
. We geven dit de waarde van de variabele randomGetal
. aRandomNumber
zal dus bij elke refresh een willekeurig getal tussen 0 en 100 bevatten.
We kunnen ook meerdere properties meegeven:
Express zal nu index tonen, maar geeft eerst deze lijst van properties mee. Deze properties zijn nu beschikbaar als variabelen in de EJS file!
Laten we de index.ejs file aanpassen:
Wanneer je nu naar localhost:3000 gaat, zal je het random getal in de tekst zien staan.
EJS variabelen
Om de variabelen te gebruiken moet je de volgende exacte notatie gebruiken:
De naam moet volledig overeenkomen met de naam van de property die je in render() meegeeft.
Last updated