{"id":52165,"date":"2023-04-27T12:34:17","date_gmt":"2023-04-27T10:34:17","guid":{"rendered":"https:\/\/kinsta.com\/nl\/?p=52165&#038;preview=true&#038;preview_id=52165"},"modified":"2023-11-03T07:44:49","modified_gmt":"2023-11-03T06:44:49","slug":"eleventy","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/eleventy\/","title":{"rendered":"Zo maak je een stijlvolle statische website maakt met Eleventy (11ty)"},"content":{"rendered":"<p>Met de opkomst van <a href=\"https:\/\/kinsta.com\/blog\/static-site-generator\/\">statische sitegenerators<\/a> (SSG&#8217;s) zoals Eleventy is het maken van een stijlvolle en effici\u00ebnte <a href=\"https:\/\/kinsta.com\/nl\/blog\/wat-is-een-statische-website\/\">statische website<\/a> nog nooit zo eenvoudig geweest.<\/p>\n<p>In dit artikel onderzoeken we hoe je met Eleventy een prachtige en functionele statische portfoliowebsite kunt maken zonder dat je een server-side taal of database nodig hebt.<\/p>\n<p>Ook leer je hoe je je statische website direct vanuit je GitHub repository kunt deployen naar Kinsta&#8217;s <a href=\"https:\/\/sevalla.com\/static-site-hosting\/\">Statische Site Hosting<\/a>, zodat je website snel live is op een gratis <em>.kinsta.page<\/em> domein.<\/p>\n<p>Hier is een <a href=\"http:\/\/eleventy-portfolio-h9ahf.kinsta.page\/\" target=\"_blank\" rel=\"noopener noreferrer\">live demo<\/a> van de statische portfoliosite die je met Eleventy bouwt.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/11ty-portfolio-static-site.jpg\" alt=\"Stijlvolle statische portfolio website\" width=\"1600\" height=\"788\"><figcaption class=\"wp-caption-text\">Stijlvolle statische portfoliowebsite<\/figcaption><\/figure>\n<p>Je hebt toegang tot de <a href=\"https:\/\/github.com\/kinsta\/11ty-portfolio\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub repository<\/a> van dit project als je het nader wilt bekijken.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Wat is Eleventy?<\/h2>\n<p>Eleventy, ook bekend als 11ty, is een statische sitegenerator die websites maakt op basis van <a href=\"https:\/\/kinsta.com\/blog\/what-is-html\/\">HTML<\/a>, <a href=\"https:\/\/kinsta.com\/nl\/blog\/css-best-practices\/\">CSS<\/a> en <a href=\"https:\/\/kinsta.com\/javascript\/\">JavaScript<\/a> zonder dat daar databases en <a href=\"https:\/\/kinsta.com\/nl\/blog\/backend-vs-frontend\/\">backend<\/a> programmeertalen voor nodig zijn.<\/p>\n<p>Eleventy staat bekend om zijn eenvoud en flexibiliteit, omdat het je niet dwingt om slechts \u00e9\u00e9n templatetaal of framework te gebruiken. Het ondersteunt meer dan 10 templatetalen en je kunt er zelfs zoveel gebruiken als je wilt in een enkel project:<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/11ty-template-languages.jpg\" alt=\"Templatetalen die zijn ondersteund door Eleventy\" width=\"1600\" height=\"226\"><figcaption class=\"wp-caption-text\">Eleventy templatetalen<\/figcaption><\/figure>\n<p>Eleventy, zoals de meeste SSG&#8217;s, staat je toe de inhoud van je statische site op te bouwen met herbruikbare componenten in plaats van complete HTML documenten te maken voor elke pagina.<\/p>\n\n<h2>Zo installeer je Eleventy<\/h2>\n<p>Eleventy installeren is eenvoudig. Dit is hoe je het doet:<\/p>\n<ol start=\"1\">\n<li>Zorg ervoor dat je <a href=\"https:\/\/kinsta.com\/nl\/blog\/wat-is-node-js\/\">Node.js<\/a> op je computer hebt ge\u00efnstalleerd. Je kunt dit checken door het commando <code>node -v<\/code> in je terminal uit te voeren. Niet beschikbaar? Zo <a href=\"https:\/\/kinsta.com\/nl\/blog\/node-js-installeren\/\">installeer je Node.js<\/a> op je computer.<\/li>\n<li>Maak een nieuwe map aan voor je project.<\/li>\n<li>Open je terminal en voer het commando <code>npm init -y<\/code> uit in de map van je project om een nieuw Node.js project te initialiseren, waarbij een <strong>package.json<\/strong> bestand met standaardinstellingen wordt aangemaakt.<\/li>\n<li>Voer het commando <code>npm install @11ty\/eleventy --save-dev<\/code> uit om het pakket als ontwikkelingsdependency in je project te installeren.<\/li>\n<li>Dat was het! Je kunt Eleventy nu draaien door het commando <code>npx @11ty\/eleventy<\/code> in je projectdirectory uit te voeren. Dit zal je sitebestanden genereren en uitvoeren naar een <strong>_site<\/strong> map (of je geconfigureerde map) in je projectmap.<\/li>\n<\/ol>\n<p><strong>Opmerking:<\/strong> Als je het commando <code>npx @11ty\/eleventy<\/code> uitvoert. Krijg je deze output:<\/p>\n<pre><code class=\"language-bash\">[11ty] Wrote 0 files in 0.01 seconds (v2.0.0)<\/code><\/pre>\n<p>Hier worden 0 bestanden geschreven omdat er geen templates in de map van je project staan.<\/p>\n<h2>Eleventy commando&#8217;s en configuratie<\/h2>\n<p>Je hebt nu je Eleventy project gemaakt, maar je bent er nog niet. Je moet nu enkele configuraties maken en op de hoogte zijn van enkele basic commando&#8217;s voor de statische site die naar de browser kan worden geleverd.<\/p>\n<h3>Eleventy commando&#8217;s<\/h3>\n<p>Hier zijn enkele van de belangrijkste Eleventy commando&#8217;s die je moet kennen:<\/p>\n<ul>\n<li><code>npx @11ty\/eleventy<\/code>: Dit commando wordt gebruikt om je site te bouwen en het resultaat uit te voeren naar de map <strong>_site<\/strong> (of welke map je ook hebt geconfigureerd als je outputmap).<\/li>\n<li><code>npx @11ty\/eleventy --serve<\/code>: Dit commando start een lokale server zodat je je site in je browser kunt bekijken. Als je wijzigingen aanbrengt aan je site, wordt je project automatisch opnieuw opgebouwd en bijgewerkt in je browser.<\/li>\n<li><code>npx @11ty\/eleventy --serve --port=8081<\/code>: Dit commando start de Eleventy server en specificeert een aangepaste poort waarop de server luistert.<\/li>\n<li><code>npx @11ty\/eleventy --watch<\/code>: Dit commando let op veranderingen in je projectbestanden en bouwt je site automatisch opnieuw op als dat nodig is.<\/li>\n<\/ul>\n<p>Je hoeft deze commando&#8217;s niet te onthouden, want je kunt ze toevoegen aan algemene commando&#8217;s in het scripts object van je package.json bestand:<\/p>\n<pre class=\"language-bash\"><code class=\"language-bash\">\"scripts\": {\n    \"build\": \"npx @11ty\/eleventy\",\n    \"start\": \"npx @11ty\/eleventy --serve\",\n    \"watch\": \"npx @11ty\/eleventy --watch\"\n  },<\/code><\/pre>\n<p>Nu kun je <code>npm start<\/code> gebruiken om je applicatie te leveren in plaats van <code>npx @11ty\/eleventy --serve<\/code>, en ook kun je <code>npm run build<\/code> uitvoeren in plaats van <code>npx @11ty\/eleventy<\/code>.<\/p>\n<h3>Zo configureer je statische sites met Eleventy<\/h3>\n<p>Eleventy is standaard &#8220;zero-config&#8221; en heeft flexibele configuratie-opties. Hier zijn enkele belangrijke configuratie-opties die je moet kennen:<\/p>\n<ul>\n<li><strong>input:<\/strong> Met deze optie kun je de map van je projectbestanden opgeven. Het is het beste om <strong>src<\/strong> te gebruiken.<\/li>\n<li><strong>output:<\/strong> Met deze optie kun je de map opgeven waar je gebouwde site moet worden uitgevoerd. Standaard voert Eleventy uit naar de map <strong>_site<\/strong>. (Je hoeft dit niet te veranderen).<\/li>\n<li><strong>templateFormats:<\/strong> Met deze optie kun je opgeven welke bestandsextensies als template moeten worden verwerkt. Standaard verwerkt Eleventy <strong>.html<\/strong>, <strong>.njk<\/strong> en <strong>.md<\/strong> bestanden als template.<\/li>\n<\/ul>\n<p>Dit zijn slechts enkele commando&#8217;s en configuratie-opties die beschikbaar zijn in Eleventy. Om je Eleventy project te configureren, maak je een <strong>.eleventy.js<\/strong> bestand aan in de root van je project. Plak vervolgens deze code in het bestand om je project een structuur te geven die een input directory bevat:<\/p>\n<pre class=\"language-js\"><code class=\"language-js\">module.exports = function (eleventyConfig) {\n    return {\n        dir: {\n            input: 'src',\n        },\n    };\n};<\/code><\/pre>\n<p><strong>Opmerking:<\/strong> <code>eleventyConfig<\/code> wordt als argument doorgegeven, waardoor meer configuratie-opties ontstaan die later in dit project gebruikt zullen worden.<\/p>\n<h2>Een voorbeeld van een Eleventy site<\/h2>\n<p>Je kent nu enkele belangrijke commando&#8217;s die je kunt gebruiken om je statische Eleventy website te previewen, maar wanneer je het <code>npm run build<\/code> (<code>npx @11ty\/eleventy<\/code>) commando uitvoert, wordt er niets geleverd. Dit komt omdat je geen template bestand hebt.<\/p>\n<p>Je kunt een <strong>src<\/strong> map maken in de hoofdmap van je project, en dan enkele templatebestanden maken zoals <strong>index.html<\/strong> of de templatetaal van je voorkeur gebruiken om de homepage weer te geven:<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n    &lt;head&gt;\n        &lt;meta charset=\"UTF-8\" \/&gt;\n        &lt;meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" \/&gt;\n        &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/&gt;\n        &lt;title&gt;Eleventy Static Site&lt;\/title&gt;\n    &lt;\/head&gt;\n    &lt;body&gt;\n        Hello World!\n    &lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Als je nu het <code>npm run build<\/code> commando uitvoert, wordt er een <strong>_site<\/strong> map aangemaakt met het gegenereerde statische bestand. Je wilt dit natuurlijk naar je browser sturen en een aantal hot reloading features inschakelen. Dit kan door het commando <code>npx @11ty\/eleventy --serve<\/code> uit te voeren, dat je nu hebt geconfigureerd als <code>npm start<\/code>. Dit zal je site aanbieden op http:\/\/localhost:8080\/.<\/p>\n<h2>Zo maak je een statische portfoliowebsite met Eleventy<\/h2>\n<p>Je weet nu hoe je een statische site maakt met Eleventy. Laten we het portfolio project gaan maken.<\/p>\n<p>Je kunt een nieuw Eleventy project vanaf de grond opzetten, of <a href=\"https:\/\/github.com\/olawanlejoel\/11ty-portfolio-starter\">onze starterbestanden<\/a> gebruiken die de afbeeldingen, CSS en content voor dit project bevatten om je te helpen de dingen te versnellen. In GitHub, selecteer <strong>Use this template<\/strong> &gt; <strong>Create a new repository<\/strong> om deze assets en de initi\u00eble configuratiebestanden naar een nieuwe eigen repository te kopi\u00ebren, en download ze dan naar je lokale machine.<\/p>\n<p>Je project zal de volgende structuur hebben:<\/p>\n<pre class=\"language-bash\"><code class=\"language-bash\">\u251c\u2500\u2500 node_modules\/\n\u251c\u2500\u2500 public\/\n\u251c\u2500\u2500 src\/\n     \u251c\u2500\u2500 _includes\n     \u251c\u2500\u2500 layouts\n     \u251c\u2500\u2500 assets\n     \u251c\u2500\u2500 css\n     \u251c\u2500\u2500 projects\n     \u2514\u2500\u2500 index.njk\n\u251c\u2500\u2500 .eleventy.js\n\u251c\u2500\u2500 .gitignore\n\u251c\u2500\u2500 package.lock.json\n\u2514\u2500\u2500 package.json<\/code><\/pre>\n<h3>Zo gebruik je templates in Eleventy<\/h3>\n<p>Wanneer je Eleventy gebruikt, zijn er drie belangrijke typen templates die je moet begrijpen. Deze templates kun je maken met Nunjucks, waarmee je variabelen, loops, conditionals en andere logica kunt defini\u00ebren die gebruikt kunnen worden om de inhoud van de pagina dynamisch te genereren.<\/p>\n<ul>\n<li><strong>Page templates:<\/strong> Deze defini\u00ebren de structuur en inhoud van individuele pagina&#8217;s op je website.<\/li>\n<li><strong>Layout templates:<\/strong> Deze defini\u00ebren de algemene structuur en vormgeving van je website pagina(&#8216;s). Ze bevatten meestal gemeenschappelijke elementen zoals headers en footers, navigatiemenu&#8217;s en zijbalken, die tussen meerdere pagina&#8217;s worden gedeeld.<\/li>\n<li><strong>Partial templates:<\/strong> Deze defini\u00ebren kleine, herbruikbare delen van de HTML opmaak van je website. Ze worden gebruikt om gemeenschappelijke elementen te defini\u00ebren, zoals headers en footers, navigatiemenu&#8217;s en zijbalken, die kunnen worden opgenomen in layout- en page templates.<\/li>\n<\/ul>\n<p>Nu je elk van deze typen templates begrijpt is het tijd om de templates te maken voor de statische portfoliowebsite.<\/p>\n<h4>Zo doe je de markup in Eleventy<\/h4>\n<p>Maak in de map <strong>src<\/strong> een map <strong>_includes<\/strong>. Deze zal al onze layouts en partial bestanden bevatten.<\/p>\n<p>Je kunt een <strong>layouts<\/strong> map maken voor het organiseren van al je templates, met behulp van de templating taal van je voorkeur, zoals Nunjucks.<\/p>\n<p>Maak een <strong>base.njk<\/strong> bestand voor de algemene lay-out van al je pagina&#8217;s.<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n    &lt;head&gt;\n        &lt;meta charset=\"UTF-8\" \/&gt;\n        &lt;meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" \/&gt;\n        &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/&gt;\n        &lt;link rel=\"icon\" href=\"\/assets\/favicon.jpeg\" \/&gt;\n        &lt;link\n            rel=\"stylesheet\"\n            href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.2.1\/css\/all.min.css\"\n            integrity=\"sha512-MV7K8+y+gLIBoVD59lQIYicR65iaqukzvf\/nwasF0nqhPay5w\/9lJmVM2hMDcnK1OnMGCdVK+iQrJ7lzPJQd1w==\"\n            crossorigin=\"anonymous\"\n            referrerpolicy=\"no-referrer\"\n        \/&gt;\n        &lt;link rel=\"stylesheet\" href=\"\/css\/global.css\" \/&gt;\n        &lt;title&gt;J.'s Portfolio&lt;\/title&gt;\n    &lt;\/head&gt;\n    &lt;body&gt;\n        &lt;div&gt;\n            {{ content | safe }}\n        &lt;\/div&gt;\n    &lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>In de bovenstaande code wordt een algemene HTML opmaak aangemaakt en Font Awesome van een CDN opgenomen, zodat je toegang hebt tot de pictogrammen ervan. Ook wordt de contentvariabele doorgegeven zodat alle inhoud van elke pagina die deze opmaak gebruikt wordt opgenomen.<\/p>\n<p>Maar dat is niet het hele verhaal wat betreft opmaak. Je opmaak zal enkele delen bevatten die op elke pagina verschijnen, zoals de navbar en de footer. Laten we voor elk van deze secties partials maken.<\/p>\n<h4>Hoe gebruik je partials in Eleventy?<\/h4>\n<p>Alle deelbestanden worden opgeslagen in de map <strong>_includes<\/strong>. Voor een goede organisatie kun je ze opslaan in een <strong>componentenmap<\/strong> in de map <strong>_includes<\/strong>. Maak een <strong>navbar.njk<\/strong> en sla de onderstaande code op voor je Navbar Partials.<\/p>\n<pre><code class=\"language-html\">&lt;div class=\"nav-container\"&gt;\n    &lt;div class=\"logo\"&gt;\n        &lt;a href=\"\/\"&gt;\n            J.\n        &lt;\/a&gt;\n    &lt;\/div&gt;\n    &lt;div class=\"nav\"&gt;\n        &lt;a href=\"\/projects\" class=\"link\"&gt;\n            Projects\n        &lt;\/a&gt;\n        &lt;a href=\"https:\/\/docs.google.com\/document\/d\/10ZosQ38Z3804KYPcb_aZp9bceoXK-q3GrkHjYshqIRE\/edit?usp=sharing\" class=\"cta-btn\"&gt;Resume&lt;\/a&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Maak vervolgens een bestand <strong>footer.njk<\/strong> voor je Footer Partials:<\/p>\n<pre><code class=\"language-html\">&lt;hr \/&gt;\n&lt;div class=\"footer-container\"&gt;\n    &lt;p&gt;\u00a9 2023 Joel's Portfolio&lt;\/p&gt;\n    &lt;div class=\"social_icons\"&gt;\n        &lt;a\n            href=\"https:\/\/twitter.com\/olawanle_joel\"\n            aria-label=\"Twitter\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n        &gt;\n            &lt;i class=\"fa-brands fa-twitter\"&gt;&lt;\/i&gt;\n        &lt;\/a&gt;\n        &lt;a\n            href=\"https:\/\/github.com\/olawanlejoel\"\n            aria-label=\"GitHub\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n        &gt;\n            &lt;i class=\"fa-brands fa-github\"&gt;&lt;\/i&gt;\n        &lt;\/a&gt;\n        &lt;a\n            href=\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\"\n            aria-label=\"LinkedIn\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n        &gt;\n            &lt;i class=\"fa-brands fa-linkedin\"&gt;&lt;\/i&gt;\n        &lt;\/a&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Voeg deze gedeelten toe aan je pagina of layout template met behulp van het <code>{% include %}<\/code> statement. Zo ziet de <strong>layouts\/base.njk<\/strong> template eruit als je de Navbar en Footer partials toevoegt:<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n    &lt;head&gt;\n        &lt;meta charset=\"UTF-8\" \/&gt;\n        &lt;meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" \/&gt;\n        &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/&gt;\n        &lt;link rel=\"icon\" href=\"\/assets\/favicon.jpeg\" \/&gt;\n        &lt;link\n            rel=\"stylesheet\"\n            href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.2.1\/css\/all.min.css\"\n            integrity=\"sha512-MV7K8+y+gLIBoVD59lQIYicR65iaqukzvf\/nwasF0nqhPay5w\/9lJmVM2hMDcnK1OnMGCdVK+iQrJ7lzPJQd1w==\"\n            crossorigin=\"anonymous\"\n            referrerpolicy=\"no-referrer\"\n        \/&gt;\n        &lt;link rel=\"stylesheet\" href=\"\/css\/global.css\" \/&gt;\n        &lt;title&gt;J.'s Portfolio&lt;\/title&gt;\n    &lt;\/head&gt;\n    &lt;body&gt;\n        &lt;div&gt;\n            {% include \"components\/navbar.njk\" %}\n                {{ content | safe }}\n            {% include \"components\/footer.njk\" %}\n        &lt;\/div&gt;\n    &lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Wanneer je het commando <code>npm start<\/code> uitvoert, verschijnt deze opmaak niet omdat hij niet is toegevoegd aan een paginatemplate. Maak een paginatemplate en voeg deze opmaak toe.<\/p>\n<h4>Zo maak je paginatemplates aan in Eleventy<\/h4>\n<p>Maak in je <strong>src<\/strong> map een <strong>index.njk<\/strong> bestand aan dat dient als startpagina van je portfoliowebsite. Deze pagina zal de basislayout gebruiken:<\/p>\n<pre><code class=\"language-html\">---\nlayout: layouts\/base.njk\ntitle: Home\n---\n&lt;h1&gt; This is the {{title}} Page. &lt;\/h1&gt;<\/code><\/pre>\n<p>Als je het commando <code>npm start<\/code> uitvoert, zal je statische site laden op <strong>http:\/\/localhost:8080\/<\/strong>. Zo ziet de uitvoer eruit:<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/portfolio-home-page.jpg\" alt=\"Paginatemplate zonder styling\" width=\"1600\" height=\"470\"><figcaption class=\"wp-caption-text\">Paginatemplate zonder styling<\/figcaption><\/figure>\n<h3>Zo gebruik je CSS en afbeeldingen in Eleventy<\/h3>\n<p>Je zult zien dat in het <strong>layouts\/base.njk<\/strong> bestand een CSS-bestand is gekoppeld om de portfoliopagina op te maken, maar wanneer de site wordt geladen, worden de CSS-stijlen niet be\u00efnvloed omdat het CSS-bestand niet is toegevoegd aan de map <strong>_site<\/strong>.<\/p>\n<p>Om CSS te laten werken, configureer je het in je <strong>.eleventy.js<\/strong> bestand met de <code>eleventyConfig<\/code> parameter. Dit maakt het mogelijk dat Eleventy weet dat het (de) CSS bestand(en) bestaan en ook let op eventuele wijzigingen in het CSS bestand.<\/p>\n<p>In de <strong>src<\/strong> map kun je een <strong>css<\/strong> map maken om alle CSS bestanden die je in je project gaat gebruiken op te slaan, maar voor dit artikel kun je \u00e9\u00e9n CSS bestand gebruiken &#8211; <a href=\"https:\/\/github.com\/kinsta\/11ty-portfolio\/blob\/starter\/src\/css\/global.css\" target=\"_blank\" rel=\"noopener noreferrer\">global.css<\/a>. Je kunt dan de <strong>css <\/strong>map configureren, zodat hij alle bestanden binnen de map configureert:<\/p>\n<pre><code class=\"language-js\">eleventyConfig.addPassthroughCopy('src\/css');\neleventyConfig.addWatchTarget('src\/css');<\/code><\/pre>\n<p>Hetzelfde geldt voor afbeeldingen. Als je een afbeelding toevoegt aan je pagina, zal deze niet worden weergegeven totdat je de map waarin je afbeeldingen worden opgeslagen hebt geconfigureerd. Maak een <strong>assets<\/strong> map om al onze afbeeldingen in op te slaan en configureer de <strong>assets<\/strong> map.<\/p>\n<pre><code class=\"language-js\">eleventyConfig.addPassthroughCopy('src\/assets');<\/code><\/pre>\n<p>Zo ziet je configuratiebestand er nu uit:<\/p>\n<pre><code class=\"language-js\">module.exports = function (eleventyConfig) {\n    eleventyConfig.addPassthroughCopy('src\/assets');\n    eleventyConfig.addPassthroughCopy('src\/css');\n    eleventyConfig.addWatchTarget('src\/css');\n\n    return {\n        dir: {\n            input: 'src',\n        },\n    };\n};<\/code><\/pre>\n<p>Wanneer je <code>npm start<\/code> uitvoert, zal de CSS styling nu wel werken werken, en zal je startpagina er zo uitzien:<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/portfolio-home-page-with-css.jpg\" alt=\"Het uiterlijk van de template nadat de opmaak is toegevoegd\" width=\"1600\" height=\"436\"><figcaption class=\"wp-caption-text\">Het uiterlijk van de template nadat de opmaak is toegevoegd<\/figcaption><\/figure>\n<h2>Partials maken en toevoegen aan de homepagina<\/h2>\n<p>Je bent er nu in geslaagd een opmaak te maken en die toe te voegen aan je homepagina (<strong>index.njk<\/strong>). Laten we de homepagina aanpassen om wat informatie over jezelf te delen, zoals meer informatie over jou, je vaardigheden en contactgegevens.<\/p>\n<p>Je kunt besluiten je code en opmaak rechtstreeks aan de <strong>index.njk<\/strong> template toe te voegen, maar laten we individuele Partials maken voor de Hero, About, Skills en Contactinformatie.<\/p>\n<h3>De hero partials<\/h3>\n<p>Dit is de eerste sectie onder de Navbar, die primair bedoeld is om gebruikers een idee te geven waar de website over gaat.<\/p>\n<pre><code class=\"language-html\">&lt;div class=\"hero-container\"&gt;\n    &lt;img src='assets\/profile.jpeg' class=\"profile-img\" alt=\"Joe's personal headshot\" \/&gt;\n    &lt;div class=\"hero-text\"&gt;\n        &lt;h1&gt;Hey, I'm Joe \ud83d\udc4b&lt;\/h1&gt;\n        &lt;p&gt;\n            I'm a software developer based in Lagos, Nigeria. I specialize in building (and occasionally designing) exceptional websites, applications, and everything in between.\n        &lt;\/p&gt;\n        &lt;div class=\"social-icons\"&gt;\n            &lt;a href=\"https:\/\/twitter.com\/olawanle_joel\"&gt;\n                &lt;i class=\"fa-brands fa-twitter\"&gt;&lt;\/i&gt;\n            &lt;\/a&gt;\n            &lt;a href=\"https:\/\/github.com\/olawanlejoel\"&gt;\n                &lt;i class=\"fa-brands fa-github\"&gt;&lt;\/i&gt;\n            &lt;\/a&gt;\n            &lt;a href=\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\"&gt;\n                &lt;i class=\"fa-brands fa-linkedin\"&gt;&lt;\/i&gt;\n            &lt;\/a&gt;\n        &lt;\/div&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Bovenstaande code bevat wat informatie over jou, samen met wat sociale pictogrammen om links naar je sociale media profielen te tonen.<\/p>\n<p>De Hero gedeeltes moeten er zo uitzien:<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/portfolio-hero-partials.jpg\" alt=\"De Hero partials tonen catchy basisgegevens over de developer\" width=\"1600\" height=\"680\"><figcaption class=\"wp-caption-text\">Hero weergave<\/figcaption><\/figure>\n<p>Je kunt meer content aan de Hero sectie toevoegen, de stijlen in het bestand <strong>css\/globals.css<\/strong> veranderen, of zelfs een eigen versie van deze sectie maken.<\/p>\n<h3>De About partials<\/h3>\n<p>De About sectie vertelt mensen die je portfolio bezoeken meer informatie over jou &#8211; in zoveel alinea&#8217;s als je wilt. Dit kan een aparte pagina zijn als je meer dingen te vertellen hebt.<\/p>\n<pre><code class=\"language-html\">&lt;div class=\"about-container\"&gt;\n    &lt;h2&gt;About Me&lt;\/h2&gt;\n    &lt;div class=\"flex-about\"&gt;\n        &lt;div class=\"about-text\"&gt;\n            &lt;p&gt;\n                As a developer, I have always been passionate about creating elegant and effective solutions to complex problems. I have a strong foundation in software development, with a focus on web technologies such as HTML, CSS, and JavaScript. I enjoy working on both the front-end and back-end of applications, and I am always looking for ways to optimize performance, improve user experience, and ensure the highest level of code quality.\n            &lt;\/p&gt;\n            &lt;p&gt;Throughout my career, I have worked on a wide range of projects, from simple static websites to complex enterprise-level applications. I am experienced in working with a variety of development tools and frameworks, including React, Angular, Vue.js, Node.js, and Laravel. I am always eager to learn and explore new technologies, and I am constantly seeking out opportunities to improve my skills and knowledge.&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div class=\"about-img\"&gt;\n            &lt;Image src='\/assets\/about.jpeg' class=\"profile-img\" alt=\"Joe and animal relaxing and having fun\" \/&gt;\n        &lt;\/div&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>De code bevat informatie over jou (een afbeelding en wat tekst). Zo hoort de About sectie er uit te zien:<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/portfolio-about-partials.jpg\" alt=\"Weergave van de About partials.\" width=\"1600\" height=\"704\"><figcaption class=\"wp-caption-text\">About partials<\/figcaption><\/figure>\n<h3>De Skills partials<\/h3>\n<p>Deze sectie wordt gebruikt om de technologie\u00ebn weer te geven die je gebruikt of graag gebruikt.<\/p>\n<pre><code class=\"language-html\">&lt;div class=\"skills-container\"&gt;\n    &lt;h2&gt;Skills&lt;\/h2&gt;\n    &lt;div class=\"grid-skills\"&gt;\n        &lt;div class=\"skill-card html\"&gt;\n            &lt;i class=\"fa-brands fa-html5 html-icon\"&gt;&lt;\/i&gt;\n            &lt;p&gt;HTML&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div class=\"skill-card css\"&gt;\n            &lt;i class=\"fa-brands fa-css3-alt css-icon\"&gt;&lt;\/i&gt;\n            &lt;p&gt;CSS&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div class=\"skill-card js\"&gt;\n            &lt;i class=\"fa-brands fa-js-square js-icon\"&gt;&lt;\/i&gt;\n            &lt;p&gt;JavaScript&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div class=\"skill-card react\"&gt;\n            &lt;i class=\"fa-brands fa-react react-icon\"&gt;&lt;\/i&gt;\n            &lt;p&gt;React&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div class=\"skill-card node\"&gt;\n            &lt;i class=\"fa-brands fa-node-js node-icon\"&gt;&lt;\/i&gt;\n            &lt;p&gt;Node&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div class=\"skill-card python\"&gt;\n            &lt;i class=\"fa-brands fa-python python-icon\"&gt;&lt;\/i&gt;\n            &lt;p&gt;Python&lt;\/p&gt;\n        &lt;\/div&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>De code hierboven maakt een kaart om het technologie-icoontje van font-awesome en de naam voor elke skill op te nemen. Je kunt meer stijlen toevoegen en de code aanpassen om het aantrekkelijker en duidelijker te maken. Dit is hoe de Skills sectie eruit hoort te zien:<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/portfolio-skills-partials.jpg\" alt=\"Skills partials met alle toegevoegde vaardigheden\" width=\"1600\" height=\"446\"><figcaption class=\"wp-caption-text\">Skills partials<\/figcaption><\/figure>\n<h3>De Contact partials<\/h3>\n<p>Omdat dit een portfolio is, moet je een manier toevoegen waarop potenti\u00eble klanten\/werkgevers je kunnen bereiken. Je zou bijvoorbeeld een e-mail kunnen toevoegen.<\/p>\n<pre><code class=\"language-html\">&lt;div class=\"contact-container\"&gt;\n    &lt;h2&gt;Get In Touch&lt;\/h2&gt;\n    &lt;p&gt;If you want us to work together, have any question or want me to speak at your event, my inbox is always open. Whether just want to say hi, I'll try my best to get back to you! Cheers!&lt;\/p&gt;\n    &lt;a href=\"mailto:joelolawanle@kinsta.com\" class='cta-btn'&gt;Say Hello&lt;\/a&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Vervang het e-mailadres in de <code>a<\/code> tag door je eigen adres, zodat de knop een e-mailprogramma lanceert waarmee mensen je een bericht kunnen sturen.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/portfolio-contact-partials.jpg\" alt=\"Contact partials tonen wat informatie en een cta knop\" width=\"1600\" height=\"318\"><figcaption class=\"wp-caption-text\">Contacts sectie<\/figcaption><\/figure>\n<p>Je hebt met succes alle partials voor je homepage gemaakt. Vervolgens moet je ze opnemen in je <strong>index.njk<\/strong> bestand, zodat ze op de homepage getoond kunnen worden:<\/p>\n<pre><code class=\"language-html\">---\nlayout: layouts\/base.njk\ntitle: Home\n---\n{% include \"components\/hero.njk\" %}\n{% include \"components\/about.njk\" %}\n{% include \"components\/skills.njk\" %}\n{% include \"components\/contact.njk\" %}<\/code><\/pre>\n<p>Wanneer je het <code>npm start<\/code> commando uitvoert, zal je startpagina alle toegevoegde partials dienovereenkomstig laten zien.<\/p>\n<h3>Zo gebruik je collections in Eleventy<\/h3>\n<p>In Eleventy zijn collections een manier om verwante content te groeperen, zodat je pagina&#8217;s kunt genereren op basis van die content. Als je bijvoorbeeld markdown-bestanden met vergelijkbare content (blogberichten) hebt opgeslagen in een blogmap van je project, kun je collections gebruiken om ze op te halen en een lijst van alle inhoud weer te geven. Ook kun je een layout maken om af te handelen hoe deze content wordt weergegeven.<\/p>\n<p>Collections worden gedefinieerd in het configuratiebestand <strong>.eleventy.js<\/strong> en kunnen gegevens bevatten uit verschillende bronnen, zoals markdown- of JSON bestanden.<\/p>\n<p>Laten we voor deze portfolio website een <b>projects <\/b>map aanmaken in de <strong>src<\/strong> map, om de markdown content van elk project op te slaan. Deze content zal details bevatten over het project, het opgeloste probleem, gebruikte technologie\u00ebn, ondervonden uitdagingen en geleerde lessen.<\/p>\n<p>Je kunt een markdown-bestand maken met de naam van het project (<strong>quotes-generator.md<\/strong>) en de onderstaande code plakken:<\/p>\n<pre><code class=\"language-md\">---\ntitle: Quotes Generator\ndescription: \"Helps you generates quotes from about 1600 quotes written by different authors . Quotes are automatically copied to your clipboards.\"\ngitHubURL: \"https:\/\/github.com\/olawanlejoel\/random-quote-generator\"\nimage: \"\/assets\/quotes-banner.jpeg\"\n---\n\nThe quotes generator project is a software tool designed to display random inspirational or thought-provoking quotes to users. This project aims to solve the problem of lack of motivation or inspiration by providing users with a quick and easy way to access inspiring quotes.\n\n### Technologies Used\nThe technologies used in this project include HTML, CSS, and JavaScript. The application utilizes an API to fetch random quotes and display them to the user.\n\n### Challenges and Lessons Learned\nOne of the main challenges faced during this project was designing the user interface to be visually appealing and responsive on different devices. The team had to consider various design elements such as font sizes, colors, and layout to create a user-friendly and aesthetically pleasing interface.\n\nAnother challenge was handling errors and edge cases such as network connectivity issues or invalid API responses. The team had to implement error handling and fallback mechanisms to ensure that the application would continue to function smoothly under various conditions.\n\nThroughout the project, the team learned valuable lessons about front-end development, such as the importance of clean and efficient code, effective debugging and troubleshooting, and responsive design principles. They also learned the importance of utilizing APIs to access and display data from external sources.\n\nOverall, the quotes generator project was a valuable learning experience that allowed the team to develop their technical and creative skills, and create a useful tool for users looking for daily inspiration or motivation.<\/code><\/pre>\n<p><strong>Opmerking:<\/strong> Als je de startertemplate hebt gebruikt, zou je deze al moeten hebben, anders kun je ze kopi\u00ebren uit de projects map van onze <a href=\"https:\/\/github.com\/kinsta\/11ty-portfolio\/tree\/starter\/src\/projects\" target=\"_blank\" rel=\"noopener noreferrer\">startertemplate op GitHub<\/a>.<\/p>\n<p>De frontmatter bovenaan deze bestanden maakt de waarden beschikbaar voor injectie in je templates.<\/p>\n<p>Omdat deze Markdown bestanden in de <strong>src<\/strong> map staan, zal Eleventy ze behandelen als templates en voor elk een HTML pagina genereren. Hun URL zal iets zijn als <strong>\/projects\/quotes-generator<\/strong>.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/quote-project-page.jpg\" alt=\"Het uiterlijk van elk project zonder layout\" width=\"1600\" height=\"587\"><figcaption class=\"wp-caption-text\">Het uiterlijk van elk project zonder layout<\/figcaption><\/figure>\n<p>Eleventy zal echter niet weten welke opmaak deze pagina&#8217;s moeten gebruiken, omdat ze nog geen markupwaarde hebben in hun frontmatter.<\/p>\n<p>Laten we eerst een opmaak maken voor deze inhoud voordat we een collection maken en ze als lijst toevoegen aan een speciale projectenpagina.<\/p>\n<p>Maak net als voorheen een markupbestand (<strong>project.njk<\/strong>) aan in de map <strong>layouts<\/strong>. Om herhaling te voorkomen, omdat dit bestand de standaard HTML opmaak zal gebruiken, pas je de <strong>basic.njk<\/strong> markup aan door een blok te maken om aan te geven welk deel van je markup zal veranderen.<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n    &lt;head&gt;\n        &lt;meta charset=\"UTF-8\" \/&gt;\n        &lt;meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" \/&gt;\n        &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/&gt;\n        &lt;link rel=\"icon\" href=\"\/assets\/favicon.jpeg\" \/&gt;\n        &lt;link\n            rel=\"stylesheet\"\n            href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.2.1\/css\/all.min.css\"\n            integrity=\"sha512-MV7K8+y+gLIBoVD59lQIYicR65iaqukzvf\/nwasF0nqhPay5w\/9lJmVM2hMDcnK1OnMGCdVK+iQrJ7lzPJQd1w==\"\n            crossorigin=\"anonymous\"\n            referrerpolicy=\"no-referrer\"\n        \/&gt;\n        &lt;link rel=\"stylesheet\" href=\"\/css\/global.css\" \/&gt;\n        &lt;title&gt;J.'s Portfolio&lt;\/title&gt;\n    &lt;\/head&gt;\n    &lt;body&gt;\n        &lt;div&gt;\n            {% include \"components\/navbar.njk\" %}\n                {% block content %} \n                    {{ content | safe }}\n                {% endblock %}\n            {% include \"components\/footer.njk\" %}\n        &lt;\/div&gt;\n    &lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Het blok krijgt een naam &#8220;content&#8221; omdat je binnen je templates veel blokken kunt hebben. Je kunt dit nu uitbreiden naar je <strong>project.njk<\/strong> markup, zodat je alleen het contentblok hoeft aan te geven:<\/p>\n<pre><code class=\"language-html\">{% extends \"layouts\/base.njk\" %}\n\n{% block content %}\n    &lt;div class=\"project-layout\"&gt;\n        &lt;h2&gt;{{title}}&lt;\/h2&gt;\n        &lt;img src=\"{{image}}\" alt=\"image\" class=\"banner-img\" \/&gt;\n        &lt;a href=\"{{gitHubURL}}\" class=\"cta-btn pt-btn\"&gt;\n            &lt;div class=\"small-icons\"&gt;\n                GitHub &lt;i class=\"fa-brands fa-github\"&gt;&lt;\/i&gt;\n            &lt;\/div&gt;\n        &lt;\/a&gt;\n        {{ content | safe }}\n    &lt;\/div&gt;\n{% endblock %}<\/code><\/pre>\n<p>In bovenstaande code geef je aan hoe elk project wordt weergegeven. Het haalt de <strong>titel<\/strong>, <strong>afbeelding<\/strong> en <strong>gitHubURL<\/strong> uit de frontmatter en voegt dan andere inhoud toe met behulp van de inhoudsvariabele (<code>{{ content | safe }}<\/code>).<\/p>\n<p>De volgende stap is om de opmaak toe te voegen aan de frontmatter van elk project:<\/p>\n<pre><code class=\"language-html\">---\nlayout: layouts\/project.njk\ntitle: Quotes Generator\ndescription: \"Helps you generates quotes from about 1600 quotes written by different authors . Quotes are automatically copied to your clipboards.\"\ngitHubURL: \"https:\/\/github.com\/olawanlejoel\/random-quote-generator\"\nimage: \"\/assets\/quotes-banner.jpeg\"\n---\n\n\u2026<\/code><\/pre>\n<p>Wanneer je de URL van elk project opnieuw laadt, b.v. <strong>\/projects\/quotes-generator<\/strong>, zul je zien dat het nu de gemaakte layout gebruikt:<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/quote-project-page-with-layout.jpg\" alt=\"Het uiterlijk van elk project met layout\" width=\"1600\" height=\"877\"><figcaption class=\"wp-caption-text\">Project uiterlijk met opmaak<\/figcaption><\/figure>\n<h4>Het gebruik van collections in templates<\/h4>\n<p>Elk van je projecten wordt nu mooi weergegeven met de opgegeven opmaak, maar hoe krijgen mensen toegang tot deze projecten? Je moet een lijst maken waarop mensen kunnen klikken om ze naar elk project te brengen. Dit is waar collections je kunnen helpen.<\/p>\n<p>Om collection te gebruiken, definieer je het in het <strong>.eleventy.js<\/strong> configuratiebestand met de <code>addCollection()<\/code> methode.<\/p>\n<pre><code class=\"language-js\">module.exports = function (eleventyConfig) {\n    \/\/ \u2026\n\n    eleventyConfig.addCollection('projects', (collection) =&gt; {\n        return collection.getFilteredByGlob('src\/projects\/*.md');\n    });\n\n    return {\n        \/\/ ...\n    };\n};<\/code><\/pre>\n<p>In de bovenstaande code wordt de methode <code>addCollection()<\/code> gebruikt om een collection genaamd projects te defini\u00ebren. De callbackfunctie die wordt doorgegeven aan <code>addCollection()<\/code> geeft alle markdownbestanden in de map projecten terug met behulp van de methode <code>getFilteredByGlob()<\/code>.<\/p>\n<p>Als je eenmaal een collection hebt gedefinieerd, kun je die gebruiken in een template om pagina&#8217;s te genereren op basis van die inhoud. Laten we een <strong>projects.njk<\/strong> paginatemplate maken, dat de layout <strong>base.njk<\/strong> zou gebruiken:<\/p>\n<pre><code class=\"language-html\">---\nlayout: layouts\/base.njk\ntitle: Projects\n---\n&lt;div class=\"projects-container\"&gt;\n    &lt;h2&gt;Projects&lt;\/h2&gt;\n    &lt;div class=\"projects-grid\"&gt;\n        {% for project in collections.projects %}\n            &lt;div class=\"project-card\"&gt;\n                &lt;div class=\"project-header\"&gt;\n                    &lt;i class=\"fa-regular fa-folder-open folder-icon\"&gt;&lt;\/i&gt;\n                    &lt;div class=\"small-icons\"&gt;\n                        &lt;a href={{project.data.gitHubURL}}&gt;&lt;i class=\"fa-brands fa-github\"&gt;&lt;\/i&gt;&lt;\/a&gt;\n                    &lt;\/div&gt;\n                &lt;\/div&gt;\n                &lt;h3&gt;{{project.data.title}}&lt;\/h3&gt;\n                &lt;p&gt;{{project.data.description}}&lt;\/p&gt;\n                &lt;a href=\"{{project.url}}\" class=\"cta-btn\"&gt;Read more&lt;\/a&gt;\n            &lt;\/div&gt;\n        {% endfor %}\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>In de bovenstaande code wordt het <code>{% for %}<\/code> statement gebruikt om door alle projecten in de collectie te lopen en voor elk project een projectkaart te genereren.<\/p>\n<p>Met <code>project.data.[key]<\/code> heb je toegang tot alle variabelen. De bovenstaande code toont bijvoorbeeld de titel, beschrijving en GitHub URL van het project. Je hebt ook toegang tot de URL van het project met <code>project.url<\/code>.<\/p>\n<p>Als je het <code>npm start<\/code> commando uitvoert en naar de Projects pagina navigeert, ziet je pagina er zo uit als je veel projecten toevoegt:<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/projects-page-with-content.jpg\" alt=\"Een verzameling van alle projecten op de Projects template pagina\" width=\"1600\" height=\"877\"><figcaption class=\"wp-caption-text\">Projects templatepagina<\/figcaption><\/figure>\n<h3>Zo gebruik je shortcodes<\/h3>\n<p>Shortcodes zijn een manier om custom HTML tags of dynamische JavaScript waarden te defini\u00ebren die je in je templates kunt hergebruiken. Je kunt bijvoorbeeld een shortcode defini\u00ebren om het huidige jaar te genereren en aan je website toe te voegen.<\/p>\n<p>In het configuratiebestand <strong>.eleventy.js<\/strong> kun je een shortcode defini\u00ebren met de methode <code>addShortcode()<\/code>. De volgende code definieert bijvoorbeeld een shortcode met de naam year:<\/p>\n<pre><code class=\"language-js\">module.exports = function (eleventyConfig) {\n    \/\/ ...\n    eleventyConfig.addShortcode('year', () =&gt; {\n        return `${new Date().getFullYear()}`;\n    });\n    return {\n        \/\/ ...\n    };\n};<\/code><\/pre>\n<p>De bovenstaande shortcode year geeft het huidige jaar terug, die je kunt toevoegen aan elk template binnen je project. Bijvoorbeeld, in plaats van het jaartal te hardcoden in de footer van deze website, kun je het dynamisch toevoegen met <code>{% year %}<\/code>, zodat het zichzelf elk jaar bijwerkt:<\/p>\n<pre><code class=\"language-html\">&lt;hr \/&gt;\n&lt;div class=\"footer-container\"&gt;\n    &lt;p&gt;\u00a9 {% year %} Joel's Portfolio&lt;\/p&gt;\n    &lt;div class=\"social_icons\"&gt;\n        \/\/ ...\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Wanneer de pagina wordt weergegeven, zal de uitvoer het huidige jaartal bevatten in de HTML <code>p<\/code> tag.<\/p>\n<h2>Een thema toevoegen aan een Eleventy website<\/h2>\n<p>Het toevoegen van een thema aan een Eleventy site kan een goede manier zijn om het uiterlijk van je site snel aan te passen. Officieel verwijst Eleventy naar thema&#8217;s als starters (ze hetzelfde betekenen). Veel websites bieden gratis Eleventy thema&#8217;s aan, zoals de <a href=\"https:\/\/www.11ty.dev\/docs\/starter\/\" target=\"_blank\" rel=\"noopener noreferrer\">offici\u00eble Eleventy starters<\/a> en de <a href=\"https:\/\/jamstackthemes.dev\/ssg\/eleventy\/\" target=\"_blank\" rel=\"noopener noreferrer\">Jamstack thema&#8217;s<\/a>.<\/p>\n<p>Alles wat je hoeft te doen is je favoriete thema of starter selecteren, en dan de GitHub repository ervan openen om het naar je lokale machine te klonen. Zorg ervoor dat je de documentatie ervan leest voor stappen om de projecten te configureren en aan te passen.<\/p>\n<p>Voer <code>npm install<\/code> uit om alle gebruikte pakketten te installeren, en voer dan <code>npm start<\/code> uit om je applicatie lokaal te leveren op <strong>http:\/\/localhost:8080\/<\/strong>.<\/p>\n<h2>Zo deploy je een Eleventy site<\/h2>\n<p>Je bent er nu in geslaagd om een stijlvolle statische portfoliowebsite te maken met Eleventy. Het is niet genoeg om zo&#8217;n website op je lokale machine te hebben. Je wilt hem online hosten om hem te delen met je publiek.<\/p>\n<p>Kinsta is een cloudplatform waarmee je <a href=\"https:\/\/sevalla.com\/static-site-hosting\/\">statische websites kunt hosten<\/a>, waaronder Eleventy. Dit kun je doen door je code te pushen naar de Git provider van je voorkeur (<a href=\"https:\/\/docs.sevalla.com\/applications\/git\/bitbucket#grant-access-to-the-kinsta-bitbucket-application\">Bitbucket<\/a>, <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/github#authenticate-and-authorize\">GitHub<\/a> of <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/gitlab#authorize-the-kinsta-gitlab-application\">GitLab<\/a>), en uiteindelijk te deployen naar Kinsta.<\/p>\n<p>Voordat je je bestanden naar een Git provider pusht, maak je een <a href=\"https:\/\/kinsta.com\/nl\/blog\/gitignore-repareren\/\">.gitignore bestand<\/a> in de root van je project om de bestanden en mappen op te geven die Git moet negeren bij het pushen van je code:<\/p>\n<pre><code class=\"language-git\"># dependencies\n\/node_modules\n\n# run\n\/_site<\/code><\/pre>\n<h3 id=\"push-your-eleventy-site-to-github\" class=\"has-anchor-hash\">Je Eleventy site naar GitHub pushen<\/h3>\n<p>Voor deze handleiding gebruiken we GitHub. Maak een repository aan op GitHub, dan kun je <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/github#authenticate-and-authorize\">git commando&#8217;s<\/a> gebruiken om <a href=\"https:\/\/kinsta.com\/nl\/blog\/zo-push-je-code-naar-github\/\">je code te pushen<\/a>.<\/p>\n<p>Initialiseer je lokale Git repository door je terminal te openen, naar de map te navigeren die je project bevat en het volgende commando uit te voeren:<\/p>\n<pre class=\"language-bash\"><code class=\"language-bash\">git init<\/code><\/pre>\n<p>Voeg nu je code(s) toe aan de lokale Git repository met het volgende commando:<\/p>\n<pre class=\"language-bash\"><code class=\"language-bash\">git add .<\/code><\/pre>\n<p>Je kunt nu je wijzigingen committen met het volgende commando:<\/p>\n<pre class=\"language-bash\"><code class=\"language-bash\">git commit -m \"my first commit\"<\/code><\/pre>\n<p><strong>Opmerking:<\/strong> Vervang &#8221; my first commit&#8221; door een korte boodschap die je wijzigingen beschrijft.<\/p>\n<p>Als laatste push je je code naar GitHub met de volgende commando&#8217;s:<\/p>\n<pre class=\"language-bash\"><code class=\"language-bash\">git remote add origin [repository URL]\ngit push -u origin master<\/code><\/pre>\n<p><strong>Opmerking:<\/strong> Vervang [repository URL] door de URL van je GitHub repository.<\/p>\n<p>Als het gelukt is, kun je nu deployen naar Kinsta!<\/p>\n<h3>Je Eleventy site deployen naar Kinsta<\/h3>\n<p>Deployen naar Kinsta gebeurt in slechts enkele seconden. Zodra je repo klaar is, volg je deze stappen om je statische site te deployen naar Kinsta:<\/p>\n<ol>\n<li>Login of maak een account aan om je <a href=\"https:\/\/my.kinsta.com\/?lang=nl\">MyKinsta&#8217;s<\/a> dashboard te bekijken.<\/li>\n<li>Autoriseer Kinsta met je Git provider.<\/li>\n<li>Klik op <strong>Statische sites<\/strong> in de linker zijbalk, klik dan op <strong>Site toevoegen<\/strong>.<\/li>\n<li>Selecteer de repository en de branch waarvan je wilt deployen.<\/li>\n<li>Geef je site een unieke naam.<\/li>\n<li>Voeg de bouwinstellingen toe in het volgende formaat:\n<ul>\n<li><strong>Build commando:<\/strong> <code>npm run build<\/code><\/li>\n<li><strong>Node versie:<\/strong> <code>18.16.0<\/code><\/li>\n<li><strong>Publish directory:<\/strong> <code>_site<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Klik ten slotte op <strong>Create site<\/strong>.<\/li>\n<\/ol>\n<p>En dat is het! Je hebt nu binnen een paar seconden een gedeployde site. Je krijgt een link waarmee je naar de gedeployde versie van je site kunt gaan.<\/p>\n<p>Als alternatief voor Statische Site Hosting kun je ervoor kiezen om je statische site te deployen met Kinsta&#8217;s <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Applicatie Hosting<\/a>, die meer flexibiliteit biedt bij het hosten, een breder scala aan voordelen en toegang tot robuustere features. Bijvoorbeeld schaalbaarheid, custom deployen met behulp van een Dockerfile en <a href=\"https:\/\/docs.sevalla.com\/applications\/analytics\">uitgebreide analytics<\/a> met real-time en historische gegevens.<\/p>\n\n<h2>Samenvatting<\/h2>\n<p>In dit artikel heb je geleerd hoe je een stijlvolle website maakt met Eleventy, hoe je een Eleventy statische site vanaf de grond aanpast, en hoe je een mooie portfoliowebsite bouwt.<\/p>\n<p>Of je nu een persoonlijke blog, een portfoliosite of een online winkel bouwt, Eleventy kan je helpen je doelen te bereiken met minimale inspanning en maximale impact.<\/p>\n<p>Dus waarom zou je het vandaag niet proberen en <a href=\"https:\/\/sevalla.com\/static-site-hosting\/\">gratis hosten bij Kinsta<\/a>? We hebben een <a href=\"https:\/\/docs.sevalla.com\/templates\/overview\">Eleventy &#8220;Hello World&#8221; template<\/a> dat je kunt gebruiken om je nog sneller op weg te helpen.<\/p>\n<p><em>Nu is het jouw beurt: wat vind jij van Eleventy? Heb je Eleventy gebruikt om iets te bouwen? Deel gerust je projecten en ervaringen met ons in de commentsectie hieronder.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Met de opkomst van statische sitegenerators (SSG&#8217;s) zoals Eleventy is het maken van een stijlvolle en effici\u00ebnte statische website nog nooit zo eenvoudig geweest. In dit &#8230;<\/p>\n","protected":false},"author":287,"featured_media":52166,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[842,914,884],"class_list":["post-52165","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-headless-cms","topic-statische-sitegenerators","topic-webdevelopment-tools"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Zo maak je een stijlvolle statische website maakt met Eleventy (11ty) - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Leer hoe je met Eleventy een prachtige en functionele statische portfoliowebsite maakt zonder dat je een server-side taal of database nodig hebt.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/nl\/blog\/eleventy\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zo maak je een stijlvolle statische website maakt met Eleventy (11ty)\" \/>\n<meta property=\"og:description\" content=\"Leer hoe je met Eleventy een prachtige en functionele statische portfoliowebsite maakt zonder dat je een server-side taal of database nodig hebt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/eleventy\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-27T10:34:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-03T06:44:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/11ty-static-site-generator-01.png\" \/>\n\t<meta property=\"og:image:width\" content=\"6084\" \/>\n\t<meta property=\"og:image:height\" content=\"3042\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Leer hoe je met Eleventy een prachtige en functionele statische portfoliowebsite maakt zonder dat je een server-side taal of database nodig hebt.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/11ty-static-site-generator-01.png\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"24 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/eleventy\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/eleventy\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Zo maak je een stijlvolle statische website maakt met Eleventy (11ty)\",\"datePublished\":\"2023-04-27T10:34:17+00:00\",\"dateModified\":\"2023-11-03T06:44:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/eleventy\/\"},\"wordCount\":3660,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/eleventy\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/11ty-static-site-generator-01.png\",\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/eleventy\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/eleventy\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/eleventy\/\",\"name\":\"Zo maak je een stijlvolle statische website maakt met Eleventy (11ty) - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/eleventy\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/eleventy\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/11ty-static-site-generator-01.png\",\"datePublished\":\"2023-04-27T10:34:17+00:00\",\"dateModified\":\"2023-11-03T06:44:49+00:00\",\"description\":\"Leer hoe je met Eleventy een prachtige en functionele statische portfoliowebsite maakt zonder dat je een server-side taal of database nodig hebt.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/eleventy\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/eleventy\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/eleventy\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/11ty-static-site-generator-01.png\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/11ty-static-site-generator-01.png\",\"width\":6084,\"height\":3042},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/eleventy\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Headless CMS\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/headless-cms\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Zo maak je een stijlvolle statische website maakt met Eleventy (11ty)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"caption\":\"Joel Olawanle\"},\"description\":\"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.\",\"sameAs\":[\"https:\/\/joelolawanle.com\/\",\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\",\"https:\/\/x.com\/olawanle_joel\",\"https:\/\/www.youtube.com\/@joelolawanle\"],\"gender\":\"male\",\"knowsAbout\":[\"JavaScript\",\"React\",\"Next.js\"],\"knowsLanguage\":[\"English\"],\"jobTitle\":\"Technical Editor\",\"worksFor\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Zo maak je een stijlvolle statische website maakt met Eleventy (11ty) - Kinsta\u00ae","description":"Leer hoe je met Eleventy een prachtige en functionele statische portfoliowebsite maakt zonder dat je een server-side taal of database nodig hebt.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/nl\/blog\/eleventy\/","og_locale":"nl_NL","og_type":"article","og_title":"Zo maak je een stijlvolle statische website maakt met Eleventy (11ty)","og_description":"Leer hoe je met Eleventy een prachtige en functionele statische portfoliowebsite maakt zonder dat je een server-side taal of database nodig hebt.","og_url":"https:\/\/kinsta.com\/nl\/blog\/eleventy\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2023-04-27T10:34:17+00:00","article_modified_time":"2023-11-03T06:44:49+00:00","og_image":[{"width":6084,"height":3042,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/11ty-static-site-generator-01.png","type":"image\/png"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Leer hoe je met Eleventy een prachtige en functionele statische portfoliowebsite maakt zonder dat je een server-side taal of database nodig hebt.","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/11ty-static-site-generator-01.png","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Joel Olawanle","Geschatte leestijd":"24 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/eleventy\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/eleventy\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Zo maak je een stijlvolle statische website maakt met Eleventy (11ty)","datePublished":"2023-04-27T10:34:17+00:00","dateModified":"2023-11-03T06:44:49+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/eleventy\/"},"wordCount":3660,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/eleventy\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/11ty-static-site-generator-01.png","inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/nl\/blog\/eleventy\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/eleventy\/","url":"https:\/\/kinsta.com\/nl\/blog\/eleventy\/","name":"Zo maak je een stijlvolle statische website maakt met Eleventy (11ty) - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/eleventy\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/eleventy\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/11ty-static-site-generator-01.png","datePublished":"2023-04-27T10:34:17+00:00","dateModified":"2023-11-03T06:44:49+00:00","description":"Leer hoe je met Eleventy een prachtige en functionele statische portfoliowebsite maakt zonder dat je een server-side taal of database nodig hebt.","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/eleventy\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/eleventy\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/eleventy\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/11ty-static-site-generator-01.png","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/11ty-static-site-generator-01.png","width":6084,"height":3042},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/eleventy\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"Headless CMS","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/headless-cms\/"},{"@type":"ListItem","position":3,"name":"Zo maak je een stijlvolle statische website maakt met Eleventy (11ty)"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","caption":"Joel Olawanle"},"description":"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.","sameAs":["https:\/\/joelolawanle.com\/","https:\/\/www.linkedin.com\/in\/olawanlejoel\/","https:\/\/x.com\/olawanle_joel","https:\/\/www.youtube.com\/@joelolawanle"],"gender":"male","knowsAbout":["JavaScript","React","Next.js"],"knowsLanguage":["English"],"jobTitle":"Technical Editor","worksFor":"Kinsta","url":"https:\/\/kinsta.com\/nl\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/52165","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=52165"}],"version-history":[{"count":15,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/52165\/revisions"}],"predecessor-version":[{"id":56320,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/52165\/revisions\/56320"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/52165\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/52165\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/52165\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/52165\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/52165\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/52165\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/52165\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/52165\/translations\/es"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/52165\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/52166"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=52165"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=52165"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=52165"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}