{"id":51051,"date":"2023-03-09T12:15:14","date_gmt":"2023-03-09T12:15:14","guid":{"rendered":"https:\/\/kinsta.com\/se\/?p=51051&#038;preview=true&#038;preview_id=51051"},"modified":"2023-09-18T08:43:27","modified_gmt":"2023-09-18T08:43:27","slug":"next-js-portfolio","status":"publish","type":"post","link":"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/","title":{"rendered":"Hur du bygger och distribuerar en utvecklar-portfolio med Next.js"},"content":{"rendered":"<p>En utvecklar-portfolio \u00e4r en samling arbetsprover och projekt som visar upp dina f\u00e4rdigheter och erfarenheter. En stark portfolio skiljer dig exempelvis fr\u00e5n andra kandidater n\u00e4r du s\u00f6ker jobb. Men inte bara det: en portfolio kan dessutom vara ett v\u00e4rdefullt verktyg f\u00f6r att skapa n\u00e4tverk, h\u00e5lla reda p\u00e5 vad du har l\u00e4rt dig och etablera dig som sakkunnig.<\/p>\n<p>I den h\u00e4r handledningen s\u00e5 f\u00e5r du exempelvis l\u00e4ra dig hur du bygger en utvecklar-portfolio med hj\u00e4lp av Next.js och distribuerar direkt fr\u00e5n ditt GitHub-arkiv till Kins&#8217;a&#8217;s plattform f\u00f6r <a href=\"https:\/\/sevalla.com\/application-hosting\/\">applikationshosting<\/a>. Den tillhandah\u00e5ller dessutom en kostnadsfri <em>.kinsta.app-dom\u00e4n<\/em> f\u00f6r att snabbt f\u00e5 ig\u00e5ng ditt arbete.<\/p>\n<p>H\u00e4r \u00e4r en live-demo av den <a href=\"https:\/\/kinsta-developer-portfolio-ir8w8.kinsta.app\/\" target=\"_blank\" rel=\"noopener noreferrer\">utvecklar-portfolio<\/a>\u00a0som du kommer att bygga med Next.js.<\/p>\n<p>Du kan f\u00e5 \u00e5tkomst till detta <a href=\"https:\/\/github.com\/olawanlejoel\/Kinsta-developer-portfolio\">projekts GitHub-kodf\u00f6rr\u00e5d<\/a> om du vill ta en n\u00e4rmare titt, eller anv\u00e4nda denna <a href=\"https:\/\/github.com\/olawanlejoel\/kinsta-portfolio-starter\">portfolio starter project<\/a> mall genom att v\u00e4lja <strong>Anv\u00e4nd denna mall<\/strong> &gt; <strong>Skapa ett nytt kodf\u00f6rr\u00e5d<\/strong> \u2014 detta kommer att kopiera startkoden till ett nytt arkiv. Startprojektet inneh\u00e5ller grundl\u00e4ggande koder som stilar, en Font Awesome CDN-l\u00e4nk, bilder och grundl\u00e4ggande struktur.<\/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>Krav\/f\u00f6ruts\u00e4ttningar<\/h2>\n<p>Det h\u00e4r \u00e4r en handledning av typen &#8221;h\u00e4ng med&#8221;. Det blir l\u00e4ttare f\u00f6r dig att koda medan du l\u00e4ser om du har:<\/p>\n<ul>\n<li>Grundl\u00e4ggande kunskaper om <a href=\"https:\/\/kinsta.com\/blog\/what-is-html\/\">HTML<\/a>, <a href=\"https:\/\/kinsta.com\/se\/blog\/css-basta-metoderna\/\">CSS<\/a> och <a href=\"https:\/\/kinsta.com\/javascript\/\">JavaScript<\/a><\/li>\n<li>Lite kunskap om <a href=\"https:\/\/kinsta.com\/blog\/what-is-react-js\/\">React<\/a> och kanske Next.js<\/li>\n<li>Node.js och npm (<a href=\"https:\/\/kinsta.com\/blog\/what-is-npm\/\">Node Package Manager<\/a>) eller yarn installerade p\u00e5 din dator<\/li>\n<\/ul>\n<h2>Varf\u00f6r Next.js?<\/h2>\n<p><a href=\"https:\/\/kinsta.com\/blog\/next-js\/\">Next.js<\/a> \u00e4r ett React-baserat <a href=\"https:\/\/kinsta.com\/se\/blog\/javascript-biblioteken\/\">JavaScript-biblioteksramverk<\/a> med \u00f6ppen k\u00e4llkod. Det kan dessutom anv\u00e4ndas f\u00f6r ett brett spektrum av webbutvecklings-projekt eftersom det f\u00f6renklar byggandet av renderade och statiska applikationer p\u00e5 serversidan. Next.js effektiviserar processen genom att utnyttja de b\u00e4sta funktionerna i React och optimera renderings-prestanda f\u00f6r f\u00f6rb\u00e4ttrad anv\u00e4ndarupplevelse. N\u00e5gra av de vanligaste anv\u00e4ndningsomr\u00e5dena f\u00f6r Next.js \u00e4r f\u00f6ljande:<\/p>\n<ul>\n<li><strong>Byggandet av statiska webbplatser<\/strong>: Next.js kan bygga statiska webbplatser som \u00e4r snabba, enkla att distribuera och som dessutomn kr\u00e4ver minimalt med underh\u00e5ll. Detta g\u00e4ller exempelvis f\u00f6r webbplatsen f\u00f6r utvecklar-portfolion som vi kommer att bygga under den h\u00e4r handledningen.<\/li>\n<li><strong>Ett byggande av dynamiska webbplatser<\/strong>: Next.js g\u00f6r det m\u00f6jligt att skapa dynamiska webbplatser som kan \u00e4ndra inneh\u00e5llet baserat p\u00e5 anv\u00e4ndarinteraktioner eller datah\u00e4mtning p\u00e5 serversidan.<\/li>\n<\/ul>\n<ul>\n<li><strong>Konstruktionen av e-handelswebbplatser<\/strong>: Next.js l\u00e4mpar sig v\u00e4l f\u00f6r att bygga e-handelswebbplatser som kr\u00e4ver en serverbaserad rendering f\u00f6r att f\u00f6rb\u00e4ttra SEO och prestanda.<\/li>\n<\/ul>\n<ul>\n<li><strong>Skapandet av progressiva webbapplikationer (PWA)<\/strong>: Next.js st\u00f6der skapandet av PWA: er. Det \u00e4r webb-applikationer som fungerar som inbyggda appar och som kan installeras p\u00e5 en anv\u00e4ndares enhet.<\/li>\n<\/ul>\n<h2>S\u00e5 h\u00e4r st\u00e4ller du in din Next.js-utvecklingsmilj\u00f6<\/h2>\n<p>F\u00f6r att s\u00e4tta upp en utvecklingsmilj\u00f6 f\u00f6r Next.js s\u00e5 ska du f\u00f6rst <a href=\"https:\/\/kinsta.com\/se\/blog\/hur-du-installerar-node-js\/\">installera Node.js<\/a> p\u00e5 din dator. Du kommer n\u00e4mligen att anv\u00e4nda kommandot <code>npx<\/code> f\u00f6r att k\u00f6ra npm-paket utan att beh\u00f6va installera dem globalt p\u00e5 ditt system. N\u00e4r detta \u00e4r klart s\u00e5 kan du sedan skapa ett Next.js-projekt genom att d\u00e4refter k\u00f6ra f\u00f6ljande kommando:<\/p>\n<pre><code class=\"language-bash\">npx create-next-app@latest my-portfolio<\/code><\/pre>\n<p>En prompt kommer sedan att dyka upp och be dig att bekr\u00e4fta n\u00e5gra ytterligare beroenden. D\u00e4refter s\u00e5 kan du k\u00f6ra <code>npm run dev<\/code> f\u00f6r att g\u00f6ra din app tillg\u00e4nglig p\u00e5 <strong>localhost:3000<\/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\/nextjs-installation-with-options.jpg\" alt=\"Skapa ett nytt Next.js-projekt.\" width=\"1600\" height=\"569\"><figcaption class=\"wp-caption-text\">Skapa ett nytt Next.js-projekt.<\/figcaption><\/figure>\n<p>N\u00e4r du skapar ett Next.js-projekt med kommandot <code>npx<\/code> s\u00e5 skapas en mappstruktur automatiskt med f\u00f6ljande huvudkataloger:<\/p>\n<ol start=\"1\">\n<li><strong>pages<\/strong>: Den h\u00e4r mappen inneh\u00e5ller applikationens sidor, som automatiskt dirigeras utifr\u00e5n deras filnamn.<strong>Pages\/index.js<\/strong> skulle exempelvis vara hemsidan, medan <strong>pages\/about.js<\/strong> skulle vara sidan om webbplatsen.<\/li>\n<li><strong>public<\/strong>: Den h\u00e4r mappen inneh\u00e5ller statiska filer som kan serveras direkt, exempelvis bilder, teckensnitt och andra tillg\u00e5ngar.<\/li>\n<li><strong>components<\/strong>: Den h\u00e4r mappen \u00e4r valfri och inneh\u00e5ller \u00e5teranv\u00e4ndbara gr\u00e4nssnitts-komponenter som kan anv\u00e4ndas i hela applikationen.<\/li>\n<li><strong>styles<\/strong>: Den h\u00e4r mappen \u00e4r ocks\u00e5 valfri och inneh\u00e5ller globala stilar som kan anv\u00e4ndas i hela applikationen.<\/li>\n<\/ol>\n<p>Du kan dessutom generera andra kataloger och filer beroende p\u00e5 den specifika konfigurationen och funktionerna. Detta \u00e4r dock de centrala katalogerna i ett grundl\u00e4ggande Next.js-projekt.<\/p>\n<p>I den h\u00e4r handledningen s\u00e5 kommer allt som vi bygger att visas p\u00e5 index-sidan (v\u00e5r webbsida med en sida). Du kommer dessutom att inkludera komponenter f\u00f6r olika sektioner som hj\u00e4lten, om, projekt och andra.<\/p>\n<h2>Hur man bygger en responsiv utvecklar-portfolio med Next.js<\/h2>\n<p>En portfolio best\u00e5r vanligtvis av komponenter som dessa:<\/p>\n<ul>\n<li>Komponent f\u00f6r navigeringsf\u00e4lt<\/li>\n<li>Hj\u00e4lte-komponent<\/li>\n<li>Komponenten &#8221;Om&#8221;<\/li>\n<li>F\u00e4rdigheter-komponenten<\/li>\n<li>En komponent f\u00f6r projekt<\/li>\n<li>kontakt-komponenten<\/li>\n<li>Komponent f\u00f6r sidfot<\/li>\n<\/ul>\n<p>Komponenterna Navbar och Footer f\u00f6rv\u00e4ntas visas p\u00e5 alla sidor om portfolion har mer \u00e4n en sida. Detta kan exempelvis uppn\u00e5s i Next.js genom att definiera en layout.<\/p>\n<h3>Definiera layouter i Next.js<\/h3>\n<p>I Next.js s\u00e5 \u00e4r en layout ett s\u00e4tt att definiera en konsekvent struktur f\u00f6r de komponenter som visas p\u00e5 varje sida p\u00e5 en webbplats. Layouten inkluderar vanligtvis element som exempelvis en rubrik, en navigeringsmeny och en sidfot som visas p\u00e5 alla sidor p\u00e5 webbplatsen.<\/p>\n<p>B\u00f6rja med att skapa en komponentmapp i mappen <strong>src<\/strong> (source) i ditt Next.js-projekt. Skapa sedan komponenterna Navbar och Footer som kommer att anv\u00e4ndas i komponenten Layout.<\/p>\n<p>H\u00e4r \u00e4r Navbar-komponenten i <strong>Navbar.jsx<\/strong>:<\/p>\n<pre><code class=\"language-jsx\">\/\/ components\/Navbar.jsx\n\nimport Link from \"next\/link\";\n\nconst Navbar = () =&gt; {\n  return (\n    &lt;div className=\"nav-container\"&gt;\n      &lt;div className=\"logo\"&gt;\n        &lt;Link href=\"\/\"&gt;\n          Joe's Portfolio\n        &lt;\/Link&gt;\n      &lt;\/div&gt;\n      &lt;a href=\"\" className=\"cta-btn\"&gt;Resume&lt;\/a&gt;\n    &lt;\/div&gt;\n  )\n}\n\nexport default Navbar;<\/code><\/pre>\n<p>H\u00e4r \u00e4r komponenten Footer i <strong>Footer.jsx<\/strong>:<\/p>\n<pre><code class=\"language-jsx\">\/\/ components\/Footer.jsx\n\nconst Footer = () =&gt; {\n  return (\n    &lt;&gt;\n      &lt;hr\/&gt;\n      &lt;div className=\"footer-container\"&gt;\n        &lt;p&gt;\n          &copy; {new Date().getFullYear()} Joel's Portfolio\n        &lt;\/p&gt;\n        &lt;div className=\"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 className=\"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 className=\"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 className=\"fa-brands fa-linkedin\"&gt;&lt;\/i&gt;\n          &lt;\/a&gt;\n        &lt;\/div&gt;\n      &lt;\/div&gt;\n    &lt;\/&gt;\n  )\n}\n\nexport default Footer;<\/code><\/pre>\n<h3>L\u00e4gg till CDN-l\u00e4nken<\/h3>\n<p><strong>Observera:<\/strong> F\u00f6r att Font Awesome-ikoner ska fungera s\u00e5 m\u00e5ste du antingen installera Font Awesome i ditt projekt eller anv\u00e4nda dess CDN. Du kan l\u00e4gga till CDN-l\u00e4nken i din <strong>_document.js<\/strong>-fil s\u00e5 h\u00e4r:<\/p>\n<pre><code class=\"language-js\">\/\/ pages\/_document.js\n\nimport { Html, Head, Main, NextScript } from 'next\/document';\n\nexport default function Document() {\n  return (\n    &lt;Html lang=\"en\"&gt;\n      &lt;Head&gt;\n        &lt;meta charSet=\"utf-8\" \/&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;\/Head&gt;\n      &lt;body&gt;\n      &lt;Main \/&gt;\n      &lt;NextScript \/&gt;\n      &lt;\/body&gt;\n    &lt;\/Html&gt;\n  );\n}<\/code><\/pre>\n<p><strong>Obs:<\/strong> Om du l\u00e4nkar in en annan version av Font Awesome via CDN s\u00e5 m\u00e5ste du byta in ovanf\u00f6r l\u00e4mplig <code>integrity<\/code>-hash f\u00f6r den versionen.<\/p>\n<p>N\u00e4r du har skapat alla n\u00f6dv\u00e4ndiga komponenter f\u00f6r din layout s\u00e5 kan du sedan skapa sj\u00e4lva Layout-komponenten. L\u00e4gg d\u00e4refter till den h\u00e4r komponenten p\u00e5 dina sidor genom att omsluta sidans inneh\u00e5ll i den.<\/p>\n<p>Layoutkomponenten kommer sedan att acceptera en &lt;code&gt;children&lt;\/code&gt; prop. Som ett resultat s\u00e5 kan du f\u00e5 tillg\u00e5ng till inneh\u00e5llet i dina Next.js-sidor.<\/p>\n<pre><code class=\"language-jsx\">\/\/ components\/Layout.jsx\n\nimport Navbar from '.\/navbar';\nimport Footer from '.\/footer';\n\nconst Layout = ({ children }) =&gt; {\n  return (\n    &lt;&gt;\n      &lt;Navbar \/&gt;\n      &lt;main&gt;{children}&lt;\/main&gt;\n      &lt;Footer \/&gt;\n    &lt;\/&gt;\n  )\n}\n\nexport default Layout;<\/code><\/pre>\n<h3>L\u00e4gg till Layout-komponenten<\/h3>\n<p>Nu har du lyckats att skapa Layout-komponenten som inneh\u00e5ller navigeringsf\u00e4ltet och sidfoten tillsammans med children-propsen som \u00e4r korrekt placerade. Du kan d\u00e4refter l\u00e4gga till Layout-komponenten p\u00e5 dina sidor genom att svepa in sidans inneh\u00e5ll i den. Detta g\u00f6rs i filen <strong>_app.js<\/strong>.<\/p>\n<pre><code class=\"language-js\">\/\/ pages\/_app.js\n\nimport '@\/styles\/globals.css';\nimport Layout from '..\/components\/layout';\n\nexport default function App({ Component, pageProps }) {\n  return (\n    &lt;Layout&gt;\n      &lt;Component {...pageProps} \/&gt;\n    &lt;\/Layout&gt;\n  );\n}<\/code><\/pre>\n<p>Nu har du skapat en layout f\u00f6r din utvecklar-portfolio. F\u00f6r den h\u00e4r portfolion s\u00e5 fokuserar vi mer p\u00e5 Next.js och hur du distribuerar din webbplats till Kinsta. Du kan allts\u00e5 kopiera stilarna i filen <a href=\"https:\/\/github.com\/olawanlejoel\/Kinsta-developer-portfolio\/blob\/main\/src\/styles\/globals.css\">styles\/globals.css<\/a> till ditt eget projekt. Om du startar din portfolio-webbplats i utvecklings-l\u00e4ge s\u00e5 b\u00f6r du nu se din app-layout.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/layout-component.jpg\" alt=\"Komponent f\u00f6r layout\" width=\"1600\" height=\"619\"><figcaption class=\"wp-caption-text\">Komponent f\u00f6r layout<\/figcaption><\/figure>\n<p>Nu \u00e4r det dags att ge din portfolio-webbplats ett l\u00e4mpligt inneh\u00e5ll.<\/p>\n<h3>Att bygga portfolio-komponenter<\/h3>\n<p>Du kan nu skapa individuella komponenter f\u00f6r varje avsnitt i din utvecklares portfolio. Alla dessa komponenter kommer sedan att importeras till indexsidan i ditt Next.js-projekt. Som ett resultat s\u00e5 kan de visas n\u00e4r du startar ditt projekt med <code>npm run dev<\/code>.<\/p>\n<h4>Komponenten Hero<\/h4>\n<p>Komponenten Hero \u00e4r den f\u00f6rsta sektionen under navigeringsf\u00e4ltet. Huvudsyftet \u00e4r att f\u00e5nga anv\u00e4ndarens uppm\u00e4rksamhet och ge dem en k\u00e4nsla av vad webbplatsen eller applikationen handlar om.<\/p>\n<pre><code class=\"language-jsx\">\/\/ components\/Hero.jsx\n\nimport Image from \"next\/image\";\n\nconst Hero = () =&gt; {\n  return (\n    &lt;div className=\"hero-container\"&gt;\n      &lt;Image src='\/images\/profile.jpeg' className=\"profile-img\" width={300} height={300} alt=\"Joe's personal headshot\" \/&gt;\n      &lt;div className=\"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)\n          exceptional websites, applications, and everything in between.\n        &lt;\/p&gt;\n        &lt;div className=\"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 className=\"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 className=\"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 className=\"fa-brands fa-linkedin\"&gt;&lt;\/i&gt;\n          &lt;\/a&gt;\n        &lt;\/div&gt;\n      &lt;\/div&gt;\n    &lt;\/div&gt;\n  )\n}\n\nexport default Hero;<\/code><\/pre>\n<h3>Next.js Image-komponenten anv\u00e4nds ist\u00e4llet f\u00f6r HTML-taggen<\/h3>\n<p>I koden ovan s\u00e5 m\u00e4rker du att <a href=\"https:\/\/nextjs.org\/docs\/api-reference\/next\/image\" target=\"_blank\" rel=\"noopener noreferrer\">Next.js Image-komponenten<\/a> anv\u00e4nds ist\u00e4llet f\u00f6r HTML-taggen <code>img<\/code> f\u00f6r att l\u00e4gga till bilden. Den m\u00f6jligg\u00f6r n\u00e4mligen automatisk bildoptimering, storleks\u00e4ndring och mycket annat.<\/p>\n<p>I komponenten About s\u00e5 m\u00e4rker du \u00e4ven att ett enkelt stycke f\u00f6r att s\u00e4ga lite om utvecklaren har lagts till. Det lades dessutom till n\u00e5gra sociala ikoner fr\u00e5n Font Awesome f\u00f6r att l\u00e4gga till sociala l\u00e4nkar.<\/p>\n<p>S\u00e5 h\u00e4r ska Hero-komponenten se ut:<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/hero-component.jpg\" alt=\"Hero-komponenten\" width=\"1600\" height=\"695\"><figcaption class=\"wp-caption-text\">Hero-komponenten<\/figcaption><\/figure>\n<p>Du kan l\u00e4gga till mer inneh\u00e5ll till Hero-komponenten, \u00e4ndra stilarna i filen <strong>styles\/globals.css<\/strong> och dessutom \u00e5terskapa det h\u00e4r avsnittet p\u00e5 ditt eget s\u00e4tt.<\/p>\n<h4>Komponenten About<\/h4>\n<p>Komponenten About \u00e4r avsedd att ge l\u00e4sare eller personer som bes\u00f6ker din portfolio mer information om dig i s\u00e5 m\u00e5nga stycken som du vill. Om du vill ber\u00e4tta mer om dig sj\u00e4lv s\u00e5 kan du skapa en s\u00e4rskild sida &#8221;Om mig&#8221; och l\u00e4gga till en knapp i denna sektion f\u00f6r att l\u00e4sa mer om dig sj\u00e4lv.<\/p>\n<pre><code class=\"language-jsx\">\/\/ components\/About.jsx\n\nimport Image from \"next\/image\";\n\nconst About = () =&gt; {\n  return (\n    &lt;div className=\"about-container\"&gt;\n      &lt;h2&gt;About Me&lt;\/h2&gt;\n      &lt;div className=\"flex-about\"&gt;\n        &lt;div className=\"about-text\"&gt;\n          &lt;p&gt;\n            As a developer, I have always been passionate about creating elegant and effective solutions to\n            complex problems. I have a strong foundation in software development, with a focus on web\n            technologies such as HTML, CSS, and JavaScript. I enjoy working on both the front-end and\n            back-end of applications, and I am always looking for ways to optimize performance, improve user\n            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\n            complex enterprise-level applications. I am experienced in working with a variety of development\n            tools and frameworks, including React, Angular, Vue.js, Node.js, and Laravel. I am always eager\n            to learn and explore new technologies, and I am constantly seeking out opportunities to improve\n            my skills and knowledge.&lt;\/p&gt;\n        &lt;\/div&gt;\n        &lt;div className=\"about-img\"&gt;\n          &lt;Image src='\/images\/about.jpeg' className=\"profile-img\" width={300} height={500}\/&gt;\n        &lt;\/div&gt;\n      &lt;\/div&gt;\n    &lt;\/div&gt;\n  )\n}\n\nexport default About;<\/code><\/pre>\n<p>Koden ovan inneh\u00e5ller tv\u00e5 stycken text om utvecklaren och en bild p\u00e5 utvecklaren. S\u00e5 h\u00e4r f\u00f6rv\u00e4ntas avsnittet Om se ut:<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/about-component.jpg\" alt=\"Komponenten About\" width=\"1600\" height=\"738\"><figcaption class=\"wp-caption-text\">Komponenten About<\/figcaption><\/figure>\n<p>Du kan alltid finjustera stilarna f\u00f6r att l\u00e4gga till fler bilder och mycket mer.<\/p>\n<h4>Komponenten Skills<\/h4>\n<p>Denna komponent \u00e4r avsedd att visa n\u00e5gra av utvecklarens mest anv\u00e4nda tekniker eller tekniker som utvecklaren har anv\u00e4nt tidigare.<\/p>\n<p><img decoding=\"async\" class=\"yoast-text-mark\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/skills-component.jpg\" alt=\"\"&lt;yoastmark\"><\/p>\n<p>Du kan g\u00f6ra detta enklare att underh\u00e5lla genom att skapa en matris i en extern fil och sedan importera den till f\u00e4rdighets-komponenten. Du kan sedan slinga dig igenom i st\u00e4llet f\u00f6r att duplicera en liknande kod.<\/p>\n<pre><code class=\"language-jsx\">\/\/ components\/Skills.jsx\n\nconst Skills = () =&gt; {\n  return (\n    &lt;div className=\"skills-container\"&gt;\n      &lt;h2&gt;Skills&lt;\/h2&gt;\n      &lt;div className=\"grid-skills\"&gt;\n        &lt;div className=\"skill-card html\"&gt;\n          &lt;i className=\"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 className=\"skill-card css\"&gt;\n          &lt;i className=\"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 className=\"skill-card js\"&gt;\n          &lt;i className=\"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 className=\"skill-card react\"&gt;\n          &lt;i className=\"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 className=\"skill-card node\"&gt;\n          &lt;i className=\"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 className=\"skill-card python\"&gt;\n          &lt;i className=\"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;\n  )\n}\n\nexport default Skills;<\/code><\/pre>\n<h3>Ett kort f\u00f6r varje f\u00e4rdighet<\/h3>\n<p>I koden ovan s\u00e5 skapas ett kort f\u00f6r varje f\u00e4rdighet. Varje kort kommer sedan att inneh\u00e5lla teknik-ikonen fr\u00e5n font-awesome och teknik-namnet. Du kan dessutom l\u00e4gga till fler stilar och finjustera koden f\u00f6r att g\u00f6ra den mer attraktiv och unik.<\/p>\n<h4>Projects-komponenten<\/h4>\n<p>Projects-komponenten \u00e4r en av de viktiga sektionerna i en utvecklares portfolio. Projekten ger konkreta bevis p\u00e5 en utvecklares f\u00e4rdigheter och f\u00f6rm\u00e5gor och visar dessutom hans eller hennes f\u00f6rm\u00e5ga att till\u00e4mpa sina kunskaper p\u00e5 verkliga problem.<\/p>\n<p>Varje projekt kommer att inneh\u00e5lla en kort beskrivning av projektet, en l\u00e4nk till k\u00e4llkoden (vi anv\u00e4nder <a href=\"https:\/\/kinsta.com\/blog\/what-is-github\/\">GitHub<\/a>-l\u00e4nkar h\u00e4r) och andra detaljer som du vill l\u00e4gga till.<\/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-component.jpg\" alt=\"Projects-komponenten\" width=\"1600\" height=\"847\"><figcaption class=\"wp-caption-text\">Projects-komponenten<\/figcaption><\/figure>\n<p>Du kan skapa en matris som inkluderar varje projekts detaljer och sedan importera den till din komponent f\u00f6r att undvika h\u00e5rd-kodning av dem.<\/p>\n<h3>Skapa en data.js-fil<\/h3>\n<p>L\u00e5t oss skapa en <strong>data.js<\/strong>-fil f\u00f6r att lagra matrisen med projektdata. Du kan lagra den h\u00e4r filen i komponent-mappen eller i mappen <strong>pages\/api<\/strong>. F\u00f6r den h\u00e4r demonstrationen s\u00e5 kommer jag att lagra den i komponent-mappen. Den h\u00e4r matrisen kommer att inneh\u00e5lla ett objekt f\u00f6r varje projekt, och objektet kommer att inneh\u00e5lla projektets namn, beskrivning och GitHub-l\u00e4nk.<\/p>\n<pre><code class=\"language-js\">\/\/ components\/data.js\n\nexport const projectData = [\n  {\n    id: 1,\n    title: 'Todo List App',\n    description:\n      'A simple Todo List App built with JavaScript. All datas are stored in localstorage. It helps users check list out their plans and tick as they do them.',\n    gitHubLink: 'https:\/\/github.com\/olawanlejoel\/Todo-List-App',\n  },\n  {\n    id: 2,\n    title: 'Books Library App',\n    description:\n      'A simple Book Library App built with JavaScript. It helps readers have a good list of books they are either currently reading or have finished reading.',\n    gitHubLink: 'https:\/\/github.com\/olawanlejoel\/Book-Library',\n  },\n  {\n    id: 3,\n    title: 'Quotes Generator',\n    description:\n      'Helps you generate quotes from about 1600 quotes written by different authors . Quotes are automatically copied to your clipboards.',\n    gitHubLink: 'https:\/\/github.com\/olawanlejoel\/random-quote-generator',\n  },\n  {\n    id: 4,\n    title: 'Password Generator',\n    description:\n      'Helps you generates random passwords, you can select what you want your password to entail and also you can copy generated password to clipboard.',\n    gitHubLink: 'https:\/\/github.com\/olawanlejoel\/Password-Generator',\n  },\n  {\n    id: 5,\n    title: 'Twitter UI Clone',\n    description:\n      'Simple Twitter UI clone built with TailwindCSS and Vue Js. This covers only the homepage of Twitter UI. This is cool to get started with TailwindCSS as it helps understand basic concepts.',\n    gitHubLink: 'https:\/\/github.com\/olawanlejoel\/TwitterUI-clone',\n  },\n];<\/code><\/pre>\n<h3>Skapa en projekt-komponent<\/h3>\n<p>Du kan nu skapa en projekt-komponent f\u00f6r att anv\u00e4nda dessa data genom att enkelt slinga dig igenom. Det fungerar med vilken JavaScript-iterationsmetod som helst. F\u00f6r den h\u00e4r handledningen s\u00e5 kan du dock anv\u00e4nda JavaScript <code>map()<\/code> matris-metoden f\u00f6r att slinga dig genom data-matrisen efter att du har importerat den till projekt-komponenten.<\/p>\n<pre><code class=\"language-jsx\">\/\/ components\/Projects.jsx\n\nimport { projectData } from '.\/data.js';\n\nconst Projects = () =&gt; {\n  return (\n    &lt;div className=\"projects-container\"&gt;\n      &lt;h2&gt;Projects&lt;\/h2&gt;\n      &lt;div className=\"projects-grid\"&gt;\n        {projectData && projectData.map((project) =&gt; (\n          &lt;div className=\"project-card\" key={project.id}&gt;\n            &lt;div className=\"project-header\"&gt;\n              &lt;i className=\"fa-regular fa-folder-open folder-icon\"&gt;&lt;\/i&gt;\n              &lt;div className=\"small-icons\"&gt;\n                &lt;a href={project.gitHubLink}&gt;&lt;i className=\"fa-brands fa-github\"&gt;&lt;\/i&gt;&lt;\/a&gt;\n              &lt;\/div&gt;\n            &lt;\/div&gt;\n            &lt;h3&gt;{project.title}&lt;\/h3&gt;\n            &lt;p&gt;{project.description}&lt;\/p&gt;\n          &lt;\/div&gt;\n        ))\n        }\n      &lt;\/div&gt;\n    &lt;\/div&gt;\n  )\n}\n\nexport default Projects;<\/code><\/pre>\n<p>I koden ovan s\u00e5 har du framg\u00e5ngsrikt undvikit upprepning genom att loopa genom matrisen f\u00f6r att mata ut alla projekt i Projects-komponenten. Som ett resultat s\u00e5 blir det enkelt att underh\u00e5lla och l\u00e4gga till fler projekt.<\/p>\n<h4>Contact-komponenten<\/h4>\n<p>En anledning till att skapa en utvecklar-portfolio \u00e4r att potentiella kunder ska kunna kontakta dig. Ett s\u00e4tt \u00e4r exempelvis att skicka ett e-postmeddelanden till dig, vilket vi kommer att underl\u00e4tta i komponenten Contact.<\/p>\n<pre><code class=\"language-jsx\">\/\/ components\/Contact.jsx\n\nconst Contact = () =&gt; {\n  return (\n    &lt;div className=\"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 questions or want me to speak at your event, my inbox is always open. Whether I just want to say hi, I'll try my best to get back to you! Cheers!&lt;\/p&gt;\n      &lt;a href=\"mailto:example@kinsta.com\" className='cta-btn'&gt;Say Hello&lt;\/a&gt;\n    &lt;\/div&gt;\n  )\n}\n\nexport default Contact;<\/code><\/pre>\n<p>Placera din e-postadress i <code>a<\/code>-taggen s\u00e5 att knappen startar ett e-postprogram med ett meddelande till dig.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/contact-component.jpg\" alt=\"Contact-komponenten\" width=\"1600\" height=\"312\"><figcaption class=\"wp-caption-text\">Contact-komponenten<\/figcaption><\/figure>\n<p>Du har nu skapat alla komponenter f\u00f6r din portfolio-till\u00e4mpning. N\u00e4sta steg \u00e4r att l\u00e4gga till dem p\u00e5 din indexsida. Navigera till filen <strong>pages\/index.js<\/strong> &#8211; som skapas som standard &#8211; och ers\u00e4tt koden med f\u00f6ljande.<\/p>\n<pre><code class=\"language-js\">\/\/ pages\/index.js\n\nimport Hero from '@\/components\/Hero';\nimport About from '@\/components\/About';\nimport Skills from '@\/components\/Skills';\nimport Projects from '@\/components\/Projects';\nimport Contact from '@\/components\/Contact';\n\nimport Head from 'next\/head';\n\nconst Home = () =&gt; {\n  return (\n    &lt;&gt;\n      &lt;Head&gt;\n        &lt;title&gt;Joel's Portfolio&lt;\/title&gt;\n        &lt;meta name=\"description\" content=\"Joel's Portfolio\" \/&gt;\n        &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/&gt;\n        &lt;link rel=\"icon\" href=\"\/favicon.ico\" \/&gt;\n      &lt;\/Head&gt;\n      &lt;div&gt;\n        &lt;Hero \/&gt;\n        &lt;About \/&gt;\n        &lt;Skills \/&gt;\n        &lt;Projects \/&gt;\n        &lt;Contact \/&gt;\n      &lt;\/div&gt;\n    &lt;\/&gt;\n  );\n};\n\nexport default Home;<\/code><\/pre>\n<p>N\u00e4r du nu k\u00f6r din applikation s\u00e5 kommer du att m\u00e4rka att en fullst\u00e4ndig <a href=\"https:\/\/kinsta.com\/se\/blog\/portfoliowebbplats\/\">portfolio-webbplats<\/a> har skapats. Slutligen, innan du distribuerar din applikation, s\u00e5 ska vi installera ett beroende. En f\u00f6rdel med att anv\u00e4nda Next.js \u00e4r de m\u00e5nga funktioner som erbjuds. Detta inkluderar exempelvis filbaserad routing, bildoptimering och mycket mer.<\/p>\n<p>Bildoptimering hanteras med Next.js-komponenten <code>Image<\/code>. Innan du distribuerar en applikation som anv\u00e4nder Next.js Image-komponenten s\u00e5 rekommenderas det starkt att du installerar <a href=\"https:\/\/www.npmjs.com\/package\/sharp\">sharp<\/a>. Du kan g\u00f6ra detta genom att navigera till din terminal, se till att du befinner dig i projekt-katalogen och sedan k\u00f6ra f\u00f6ljande kommando:<\/p>\n<pre><code class=\"language-bash\">npm i sharp<\/code><\/pre>\n<p>Du kan nu distribuera din applikation s\u00e5 kommer bilderna att fungera korrekt med den fullst\u00e4ndiga optimeringen som Next.js tillhandah\u00e5ller.<\/p>\n<h2>S\u00e5 h\u00e4r distribuerar du Next.js-applikationen till Kinsta<\/h2>\n<p>N\u00e4r du \u00e4r n\u00f6jd med din portfolio som visar upp ditt b\u00e4sta utvecklingsarbete och viktig information s\u00e5 vill du f\u00f6rmodligen dela den med andra, eller hur? L\u00e5t oss se hur du g\u00f6r detta med GitHub och Kinsta&#8217;s plattform f\u00f6r applikationshosting.<\/p>\n<h3>Skicka din kod till GitHub<\/h3>\n<p>Det finns olika s\u00e4tt att pusha koder till GitHub. L\u00e5t oss dock anv\u00e4nda Git f\u00f6r den h\u00e4r handledningen. <a href=\"https:\/\/kinsta.com\/blog\/git-for-web-development\/\">Git anv\u00e4nds ofta inom programvaruutveckling<\/a> eftersom det \u00e4r ett p\u00e5litligt och effektivt s\u00e4tt att hantera kod\u00e4ndringar, samarbeta i projekt och uppr\u00e4tth\u00e5lla versionshistorik.<\/p>\n<p>Du kan ladda upp din kod till GitHub med hj\u00e4lp av f\u00f6ljande steg:<\/p>\n<p>F\u00f6rst s\u00e5 skapar du ett nytt arkiv (precis som en lokal mapp f\u00f6r att lagra din kod). Du g\u00f6r detta genom att logga in p\u00e5 ditt GitHub-konto, klicka p\u00e5 <strong>+<\/strong>-knappen i det \u00f6vre h\u00f6gra h\u00f6rnet av sk\u00e4rmen och v\u00e4lja <strong>Nytt arkiv<\/strong> fr\u00e5n rullgardinsmenyn, som du ser i bilden nedan.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/Create-a-new-repository-on-GitHub.jpg\" alt=\"Skapa ett nytt GitHub-arkiv.\" width=\"1600\" height=\"770\"><figcaption class=\"wp-caption-text\">Skapa ett nytt GitHub-arkiv.<\/figcaption><\/figure>\n<p>N\u00e4sta steg \u00e4r att ge ditt arkiv ett namn, l\u00e4gga till en beskrivning (valfritt) och v\u00e4lja om du vill att ditt arkiv ska vara offentligt eller privat. Klicka sedan p\u00e5 <strong>Skapa ett arkiv<\/strong>. Du kan nu skicka din kod till det nya GitHub-arkivet.<\/p>\n<p>Allt som kr\u00e4vs f\u00f6r att pusha din kod med Git \u00e4r webbadressen till arkivet, som du hittar p\u00e5 arkivets huvudsida, under knappen <strong>Klona eller ladda ner<\/strong>. De visas dessutom i de steg som visas efter att du skapat ett arkiv.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/how-to-get-repository-URL.jpg\" alt=\"F\u00e5 tillg\u00e5ng till din webbadress f\u00f6r GitHub-arkivet\" width=\"1600\" height=\"738\"><figcaption class=\"wp-caption-text\">F\u00e5 tillg\u00e5ng till din webbadress f\u00f6r GitHub-arkivet<\/figcaption><\/figure>\n<p>Du kan f\u00f6rbereda dig f\u00f6r att pusha din kod genom att \u00f6ppna din terminal eller kommando-tolk och navigera till katalogen som inneh\u00e5ller ditt projekt. Anv\u00e4nd f\u00f6ljande kommando f\u00f6r att initiera ett lokalt Git-arkiv:<\/p>\n<pre><code class=\"language-bash\">git init<\/code><\/pre>\n<p>L\u00e4gg nu till din kod i det lokala Git-arkivet med f\u00f6ljande kommando:<\/p>\n<pre><code class=\"language-bash\">git add .<\/code><\/pre>\n<p>Ovanst\u00e5ende kommando l\u00e4gger till alla filer i den aktuella katalogen och dess underkataloger till det nya Git-arkivet. Du kan sedan bekr\u00e4fta dina \u00e4ndringar med f\u00f6ljande kommando:<\/p>\n<pre><code class=\"language-bash\">git commit -m \"my first commit\"<\/code><\/pre>\n<p><strong>Obs:<\/strong> Du kan ers\u00e4tta &#8221;my first commit&#8221; med ditt eget korta meddelande som beskriver de \u00e4ndringar som du har gjort.<\/p>\n<p>Slutligen s\u00e5 kan du skicka din kod till GitHub med f\u00f6ljande kommandon:<\/p>\n<pre><code class=\"language-bash\">\ngit remote add origin [repository URL]\ngit push -u origin master<\/code><\/pre>\n<p><strong>Observera:<\/strong> Se till att du ers\u00e4tter &#8221;[repository URL]&#8221; med webbadressen f\u00f6r ditt eget GitHub-arkiv.<\/p>\n<p>N\u00e4r du har slutf\u00f6rt dessa steg s\u00e5 kommer din kod att skickas till GitHub och bli tillg\u00e4nglig via webbadressen f\u00f6r ditt arkiv. Du kan nu distribuera ditt arkiv till Kinsta.<\/p>\n<h3>Distribuera din portfolio till Kinsta<\/h3>\n<p>Distribueringen till Kinsta sker p\u00e5 endast n\u00e5gra minuter. B\u00f6rja med att logga in eller skapa ditt konto p\u00e5 instrumentpanelen <a href=\"https:\/\/my.kinsta.com\/?lang=sv\">MyKinsta<\/a>.<\/p>\n<p>D\u00e4refter s\u00e5 <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/github#authenticate-and-authorize\">godk\u00e4nner du Kinsta p\u00e5 GitHub<\/a> i dessa snabba steg:<\/p>\n<ol start=\"1\">\n<li>Klicka p\u00e5 <strong>Applikationer<\/strong> i den v\u00e4nstra sidof\u00e4ltet<\/li>\n<li>Klicka p\u00e5 <strong>L\u00e4gg till tj\u00e4nst<\/strong><\/li>\n<li>I rullgardinsmenyn s\u00e5 klickar du p\u00e5 <strong>Applikation<\/strong> eftersom du vill distribuera en Next.js-applikation till Kinsta.<\/li>\n<\/ol>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/host-application-on-kinsta.jpg\" alt=\"Skapa ett applikationsprojekt i MyKinsta\" width=\"1600\" height=\"503\"><figcaption class=\"wp-caption-text\">Skapa ett applikationsprojekt i MyKinsta<\/figcaption><\/figure>\n<p>En modal visas d\u00e4r du kan v\u00e4lja det arkiv som du vill distribuera.<\/p>\n<p>Om du har flera grenar i ditt arkiv s\u00e5 kan du v\u00e4lja den gren som du vill distribuera. Du kan dessutom ge applikationen ett namn. Se till att du v\u00e4ljer en <a href=\"https:\/\/kinsta.com\/docs\/service-information\/data-center-locations\/#application-and-database-hosting-data-centers\">datacenterplats<\/a> bland de tillg\u00e4ngliga 24. D\u00e4refter s\u00e5 kommer Kinsta automatiskt att uppt\u00e4cka ett startkommando.<\/p>\n<figure style=\"width: 1438px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/deploying_application_to_kinsta.gif\" alt=\"Automatisk uppt\u00e4ckt av startkommando\" width=\"1438\" height=\"736\"><figcaption class=\"wp-caption-text\">Automatisk uppt\u00e4ckt av startkommando<\/figcaption><\/figure>\n<p>Vid den h\u00e4r tidpunkten s\u00e5 kommer din applikation att b\u00f6rja distribueras. Inom n\u00e5gra minuter s\u00e5 kommer en l\u00e4nk att tillhandah\u00e5llas f\u00f6r att komma \u00e5t den distribuerade versionen av din applikation. I det h\u00e4r fallet s\u00e5 \u00e4r l\u00e4nken: <strong>https:\/\/kinsta-developer-portfolio-ir8w8.kinsta.app\/<\/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\/deployemnt-link-on-kinsta.jpg\" alt=\"L\u00e4nk f\u00f6r distribuering p\u00e5 Kinsta\" width=\"1600\" height=\"720\"><figcaption class=\"wp-caption-text\">L\u00e4nk f\u00f6r distribuering p\u00e5 Kinsta<\/figcaption><\/figure>\n<p><strong>Obs:<\/strong> Automatisk distribuering var aktiverad, s\u00e5 Kinsta distribuerar automatiskt om din applikation n\u00e4r du g\u00f6r \u00e4ndringar i din kodbas och skickar den till GitHub.<\/p>\n\n<kinsta-video src=\"https:\/\/www.youtube.com\/watch?v=vmNem6wxfSQ\"><\/kinsta-video>\n<h2>Sammanfattning<\/h2>\n<p>Det finns flera sk\u00e4l till varf\u00f6r utvecklare b\u00f6r \u00f6verv\u00e4ga att anv\u00e4nda Next.js f\u00f6r sina webbprojekt. Det skapar exempelvis en optimerad prestanda direkt fr\u00e5n start, med funktioner som pre-fetching och koduppdelning som bidrar till att minska sidladdningstiderna. Ut\u00f6ver detta s\u00e5 skapas dessutom en v\u00e4lbekant utvecklingsupplevelse f\u00f6r React-utvecklare, med st\u00f6d f\u00f6r popul\u00e4ra verktyg som stiliserade komponenter och de senaste React-funktionerna.<\/p>\n<p>Kinsta erbjuder st\u00f6d f\u00f6r olika distribuerings-alternativ f\u00f6r Next.js, inklusive traditionell serverbaserad hosting och moderna serverl\u00f6sa plattformar. Som ett resultat s\u00e5 blir det m\u00f6jligt f\u00f6r utvecklare att v\u00e4lja det distribuerings-alternativ som passar b\u00e4st f\u00f6r deras behov och samtidigt dra nytta av ramverkets prestandaoptimeringar och andra f\u00f6rdelar.<\/p>\n<p>I den h\u00e4r handledningen s\u00e5 har du steg f\u00f6r steg l\u00e4rt dig hur du bygger en responsiv portfolio-sida med Next.js och hur du distribuerar den till Kinsta.<\/p>\n<p>Du kan <a href=\"https:\/\/sevalla.com\/application-hosting\/\">prova Kinsta&#8217;s Applikationshosting kostnadsfritt.<\/a> Om du gillar den s\u00e5 kan du v\u00e4lja v\u00e5r <a href=\"https:\/\/sevalla.com\/pricing\/\">Hobby Niv\u00e5<\/a>-plan som <strong>b\u00f6rjar p\u00e5 7 dollar\/m\u00e5nad<\/strong>.<\/p>\n<p>Nu \u00e4r det din tur att utmana dig sj\u00e4lv: l\u00e4gg till fler funktioner p\u00e5 din nyutvecklade portfolio-webbplats! H\u00e4r \u00e4r n\u00e5gra id\u00e9er f\u00f6r att f\u00e5 din kreativa juice att fl\u00f6da: l\u00e4gg till fler sidor med detaljerad information, integrera en blogg med MDX, implementera lite animation. Dela med dig av dina projekt och erfarenheter i kommentarerna nedan!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En utvecklar-portfolio \u00e4r en samling arbetsprover och projekt som visar upp dina f\u00e4rdigheter och erfarenheter. En stark portfolio skiljer dig exempelvis fr\u00e5n andra kandidater n\u00e4r du &#8230;<\/p>\n","protected":false},"author":287,"featured_media":51052,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[783],"class_list":["post-51051","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-javascript-ramverk"],"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>Hur du bygger och distribuerar en utvecklar-portfolio med Next.js - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"L\u00e4r dig hur du bygger en utvecklar-portfolio med Next.js. Distribuera direkt fr\u00e5n ditt GitHub-arkiv till Kinsta\u00b4s Applikationshosting.\" \/>\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\/se\/blog\/next-js-portfolio\/\" \/>\n<meta property=\"og:locale\" content=\"sv_SE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hur du bygger och distribuerar en utvecklar-portfolio med Next.js\" \/>\n<meta property=\"og:description\" content=\"L\u00e4r dig hur du bygger en utvecklar-portfolio med Next.js. Distribuera direkt fr\u00e5n ditt GitHub-arkiv till Kinsta\u00b4s Applikationshosting.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstasweden\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-09T12:15:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-18T08:43:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"3042\" \/>\n\t<meta property=\"og:image:height\" content=\"1521\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"L\u00e4r dig hur du bygger en utvecklar-portfolio med Next.js. Distribuera direkt fr\u00e5n ditt GitHub-arkiv till Kinsta\u00b4s Applikationshosting.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_se\" \/>\n<meta name=\"twitter:label1\" content=\"Skriven av\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Ber\u00e4knad l\u00e4stid\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 minuter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/se\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Hur du bygger och distribuerar en utvecklar-portfolio med Next.js\",\"datePublished\":\"2023-03-09T12:15:14+00:00\",\"dateModified\":\"2023-09-18T08:43:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/\"},\"wordCount\":3211,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/se\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg\",\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/\",\"url\":\"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/\",\"name\":\"Hur du bygger och distribuerar en utvecklar-portfolio med Next.js - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/se\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg\",\"datePublished\":\"2023-03-09T12:15:14+00:00\",\"dateModified\":\"2023-09-18T08:43:27+00:00\",\"description\":\"L\u00e4r dig hur du bygger en utvecklar-portfolio med Next.js. Distribuera direkt fr\u00e5n ditt GitHub-arkiv till Kinsta\u00b4s Applikationshosting.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/#breadcrumb\"},\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg\",\"width\":3042,\"height\":1521},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/se\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript-ramverk\",\"item\":\"https:\/\/kinsta.com\/se\/topics\/javascript-ramverk\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Hur du bygger och distribuerar en utvecklar-portfolio med Next.js\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/se\/#website\",\"url\":\"https:\/\/kinsta.com\/se\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snabba, s\u00e4kra, premium hosting-l\u00f6sningar\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/se\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/se\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"sv-SE\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/se\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/se\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/kinsta.com\/se\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/se\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstasweden\/\",\"https:\/\/x.com\/kinsta_se\",\"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\/se\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/kinsta.com\/se\/#\/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\/se\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Hur du bygger och distribuerar en utvecklar-portfolio med Next.js - Kinsta\u00ae","description":"L\u00e4r dig hur du bygger en utvecklar-portfolio med Next.js. Distribuera direkt fr\u00e5n ditt GitHub-arkiv till Kinsta\u00b4s Applikationshosting.","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\/se\/blog\/next-js-portfolio\/","og_locale":"sv_SE","og_type":"article","og_title":"Hur du bygger och distribuerar en utvecklar-portfolio med Next.js","og_description":"L\u00e4r dig hur du bygger en utvecklar-portfolio med Next.js. Distribuera direkt fr\u00e5n ditt GitHub-arkiv till Kinsta\u00b4s Applikationshosting.","og_url":"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstasweden\/","article_published_time":"2023-03-09T12:15:14+00:00","article_modified_time":"2023-09-18T08:43:27+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg","type":"image\/jpeg"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"L\u00e4r dig hur du bygger en utvecklar-portfolio med Next.js. Distribuera direkt fr\u00e5n ditt GitHub-arkiv till Kinsta\u00b4s Applikationshosting.","twitter_image":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@kinsta_se","twitter_misc":{"Skriven av":"Joel Olawanle","Ber\u00e4knad l\u00e4stid":"19 minuter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/se\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Hur du bygger och distribuerar en utvecklar-portfolio med Next.js","datePublished":"2023-03-09T12:15:14+00:00","dateModified":"2023-09-18T08:43:27+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/"},"wordCount":3211,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/se\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg","inLanguage":"sv-SE","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/","url":"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/","name":"Hur du bygger och distribuerar en utvecklar-portfolio med Next.js - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/se\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg","datePublished":"2023-03-09T12:15:14+00:00","dateModified":"2023-09-18T08:43:27+00:00","description":"L\u00e4r dig hur du bygger en utvecklar-portfolio med Next.js. Distribuera direkt fr\u00e5n ditt GitHub-arkiv till Kinsta\u00b4s Applikationshosting.","breadcrumb":{"@id":"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/#breadcrumb"},"inLanguage":"sv-SE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/"]}]},{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/#primaryimage","url":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg","contentUrl":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/03\/how-to-build-and-deploy-a-blazing-fast-developer-portfolio-with-next-js-1.jpg","width":3042,"height":1521},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/se\/blog\/next-js-portfolio\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/se\/"},{"@type":"ListItem","position":2,"name":"JavaScript-ramverk","item":"https:\/\/kinsta.com\/se\/topics\/javascript-ramverk\/"},{"@type":"ListItem","position":3,"name":"Hur du bygger och distribuerar en utvecklar-portfolio med Next.js"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/se\/#website","url":"https:\/\/kinsta.com\/se\/","name":"Kinsta\u00ae","description":"Snabba, s\u00e4kra, premium hosting-l\u00f6sningar","publisher":{"@id":"https:\/\/kinsta.com\/se\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/se\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"sv-SE"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/se\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/se\/","logo":{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/kinsta.com\/se\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/se\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstasweden\/","https:\/\/x.com\/kinsta_se","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\/se\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/kinsta.com\/se\/#\/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\/se\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/posts\/51051","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/comments?post=51051"}],"version-history":[{"count":14,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/posts\/51051\/revisions"}],"predecessor-version":[{"id":53925,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/posts\/51051\/revisions\/53925"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51051\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51051\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51051\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51051\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51051\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51051\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51051\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51051\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51051\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51051\/translations\/dk"},{"href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/51051\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/media\/51052"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/media?parent=51051"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/tags?post=51051"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/topic?post=51051"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}