[{"data":1,"prerenderedAt":1994},["ShallowReactive",2],{"navigation":3,"blog-gode-raad-til-en-hurtigere-hjemmeside":35,"blog-related-gode-raad-til-en-hurtigere-hjemmeside":477},[4,11,17,23,29],{"fields":5,"sys":9},{"navigationTitle":6,"slug":7,"external":8},"Om Nicky","nicky-christensen",false,{"id":10},"nav-1",{"fields":12,"sys":15},{"navigationTitle":13,"slug":14,"external":8},"Udvalgte projekter","referencer",{"id":16},"nav-2",{"fields":18,"sys":21},{"navigationTitle":19,"slug":20,"external":8},"Blog","blog",{"id":22},"nav-blog",{"fields":24,"sys":27},{"navigationTitle":25,"slug":26,"external":8},"Hvad koster det?","projekt-estimator",{"id":28},"nav-estimator",{"fields":30,"sys":33},{"navigationTitle":31,"slug":32,"external":8},"Kontakt","kontakt",{"id":34},"nav-3",{"id":36,"title":37,"body":38,"date":457,"description":458,"extension":459,"meta":460,"navigation":461,"noindex":8,"path":462,"seo":463,"seoDescription":464,"seoTitle":465,"slug":466,"stem":467,"tags":468,"thumbnail":474,"updated":475,"__hash__":476},"blog\u002Fblog\u002Fgode-raad-til-en-hurtigere-hjemmeside.md","Optimering af hjemmeside — Den komplette guide i 2026",{"type":39,"value":40,"toc":433},"minimark",[41,46,50,53,56,60,63,68,71,75,78,82,85,88,92,96,99,133,137,163,167,170,190,194,197,230,234,237,257,260,264,267,293,297,300,323,327,330,356,360,363,366,392,396,399,423,426,430],[42,43,45],"h2",{"id":44},"hvorfor-hastighed-er-afgørende-for-din-forretning","Hvorfor hastighed er afgørende for din forretning",[47,48,49],"p",{},"En langsom hjemmeside koster dig kunder, konverteringer og synlighed på Google. Det er ikke en overdrivelse — det er dokumenteret fakta.",[47,51,52],{},"Google bruger hastighed som en direkte rankeringsfaktor, og deres Core Web Vitals er blevet en central del af, hvordan din hjemmeside bliver vurderet. Samtidig viser undersøgelser, at 53% af mobile besøgende forlader en side, der tager mere end 3 sekunder at loade.",[47,54,55],{},"Med 19+ års erfaring som webudvikler har jeg optimeret hastigheden på alt fra virksomhedswebsites til SaaS-platforme og webshops. I denne guide deler jeg de vigtigste teknikker til at gøre din hjemmeside hurtigere.",[42,57,59],{"id":58},"hvad-er-core-web-vitals","Hvad er Core Web Vitals?",[47,61,62],{},"Core Web Vitals er Googles officielle målestok for brugeroplevelsen på din hjemmeside. Der er tre centrale værdier du skal kende:",[64,65,67],"h3",{"id":66},"lcp-largest-contentful-paint","LCP (Largest Contentful Paint)",[47,69,70],{},"Måler hvor hurtigt det største synlige element på siden bliver vist. Mål: under 2,5 sekunder.",[64,72,74],{"id":73},"inp-interaction-to-next-paint","INP (Interaction to Next Paint)",[47,76,77],{},"Måler hvor hurtigt siden reagerer på brugerinteraktion (klik, tryk, tastatur). Mål: under 200 millisekunder. INP erstattede FID (First Input Delay) i 2024.",[64,79,81],{"id":80},"cls-cumulative-layout-shift","CLS (Cumulative Layout Shift)",[47,83,84],{},"Måler hvor meget sidens layout \"hopper\" mens den loader. Mål: under 0,1.",[47,86,87],{},"Disse tre værdier påvirker direkte din Google-rangering. Scorer du dårligt her, bliver du nedprioriteret i søgeresultaterne.",[42,89,91],{"id":90},"de-8-vigtigste-optimeringer-du-kan-lave","De 8 vigtigste optimeringer du kan lave",[64,93,95],{"id":94},"_1-optimer-dine-billeder","1. Optimer dine billeder",[47,97,98],{},"Billeder er næsten altid den største synder når en hjemmeside er langsom. Her er hvad du kan gøre:",[100,101,102,110,116,127],"ul",{},[103,104,105,109],"li",{},[106,107,108],"strong",{},"Brug moderne formater"," — WebP og AVIF er markant mindre end PNG og JPEG, uden synligt kvalitetstab",[103,111,112,115],{},[106,113,114],{},"Responsive billeder"," — Server det rigtige billedstørrelse til det rigtige device. En mobilbruger behøver ikke et 4K-billede",[103,117,118,121,122,126],{},[106,119,120],{},"Lazy loading"," — Billeder der ikke er synlige på skærmen skal først loades når brugeren scroller derhen. I moderne HTML kan du bruge ",[123,124,125],"code",{},"loading=\"lazy\""," attributten",[103,128,129,132],{},[106,130,131],{},"Komprimering"," — Brug værktøjer som Squoosh, Sharp eller din hosting-udbyders automatiske billedoptimering",[64,134,136],{"id":135},"_2-minimer-og-optimer-din-kode","2. Minimer og optimer din kode",[100,138,139,145,151,157],{},[103,140,141,144],{},[106,142,143],{},"Code splitting"," — Indlæs kun den JavaScript der er nødvendig for den aktuelle side, ikke hele applikationen",[103,146,147,150],{},[106,148,149],{},"Tree shaking"," — Fjern ubrugt kode automatisk via moderne build-værktøjer som Vite eller Webpack",[103,152,153,156],{},[106,154,155],{},"Minificering"," — Fjern whitespace, kommentarer og forkort kode ned til mindst mulig filstørrelse",[103,158,159,162],{},[106,160,161],{},"Fjern unødig JavaScript"," — Tredjepartsscripts, analytics-værktøjer og widgets kan være overraskende tunge. Auditér regelmæssigt hvad der kører på din side",[64,164,166],{"id":165},"_3-udnyt-browser-caching","3. Udnyt browser-caching",[47,168,169],{},"Caching sørger for at tilbagevendende besøgende ikke skal downloade de samme filer igen:",[100,171,172,178,184],{},[103,173,174,177],{},[106,175,176],{},"Sæt cache-headers korrekt"," — Statiske assets (billeder, CSS, JS) kan caches i lang tid",[103,179,180,183],{},[106,181,182],{},"Service Workers"," — For progressive web apps kan en service worker cache sider og assets til offline-brug",[103,185,186,189],{},[106,187,188],{},"CDN (Content Delivery Network)"," — Server dine filer fra det datacenter der er tættest på brugeren. Tjenester som Cloudflare, Netlify og Vercel tilbyder dette automatisk",[64,191,193],{"id":192},"_4-optimer-web-fonts","4. Optimer web fonts",[47,195,196],{},"Fonts er en ofte overset synder:",[100,198,199,208,218,224],{},[103,200,201,207],{},[106,202,203,204],{},"Brug ",[123,205,206],{},"font-display: swap"," — Vis tekst med en fallback-font mens den rigtige font loader",[103,209,210,213,214,217],{},[106,211,212],{},"Preload kritiske fonts"," — Brug ",[123,215,216],{},"\u003Clink rel=\"preload\">"," for dine vigtigste fonts",[103,219,220,223],{},[106,221,222],{},"Begræns antal fonte"," — Hver font-vægt (regular, bold, italic) er en ekstra fil der skal downloades",[103,225,226,229],{},[106,227,228],{},"Brug variable fonts"," — En enkelt fil kan indeholde alle vægte og stilarter",[64,231,233],{"id":232},"_5-server-side-rendering-og-statisk-generering","5. Server-side rendering og statisk generering",[47,235,236],{},"Moderne frameworks som Nuxt og Next.js giver dig mulighed for at pre-rendere dine sider:",[100,238,239,245,251],{},[103,240,241,244],{},[106,242,243],{},"Statisk generering (SSG)"," — Siderne bliver bygget på forhånd og serveret som statiske HTML-filer. Lynhurtigt og fantastisk til SEO",[103,246,247,250],{},[106,248,249],{},"Server-side rendering (SSR)"," — Sider genereres på serveren for hvert request. Bedre til dynamisk indhold",[103,252,253,256],{},[106,254,255],{},"Incremental Static Regeneration (ISR)"," — Det bedste fra begge verdener: statiske sider der kan opdateres uden et fuldt rebuild",[47,258,259],{},"Mit eget website bruger statisk generering med Nuxt 3, hvilket giver en ekstremt hurtig brugeroplevelse.",[64,261,263],{"id":262},"_6-reducer-http-requests","6. Reducer HTTP-requests",[47,265,266],{},"Hver fil din side skal hente er et HTTP-request der tager tid:",[100,268,269,275,281,287],{},[103,270,271,274],{},[106,272,273],{},"Kombiner CSS og JavaScript"," — Moderne build-værktøjer gør dette automatisk",[103,276,277,280],{},[106,278,279],{},"Inline kritisk CSS"," — Den CSS der er nødvendig for at vise den første skærm kan inlines direkte i HTML'en",[103,282,283,286],{},[106,284,285],{},"Brug HTTP\u002F2 eller HTTP\u002F3"," — Disse protokoller kan sende flere filer parallelt, hvilket er markant hurtigere end HTTP\u002F1.1",[103,288,289,292],{},[106,290,291],{},"Fjern unødige tredjepartsscripts"," — Hvert analytics-, chat- og tracking-script tilføjer load-tid",[64,294,296],{"id":295},"_7-undgå-layout-shifts","7. Undgå layout shifts",[47,298,299],{},"Layout shifts (CLS) sker når elementer på siden ændrer position efter de er blevet vist:",[100,301,302,308,314],{},[103,303,304,307],{},[106,305,306],{},"Sæt dimensioner på billeder og videoer"," — Angiv altid width og height, så browseren kan reservere plads",[103,309,310,313],{},[106,311,312],{},"Undgå dynamisk indsat indhold over eksisterende indhold"," — Bannere, cookie-notifikationer og ads der skubber indhold ned",[103,315,316,322],{},[106,317,203,318,321],{},[123,319,320],{},"aspect-ratio"," i CSS"," — Reservér plads til medieindhold før det er loadet",[64,324,326],{"id":325},"_8-mål-og-overvåg-din-performance","8. Mål og overvåg din performance",[47,328,329],{},"Du kan ikke forbedre det du ikke måler:",[100,331,332,338,344,350],{},[103,333,334,337],{},[106,335,336],{},"Google PageSpeed Insights"," — Giver dig en score og konkrete forbedringsforslag baseret på Core Web Vitals",[103,339,340,343],{},[106,341,342],{},"Google Search Console"," — Viser dig Core Web Vitals for alle dine sider baseret på rigtige brugerdata",[103,345,346,349],{},[106,347,348],{},"WebPageTest"," — Detaljeret waterfall-analyse af din sides load-tid",[103,351,352,355],{},[106,353,354],{},"Lighthouse i Chrome DevTools"," — Kør en performance-audit direkte i din browser",[42,357,359],{"id":358},"performance-og-seo-hænger-sammen","Performance og SEO hænger sammen",[47,361,362],{},"Google har gjort det helt klart: hastighed er en rankeringsfaktor. Sider der scorer godt på Core Web Vitals får en fordel i søgeresultaterne.",[47,364,365],{},"Men det handler ikke kun om Google. En hurtig hjemmeside giver også:",[100,367,368,374,380,386],{},[103,369,370,373],{},[106,371,372],{},"Højere konverteringsrate"," — Amazon har dokumenteret at 100ms ekstra load-tid koster dem 1% i omsætning",[103,375,376,379],{},[106,377,378],{},"Lavere bounce rate"," — Besøgende bliver længere på hurtige sider",[103,381,382,385],{},[106,383,384],{},"Bedre mobiloplevelse"," — Hvor over halvdelen af al webtrafik kommer fra",[103,387,388,391],{},[106,389,390],{},"Større kundetilfredshed"," — Hastighed er den mest basale del af brugeroplevelsen",[42,393,395],{"id":394},"sæt-dig-et-performance-mål","Sæt dig et performance-mål",[47,397,398],{},"Min anbefaling er at sætte konkrete mål for din hjemmeside:",[100,400,401,407,412,417],{},[103,402,403,406],{},[106,404,405],{},"LCP under 2,5 sekunder"," på mobil",[103,408,409],{},[106,410,411],{},"INP under 200ms",[103,413,414],{},[106,415,416],{},"CLS under 0,1",[103,418,419,422],{},[106,420,421],{},"PageSpeed score over 90"," på både desktop og mobil",[47,424,425],{},"Disse mål bør være en del af din digitale strategi, ikke bare noget man \"fixér en gang\" og glemmer. Performance er løbende vedligeholdelse — præcis som en bil kræver regelmæssig service.",[42,427,429],{"id":428},"har-du-brug-for-hjælp","Har du brug for hjælp?",[47,431,432],{},"Optimering af en hjemmeside kræver teknisk ekspertise og erfaring. Hvis din hjemmeside er langsom, eller du er i tvivl om din performance, er du velkommen til at tage kontakt. Jeg hjælper gerne med en analyse og konkrete anbefalinger.",{"title":434,"searchDepth":435,"depth":435,"links":436},"",2,[437,438,444,454,455,456],{"id":44,"depth":435,"text":45},{"id":58,"depth":435,"text":59,"children":439},[440,442,443],{"id":66,"depth":441,"text":67},3,{"id":73,"depth":441,"text":74},{"id":80,"depth":441,"text":81},{"id":90,"depth":435,"text":91,"children":445},[446,447,448,449,450,451,452,453],{"id":94,"depth":441,"text":95},{"id":135,"depth":441,"text":136},{"id":165,"depth":441,"text":166},{"id":192,"depth":441,"text":193},{"id":232,"depth":441,"text":233},{"id":262,"depth":441,"text":263},{"id":295,"depth":441,"text":296},{"id":325,"depth":441,"text":326},{"id":358,"depth":435,"text":359},{"id":394,"depth":435,"text":395},{"id":428,"depth":435,"text":429},"2019-01-13","Er din hjemmeside for langsom? Lær hvordan du optimerer hastighed, Core Web Vitals og performance så din hjemmeside ranker højere og konverterer bedre.","md",{},true,"\u002Fblog\u002Fgode-raad-til-en-hurtigere-hjemmeside",{"title":37,"description":458},"Komplet guide til optimering af din hjemmeside. Lær om Core Web Vitals, billedoptimering, caching og moderne performance-teknikker der gør din side hurtigere og synlig på Google.","Optimering af hjemmeside — Guide til hurtigere load-tider i 2026","gode-raad-til-en-hurtigere-hjemmeside","blog\u002Fgode-raad-til-en-hurtigere-hjemmeside",[469,470,471,472,473],"performance","webudvikling","optimering","seo","core-web-vitals","\u002Fimages\u002Fcontentful\u002Fwebsite-hastighed.png","2026-04-03","SCZOeDcYUXtgbFJphViF8lsVxIuFOMWIND7c0Z8rPS0",[478,1100,1552],{"id":479,"title":480,"body":481,"date":475,"description":1084,"extension":459,"meta":1085,"navigation":461,"noindex":8,"path":1086,"seo":1087,"seoDescription":1088,"seoTitle":1089,"slug":1090,"stem":1091,"tags":1092,"thumbnail":1098,"updated":475,"__hash__":1099},"blog\u002Fblog\u002Fsaadan-vaelger-du-den-rigtige-tech-stack.md","Sådan vælger du den rigtige tech stack i 2026",{"type":39,"value":482,"toc":1057},[483,487,490,493,525,528,532,535,539,542,545,550,561,565,573,576,580,597,601,604,608,622,626,629,633,644,648,652,660,664,667,671,674,678,681,685,688,692,695,699,725,728,732,756,760,790,793,797,820,823,827,836,841,855,860,874,879,890,895,906,910,913,919,925,931,937,941,944,950,956,962,965,969,972,1027,1030,1034,1037,1044,1047],[42,484,486],{"id":485},"hvorfor-tech-stack-valget-er-vigtigere-end-du-tror","Hvorfor tech stack-valget er vigtigere end du tror",[47,488,489],{},"At vælge en tech stack er ikke bare et teknisk valg — det er en forretningsbeslutning. Jeg har set virksomheder spilde hundredtusindvis af kroner fordi de valgte den forkerte teknologi. Og jeg har set små teams levere hurtigere end store teams, fordi de valgte klogt.",[47,491,492],{},"Her er hvad der står på spil:",[100,494,495,501,507,513,519],{},[103,496,497,500],{},[106,498,499],{},"Udviklingsomkostninger"," — Den forkerte stack kan fordoble din udviklingstid",[103,502,503,506],{},[106,504,505],{},"Hastighed til markedet"," — Rigtig teknologi betyder hurtigere launch",[103,508,509,512],{},[106,510,511],{},"Rekruttering"," — Kan du finde udviklere der kender stakken? Og hvad koster de?",[103,514,515,518],{},[106,516,517],{},"Skalerbarhed"," — Kan teknologien vokse med din forretning?",[103,520,521,524],{},[106,522,523],{},"Vedligeholdelse"," — Hvad koster det at holde systemet kørende om 3-5 år?",[47,526,527],{},"I min karriere — fra Grundfos og Vestas til Playable og Harness, og nu som Technical Director hos Checkmate.dk — har jeg truffet denne beslutning mange gange. Her er det framework jeg bruger.",[42,529,531],{"id":530},"mit-framework-til-at-evaluere-tech-stack","Mit framework til at evaluere tech stack",[47,533,534],{},"Før du overhovedet tænker på specifikke teknologier, skal du stille de rigtige spørgsmål. Her er min tjekliste:",[64,536,538],{"id":537},"_1-hvad-kan-dit-team","1. Hvad kan dit team?",[47,540,541],{},"Det vigtigste spørgsmål. Punkt. Teknologi dit team allerede kender vil næsten altid slå \"den bedste\" teknologi dit team ikke kender.",[47,543,544],{},"Hos Grundfos arvede vi et projekt bygget i et framework teamet ikke havde erfaring med. Resultatet? 6 måneders forsinkelse og en komplet omskrivning. Havde nogen spurgt \"hvad kan teamet?\", var det aldrig sket.",[47,546,547],{},[106,548,549],{},"Spørgsmål du skal stille:",[100,551,552,555,558],{},[103,553,554],{},"Hvad har teamet erfaring med?",[103,556,557],{},"Hvad kan de lære realistisk inden for projektets tidsramme?",[103,559,560],{},"Er der nogen i teamet der kan drive den tekniske retning?",[64,562,564],{"id":563},"_2-hvad-kræver-projektet-reelt","2. Hvad kræver projektet reelt?",[47,566,567,568,572],{},"Ikke hvad det ",[569,570,571],"em",{},"måske"," kræver om 3 år. Hvad kræver det nu?",[47,574,575],{},"Mange teams over-engineerer fordi de forbereder sig på skaleringsudfordringer de aldrig får. Byg til dine næste 12 måneder, ikke til et hypotetisk scenarie.",[47,577,578],{},[106,579,549],{},[100,581,582,585,588,591,594],{},[103,583,584],{},"Hvor mange brugere skal systemet håndtere?",[103,586,587],{},"Hvor kompleks er forretningslogikken?",[103,589,590],{},"Er der real-time krav?",[103,592,593],{},"Skal det integreres med eksisterende systemer?",[103,595,596],{},"Hvad er tidsplanen?",[64,598,600],{"id":599},"_3-hvor-modent-er-økosystemet","3. Hvor modent er økosystemet?",[47,602,603],{},"Et framework kan være teknisk overlegent, men hvis der ikke er gode biblioteker, dokumentation og community support, betaler du prisen i udvikling.",[47,605,606],{},[106,607,549],{},[100,609,610,613,616,619],{},[103,611,612],{},"Hvor gammel er teknologien? (Under 2 år = risiko)",[103,614,615],{},"Er der aktiv udvikling og regelmæssige releases?",[103,617,618],{},"Hvor stort er communityet?",[103,620,621],{},"Er der gode biblioteker til dine kernebehov?",[64,623,625],{"id":624},"_4-kan-du-ansætte-folk","4. Kan du ansætte folk?",[47,627,628],{},"I Danmark er der stor forskel på hvor mange udviklere der kan de forskellige teknologier. Det skal du tænke ind fra start.",[47,630,631],{},[106,632,549],{},[100,634,635,638,641],{},[103,636,637],{},"Hvor mange ledige stillinger bruger denne teknologi i dit område?",[103,639,640],{},"Hvad er lønniveauet for udviklere med denne kompetence?",[103,642,643],{},"Kan du træne eksisterende medarbejdere?",[42,645,647],{"id":646},"de-5-mest-almindelige-fejl","De 5 mest almindelige fejl",[64,649,651],{"id":650},"fejl-1-at-vælge-baseret-på-hype","Fejl 1: At vælge baseret på hype",[47,653,654,655,659],{},"\"Vi skal bruge ",[656,657,658],"span",{},"nyeste framework"," fordi alle taler om det.\" Nej. Medmindre der er en reel teknisk grund, er popularitet på Twitter ikke et argument.",[64,661,663],{"id":662},"fejl-2-over-engineering-fra-dag-1","Fejl 2: Over-engineering fra dag 1",[47,665,666],{},"Du bygger en marketing-side og vælger microservices med Kubernetes? Stop. Start simpelt, tilføj kompleksitet når du har brug for det.",[64,668,670],{"id":669},"fejl-3-at-ignorere-teamets-kompetencer","Fejl 3: At ignorere teamets kompetencer",[47,672,673],{},"Jeg gentager det gerne: dit teams erfaring trækker mere end noget frameworks features. En middelmådig stack i hænderne på et godt team slår en perfekt stack i hænderne på et team der fumler.",[64,675,677],{"id":676},"fejl-4-at-lade-en-enkelt-udvikler-diktere-valget","Fejl 4: At lade en enkelt udvikler diktere valget",[47,679,680],{},"Undgå \"resume-driven development\" — hvor nogen vælger en teknologi fordi de gerne vil have den på deres CV, ikke fordi den er rigtig for projektet.",[64,682,684],{"id":683},"fejl-5-at-glemme-exit-strategien","Fejl 5: At glemme exit-strategien",[47,686,687],{},"Hvad sker der hvis frameworket dør, eller den primære maintainer stopper? Kan du migrere? Hvor låst er du inde?",[42,689,691],{"id":690},"konkrete-anbefalinger-efter-projekttype","Konkrete anbefalinger efter projekttype",[47,693,694],{},"Her er mine anbefalinger baseret på det jeg ser virke i 2026. Husk: disse er udgangspunkter, ikke dogmer.",[64,696,698],{"id":697},"marketing-site-portfolio","Marketing-site \u002F portfolio",[100,700,701,707,713,719],{},[103,702,703,706],{},[106,704,705],{},"Frontend:"," Nuxt 3 (Vue) eller Next.js (React) med statisk generering",[103,708,709,712],{},[106,710,711],{},"CMS:"," Headless CMS som Storyblok, Contentful eller Sanity",[103,714,715,718],{},[106,716,717],{},"Hosting:"," Netlify eller Vercel",[103,720,721,724],{},[106,722,723],{},"Hvorfor:"," Hurtig udvikling, god SEO ud af boksen, billig hosting, ingen server at vedligeholde",[47,726,727],{},"Dette site (nickychristensen.dk) er bygget præcis sådan — Nuxt 3, statisk generering, deployeret på Netlify. Det er hurtigt, billigt at drive og nemt at vedligeholde.",[64,729,731],{"id":730},"e-commerce-webshop","E-commerce \u002F webshop",[100,733,734,740,745,751],{},[103,735,736,739],{},[106,737,738],{},"Platform:"," Shopify (simpel) eller headless Shopify \u002F Medusa med custom frontend",[103,741,742,744],{},[106,743,705],{}," Nuxt eller Next.js",[103,746,747,750],{},[106,748,749],{},"Betalinger:"," Stripe eller Adyen",[103,752,753,755],{},[106,754,723],{}," E-commerce er et løst problem. Brug en platform der håndterer det tunge (betaling, lager, ordre), og byg custom UI ovenpå",[64,757,759],{"id":758},"saas-produkt","SaaS-produkt",[100,761,762,767,773,779,785],{},[103,763,764,766],{},[106,765,705],{}," Vue 3 + Pinia eller React + Zustand\u002FJotai",[103,768,769,772],{},[106,770,771],{},"Backend:"," Node.js (Express\u002FFastify) eller Go for høj performance",[103,774,775,778],{},[106,776,777],{},"Database:"," PostgreSQL med Prisma eller Drizzle ORM",[103,780,781,784],{},[106,782,783],{},"Auth:"," Auth0, Clerk eller Supabase Auth",[103,786,787,789],{},[106,788,723],{}," Her skal du tænke langsigtet. Vælg det dit team er stærkest i, og prioriter god arkitektur fra start",[47,791,792],{},"Hos Playable byggede vi SaaS-produktet i Vue med en Node-backend. Det fungerede fremragende fordi teamet kendte stakken.",[64,794,796],{"id":795},"enterprise-applikation","Enterprise-applikation",[100,798,799,804,809,815],{},[103,800,801,803],{},[106,802,705],{}," React (størst talentpool) eller Vue 3 med TypeScript",[103,805,806,808],{},[106,807,771],{}," .NET, Java Spring eller Node.js — afhængig af organisationens kompetencer",[103,810,811,814],{},[106,812,813],{},"Infrastruktur:"," Cloud (AWS\u002FAzure\u002FGCP) med CI\u002FCD",[103,816,817,819],{},[106,818,723],{}," Her handler det om stabilitet, skalerbarhed og muligheden for at ansætte. Vælg modne teknologier med lang track record",[47,821,822],{},"Hos Vestas og Grundfos oplevede jeg værdien af at vælge kedeligt og gennemprøvet. Nye og spændende teknologier har en højere pris når hundredevis af udviklere skal arbejde med dem.",[42,824,826],{"id":825},"vue-vs-react-vs-andre-frameworks-i-2026","Vue vs React vs andre frameworks i 2026",[47,828,829,830,835],{},"Jeg har skrevet en hel artikel om ",[831,832,834],"a",{"href":833},"\u002Fblog\u002Freact-vs-vue-i-2026","React vs Vue i 2026",", men her er den korte version:",[47,837,838],{},[106,839,840],{},"Vælg Vue hvis:",[100,842,843,846,849,852],{},[103,844,845],{},"Dit team er mindre (2-10 udviklere)",[103,847,848],{},"Du vil have en blødere læringskurve",[103,850,851],{},"Du foretrækker convention over configuration",[103,853,854],{},"Du bygger med Nuxt og vil have \"batteries included\"",[47,856,857],{},[106,858,859],{},"Vælg React hvis:",[100,861,862,865,868,871],{},[103,863,864],{},"Du ansætter i stor skala og har brug for den største talentpool",[103,866,867],{},"Du har brug for React Native til mobil",[103,869,870],{},"Dit team allerede kender React",[103,872,873],{},"Du arbejder i et enterprise-miljø med eksisterende React-infrastruktur",[47,875,876],{},[106,877,878],{},"Overvej Svelte\u002FSvelteKit hvis:",[100,880,881,884,887],{},[103,882,883],{},"Du bygger et mindre projekt med fokus på performance",[103,885,886],{},"Dit team er nysgerrige og villige til at lære noget nyt",[103,888,889],{},"Du ikke har brug for et kæmpe økosystem af tredjepartsbiblioteker",[47,891,892],{},[106,893,894],{},"Angular er stadig relevant hvis:",[100,896,897,900,903],{},[103,898,899],{},"Du arbejder i et stort enterprise-miljø (særligt .NET-shops)",[103,901,902],{},"Dit team kender det allerede",[103,904,905],{},"Du værdsætter streng struktur og opinionated arkitektur",[42,907,909],{"id":908},"backend-overvejelser","Backend-overvejelser",[47,911,912],{},"Frontend får al opmærksomheden, men backend-valget er mindst lige så vigtigt.",[47,914,915,918],{},[106,916,917],{},"Node.js"," er det oplagte valg hvis dit team allerede skriver JavaScript\u002FTypeScript. Du får kodedeling mellem frontend og backend, og der er et enormt økosystem.",[47,920,921,924],{},[106,922,923],{},"Headless CMS"," (Storyblok, Contentful, Sanity) er rigtige for content-drevne sites. Lad redaktørerne arbejde i en editor de forstår, og byg en custom frontend.",[47,926,927,930],{},[106,928,929],{},"Backend-as-a-Service"," (Supabase, Firebase) er fantastisk til prototyper og mindre SaaS-produkter. Du får database, auth og API uden at bygge det selv. Men vær opmærksom på vendor lock-in.",[47,932,933,936],{},[106,934,935],{},"Go eller Rust"," giver mening hvis performance er kritisk og dit team har kompetencen. For de fleste projekter er Node.js rigeligt.",[42,938,940],{"id":939},"ai-værktøjers-rolle-i-tech-stack-valget-2026-perspektiv","AI-værktøjers rolle i tech stack-valget (2026-perspektiv)",[47,942,943],{},"I 2026 har AI-assistenter som GitHub Copilot, Cursor og Claude fundamentalt ændret hvordan vi skriver kode. Det påvirker også tech stack-valget:",[47,945,946,949],{},[106,947,948],{},"Større økosystem = bedre AI-support."," AI-modeller er trænet på offentlig kode. React og Vue har mere træningsdata end nicheframeworks, hvilket betyder bedre autokomplettering og fejlfinding.",[47,951,952,955],{},[106,953,954],{},"AI reducerer læringskurven."," Det er nemmere at komme i gang med et nyt framework når AI kan forklare kode, generere boilerplate og finde fejl. Men det erstatter ikke dyb forståelse — du skal stadig vide hvad du laver.",[47,957,958,961],{},[106,959,960],{},"Vælg ikke kun baseret på AI-support."," Det er fristende at vælge den teknologi AI er bedst til at generere. Men AI er et værktøj, ikke en arkitekt. De fundamentale kriterier (team, krav, økosystem, rekruttering) er stadig vigtigere.",[47,963,964],{},"Mit råd: Brug AI som accelerator, men lad det ikke diktere dine teknologiske valg.",[42,966,968],{"id":967},"din-tjekliste","Din tjekliste",[47,970,971],{},"Før du træffer den næste tech stack-beslutning, gå denne liste igennem:",[100,973,976,985,991,997,1003,1009,1015,1021],{"className":974},[975],"contains-task-list",[103,977,980,984],{"className":978},[979],"task-list-item",[981,982],"input",{"disabled":461,"type":983},"checkbox"," Hvad kan dit team allerede?",[103,986,988,990],{"className":987},[979],[981,989],{"disabled":461,"type":983}," Hvad kræver projektet reelt (ikke hypotetisk)?",[103,992,994,996],{"className":993},[979],[981,995],{"disabled":461,"type":983}," Er økosystemet modent nok?",[103,998,1000,1002],{"className":999},[979],[981,1001],{"disabled":461,"type":983}," Kan du ansætte folk med denne kompetence?",[103,1004,1006,1008],{"className":1005},[979],[981,1007],{"disabled":461,"type":983}," Har du overvejet vedligeholdelsesomkostninger?",[103,1010,1012,1014],{"className":1011},[979],[981,1013],{"disabled":461,"type":983}," Er du sikker på du ikke over-engineerer?",[103,1016,1018,1020],{"className":1017},[979],[981,1019],{"disabled":461,"type":983}," Har du en exit-strategi?",[103,1022,1024,1026],{"className":1023},[979],[981,1025],{"disabled":461,"type":983}," Har du spurgt teamet (og ikke kun den mest højlydte udvikler)?",[47,1028,1029],{},"Hvis du kan svare ja til de fleste af disse, er du på rette vej.",[42,1031,1033],{"id":1032},"afsluttende-tanker","Afsluttende tanker",[47,1035,1036],{},"I 19+ år som udvikler og nu som Technical Director har jeg lært en ting: den bedste tech stack er den der lader dit team levere værdi hurtigt og pålideligt. Det lyder kedeligt. Det er det også. Men det virker.",[47,1038,1039,1040,1043],{},"Stop med at lede efter den perfekte teknologi. Find den rigtige teknologi ",[569,1041,1042],{},"for dig, dit team og dit projekt",".",[1045,1046],"hr",{},[47,1048,1049],{},[569,1050,1051,1052,1056],{},"Har du brug for sparring på dit næste teknologivalg? Jeg hjælper virksomheder med at træffe de rigtige tekniske beslutninger. ",[831,1053,1055],{"href":1054},"\u002Fkontakt","Kontakt mig"," for en uforpligtende snak.",{"title":434,"searchDepth":435,"depth":435,"links":1058},[1059,1060,1066,1073,1079,1080,1081,1082,1083],{"id":485,"depth":435,"text":486},{"id":530,"depth":435,"text":531,"children":1061},[1062,1063,1064,1065],{"id":537,"depth":441,"text":538},{"id":563,"depth":441,"text":564},{"id":599,"depth":441,"text":600},{"id":624,"depth":441,"text":625},{"id":646,"depth":435,"text":647,"children":1067},[1068,1069,1070,1071,1072],{"id":650,"depth":441,"text":651},{"id":662,"depth":441,"text":663},{"id":669,"depth":441,"text":670},{"id":676,"depth":441,"text":677},{"id":683,"depth":441,"text":684},{"id":690,"depth":435,"text":691,"children":1074},[1075,1076,1077,1078],{"id":697,"depth":441,"text":698},{"id":730,"depth":441,"text":731},{"id":758,"depth":441,"text":759},{"id":795,"depth":441,"text":796},{"id":825,"depth":435,"text":826},{"id":908,"depth":435,"text":909},{"id":939,"depth":435,"text":940},{"id":967,"depth":435,"text":968},{"id":1032,"depth":435,"text":1033},"En praktisk guide til at vælge den rigtige teknologi til dit næste projekt. Baseret på 19+ års erfaring med alt fra enterprise-løsninger til startups.",{},"\u002Fblog\u002Fsaadan-vaelger-du-den-rigtige-tech-stack",{"title":480,"description":1084},"Lær at vælge den rigtige tech stack i 2026. Praktisk framework med konkrete anbefalinger til marketing sites, webshops, SaaS og enterprise.","Sådan vælger du den rigtige tech stack i 2026 — Praktisk guide","saadan-vaelger-du-den-rigtige-tech-stack","blog\u002Fsaadan-vaelger-du-den-rigtige-tech-stack",[1093,1094,1095,1096,1097,470],"tech-stack","strategi","frontend","vue","react","\u002Fimages\u002Fcontentful\u002Fblog-typescript.png","YEW7CxxBTR1_9m_6gqtGIaVBwqx6qvpwQQFhlWkwHs8",{"id":1101,"title":1102,"body":1103,"date":1541,"description":1542,"extension":459,"meta":1543,"navigation":461,"noindex":8,"path":1544,"seo":1545,"seoDescription":1546,"seoTitle":1102,"slug":1547,"stem":1548,"tags":1549,"thumbnail":1550,"updated":1541,"__hash__":1551},"blog\u002Fblog\u002Fvue-3-google-recaptcha.md","Vue 3 - Google reCaptcha implementeret på bare 2 minutter",{"type":39,"value":1104,"toc":1539},[1105,1108,1111,1118,1121,1124,1141,1144,1147,1150,1153,1167,1170,1513,1516,1523,1526,1532,1535],[47,1106,1107],{},"Når vi bygger webapplikationer, har vi ofte brug for at beskytte vores applikationer mod bots og spam. Spammy bots, hackere og ondsindet injektionssoftware kan lave et rigtig grimt rod i vores applikationer, hvis vi ikke har den rette beskyttelse!",[47,1109,1110],{},"Hvordan forhindrer vi det? Ja... reCaptcha til undsætning!",[47,1112,1113,1114,1117],{},"Kort sagt er reCAPTCHA ",[106,1115,1116],{},"en gratis tjeneste fra Google, der hjælper med at beskytte webapplikationer mod spam og misbrug",". Den kan hjælpe med at skelne mennesker fra bots, hvilket gør applikationer mere sikre. Det er en gratis tjeneste, som du kan tilmelde dig på få simple trin.",[47,1119,1120],{},"For at holde denne artikel kort og præcis, vil jeg ikke gå i dybden med hele tilmeldingsprocessen hos Google. Googles dokumentation vil hjælpe dig rigeligt med det.",[47,1122,1123],{},"Forudsætninger:",[100,1125,1126,1129,1138],{},[103,1127,1128],{},"Du skal have en Google-konto for at bruge reCaptcha",[103,1130,1131,1132,1137],{},"API-nøgle - Du kan tilmelde dig her (",[831,1133,1134],{"href":1134,"rel":1135},"https:\u002F\u002Fdevelopers.google.com\u002Frecaptcha\u002Fintro",[1136],"nofollow",")",[103,1139,1140],{},"En kørende Vue 3-applikation",[47,1142,1143],{},"Når du har tilmeldt dig og fået en API-nøgle, skal du muligvis tilføje dit domæne for at bruge den! Du kan tilføje dit domæne i admin-konsollen hos Google.",[47,1145,1146],{},"Vue 3 reCaptcha",[47,1148,1149],{},"Som artiklens titel antyder, kan vi nemt implementere dette i vores Vue 3-applikation. I dette eksempel bruger vi en pakke, der kan gøre arbejdet for os. Med den kan vi implementere reCaptcha-funktionaliteten på blot et par linjer kode.",[47,1151,1152],{},"I din terminal, kør følgende kommando:",[47,1154,1155,1156,1161,1162],{},"Med Yarn: ",[569,1157,1158],{},[106,1159,1160],{},"yarn add vue-recaptcha","\nMed NPM: ",[569,1163,1164],{},[106,1165,1166],{},"npm i vue-recaptcha",[47,1168,1169],{},"Når pakken er installeret, gå ind i dit IDE og Vue-projekt og opret en ny komponent. Med koden herunder har du et fungerende eksempel på en reCaptcha-komponent. Du skal bare tilføje din egen siteKey og selv håndtere, hvad der skal ske, når der opstår en fejl, og når captchaen er gyldig.",[1171,1172,1176],"pre",{"className":1173,"code":1174,"language":1175,"meta":434,"style":434},"language-javascript shiki shiki-themes github-dark","\u003Ctemplate>\n  \u003CVueRecaptcha\n    :sitekey=\"siteKey\"\n    :load-recaptcha-script=\"true\"\n    @verify=\"handleSuccess\"\n    @error=\"handleError\"\n  >\u003C\u002FVueRecaptcha>\n\u003C\u002Ftemplate>\n\n\u003Cscript lang=\"ts\">\nimport { computed, defineComponent } from 'vue';\nimport { VueRecaptcha } from 'vue-recaptcha';\n\nexport default defineComponent({\n  name: 'ReCaptcha',\n  components: {\n    VueRecaptcha\n  },\n  setup() {\n    const siteKey = computed(() => {\n      return 'yourSiteAPIKey';\n    });\n\n    const handleError = () => {\n      \u002F\u002F Do some validation\n    };\n\n    const handleSuccess = (response: string) => {\n     \u002F\u002F Do some validation\n    };\n\n    return {\n      handleSuccess,\n      handleError,\n      siteKey,\n    };\n  }\n});\n\u003C\u002Fscript>\n","javascript",[123,1177,1178,1193,1202,1208,1214,1220,1226,1237,1247,1253,1275,1281,1287,1292,1298,1310,1316,1322,1328,1337,1357,1369,1375,1380,1399,1406,1412,1417,1447,1453,1458,1463,1469,1475,1481,1487,1492,1498,1504],{"__ignoreMap":434},[656,1179,1182,1186,1190],{"class":1180,"line":1181},"line",1,[656,1183,1185],{"class":1184},"s95oV","\u003C",[656,1187,1189],{"class":1188},"s4JwU","template",[656,1191,1192],{"class":1184},">\n",[656,1194,1195,1198],{"class":1180,"line":435},[656,1196,1197],{"class":1184},"  \u003C",[656,1199,1201],{"class":1200},"sDLfK","VueRecaptcha\n",[656,1203,1204],{"class":1180,"line":441},[656,1205,1207],{"class":1206},"s6RL2","    :sitekey=\"siteKey\"\n",[656,1209,1211],{"class":1180,"line":1210},4,[656,1212,1213],{"class":1206},"    :load-recaptcha-script=\"true\"\n",[656,1215,1217],{"class":1180,"line":1216},5,[656,1218,1219],{"class":1206},"    @verify=\"handleSuccess\"\n",[656,1221,1223],{"class":1180,"line":1222},6,[656,1224,1225],{"class":1206},"    @error=\"handleError\"\n",[656,1227,1229,1232,1235],{"class":1180,"line":1228},7,[656,1230,1231],{"class":1184},"  >\u003C\u002F",[656,1233,1234],{"class":1200},"VueRecaptcha",[656,1236,1192],{"class":1184},[656,1238,1240,1243,1245],{"class":1180,"line":1239},8,[656,1241,1242],{"class":1184},"\u003C\u002F",[656,1244,1189],{"class":1188},[656,1246,1192],{"class":1184},[656,1248,1250],{"class":1180,"line":1249},9,[656,1251,1252],{"emptyLinePlaceholder":461},"\n",[656,1254,1256,1258,1261,1265,1269,1273],{"class":1180,"line":1255},10,[656,1257,1185],{"class":1184},[656,1259,1260],{"class":1188},"script",[656,1262,1264],{"class":1263},"svObZ"," lang",[656,1266,1268],{"class":1267},"snl16","=",[656,1270,1272],{"class":1271},"sU2Wk","\"ts\"",[656,1274,1192],{"class":1184},[656,1276,1278],{"class":1180,"line":1277},11,[656,1279,1280],{"class":1184},"import { computed, defineComponent } from 'vue';\n",[656,1282,1284],{"class":1180,"line":1283},12,[656,1285,1286],{"class":1184},"import { VueRecaptcha } from 'vue-recaptcha';\n",[656,1288,1290],{"class":1180,"line":1289},13,[656,1291,1252],{"emptyLinePlaceholder":461},[656,1293,1295],{"class":1180,"line":1294},14,[656,1296,1297],{"class":1184},"export default defineComponent({\n",[656,1299,1301,1304,1307],{"class":1180,"line":1300},15,[656,1302,1303],{"class":1184},"  name: ",[656,1305,1306],{"class":1271},"'ReCaptcha'",[656,1308,1309],{"class":1184},",\n",[656,1311,1313],{"class":1180,"line":1312},16,[656,1314,1315],{"class":1184},"  components: {\n",[656,1317,1319],{"class":1180,"line":1318},17,[656,1320,1321],{"class":1184},"    VueRecaptcha\n",[656,1323,1325],{"class":1180,"line":1324},18,[656,1326,1327],{"class":1184},"  },\n",[656,1329,1331,1334],{"class":1180,"line":1330},19,[656,1332,1333],{"class":1263},"  setup",[656,1335,1336],{"class":1184},"() {\n",[656,1338,1340,1343,1345,1348,1351,1354],{"class":1180,"line":1339},20,[656,1341,1342],{"class":1184},"    const siteKey ",[656,1344,1268],{"class":1267},[656,1346,1347],{"class":1263}," computed",[656,1349,1350],{"class":1184},"(() ",[656,1352,1353],{"class":1267},"=>",[656,1355,1356],{"class":1184}," {\n",[656,1358,1360,1363,1366],{"class":1180,"line":1359},21,[656,1361,1362],{"class":1267},"      return",[656,1364,1365],{"class":1271}," 'yourSiteAPIKey'",[656,1367,1368],{"class":1184},";\n",[656,1370,1372],{"class":1180,"line":1371},22,[656,1373,1374],{"class":1184},"    });\n",[656,1376,1378],{"class":1180,"line":1377},23,[656,1379,1252],{"emptyLinePlaceholder":461},[656,1381,1383,1386,1389,1392,1395,1397],{"class":1180,"line":1382},24,[656,1384,1385],{"class":1184},"    const ",[656,1387,1388],{"class":1263},"handleError",[656,1390,1391],{"class":1267}," =",[656,1393,1394],{"class":1184}," () ",[656,1396,1353],{"class":1267},[656,1398,1356],{"class":1184},[656,1400,1402],{"class":1180,"line":1401},25,[656,1403,1405],{"class":1404},"sAwPA","      \u002F\u002F Do some validation\n",[656,1407,1409],{"class":1180,"line":1408},26,[656,1410,1411],{"class":1184},"    };\n",[656,1413,1415],{"class":1180,"line":1414},27,[656,1416,1252],{"emptyLinePlaceholder":461},[656,1418,1420,1422,1425,1427,1430,1434,1437,1440,1443,1445],{"class":1180,"line":1419},28,[656,1421,1385],{"class":1184},[656,1423,1424],{"class":1263},"handleSuccess",[656,1426,1391],{"class":1267},[656,1428,1429],{"class":1184}," (",[656,1431,1433],{"class":1432},"s9osk","response",[656,1435,1436],{"class":1267},":",[656,1438,1439],{"class":1200}," string",[656,1441,1442],{"class":1184},") ",[656,1444,1353],{"class":1267},[656,1446,1356],{"class":1184},[656,1448,1450],{"class":1180,"line":1449},29,[656,1451,1452],{"class":1404},"     \u002F\u002F Do some validation\n",[656,1454,1456],{"class":1180,"line":1455},30,[656,1457,1411],{"class":1184},[656,1459,1461],{"class":1180,"line":1460},31,[656,1462,1252],{"emptyLinePlaceholder":461},[656,1464,1466],{"class":1180,"line":1465},32,[656,1467,1468],{"class":1184},"    return {\n",[656,1470,1472],{"class":1180,"line":1471},33,[656,1473,1474],{"class":1184},"      handleSuccess,\n",[656,1476,1478],{"class":1180,"line":1477},34,[656,1479,1480],{"class":1184},"      handleError,\n",[656,1482,1484],{"class":1180,"line":1483},35,[656,1485,1486],{"class":1184},"      siteKey,\n",[656,1488,1490],{"class":1180,"line":1489},36,[656,1491,1411],{"class":1184},[656,1493,1495],{"class":1180,"line":1494},37,[656,1496,1497],{"class":1184},"  }\n",[656,1499,1501],{"class":1180,"line":1500},38,[656,1502,1503],{"class":1184},"});\n",[656,1505,1507,1509,1511],{"class":1180,"line":1506},39,[656,1508,1242],{"class":1184},[656,1510,1260],{"class":1188},[656,1512,1192],{"class":1184},[47,1514,1515],{},"Der har du det - på blot et par linjer kode og ved at bruge den fantastiske pakke, kan du tilføje Google reCaptcha til din egen komponent. Dette er et meget basalt fungerende eksempel, men hvis du ønsker at ændre størrelse og stil, kommer den med nogle props, du kan sende til komponenten.",[47,1517,1518,1519],{},"Gå over til dokumentationen for at lære mere om de props og metoder, du har til rådighed: ",[831,1520,1521],{"href":1521,"rel":1522},"https:\u002F\u002Fgithub.com\u002FDanSnow\u002Fvue-recaptcha#readme",[1136],[47,1524,1525],{},"Det var alt for nu!",[47,1527,1528],{},[1529,1530],"img",{"alt":434,"src":1531},"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F800\u002F1*GmtGvbap0r7toziy-rV9rw.gif",[47,1533,1534],{},"Tak fordi du læste med, og jeg håber du kunne lide artiklen.",[1536,1537,1538],"style",{},"html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .s4JwU, html code.shiki .s4JwU{--shiki-default:#85E89D}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .s6RL2, html code.shiki .s6RL2{--shiki-default:#FDAEB7;--shiki-default-font-style:italic}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":434,"searchDepth":435,"depth":435,"links":1540},[],"2022-02-02","Lær hvordan du nemt implementerer Google reCaptcha i din Vue 3-applikation. Det tager kun 2 minutter!",{},"\u002Fblog\u002Fvue-3-google-recaptcha",{"title":1102,"description":1542},"Lær hvordan du nemt implementerer Google reCaptcha i din Vue 3-applikation på bare 2 minutter. Komplet guide med kodeeksempler og opsætning.","vue-3-google-recaptcha","blog\u002Fvue-3-google-recaptcha",[1096,470,1095],"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F800\u002F1*uG97FFS0QE3RSIl-m-3jRw.png","J4vNgJP1f7o_JDzXKh_e3-4s4jg6IH-ZyDn8ofA4lJU",{"id":1553,"title":1554,"body":1555,"date":1980,"description":1981,"extension":459,"meta":1982,"navigation":461,"noindex":8,"path":1983,"seo":1984,"seoDescription":1985,"seoTitle":1986,"slug":1987,"stem":1988,"tags":1989,"thumbnail":1992,"updated":475,"__hash__":1993},"blog\u002Fblog\u002Fhvad-koster-en-hjemmeside.md","Hvad koster en hjemmeside i 2026?",{"type":39,"value":1556,"toc":1958},[1557,1561,1564,1567,1570,1574,1578,1583,1600,1603,1607,1612,1632,1635,1639,1644,1664,1667,1671,1676,1696,1699,1703,1706,1710,1721,1725,1736,1740,1751,1755,1766,1770,1773,1793,1797,1800,1803,1823,1827,1870,1874,1877,1880,1894,1897,1911,1914,1918,1951,1955],[42,1558,1560],{"id":1559},"det-korte-svar-det-kommer-an-på","Det korte svar: Det kommer an på",[47,1562,1563],{},"Jeg har fået dette spørgsmål hundredvis af gange i løbet af mine 19+ år som webudvikler, og svaret er altid det samme: det afhænger af dine behov, ambitioner og krav.",[47,1565,1566],{},"Man kan sammenligne det med at spørge \"hvad koster en bil?\" — er det en VW Up eller en Porsche? Selv indenfor samme mærke varierer prisen enormt alt efter udstyr og specifikationer.",[47,1568,1569],{},"Det samme gælder for hjemmesider. Men lad mig give dig et realistisk overblik over prislejer i 2026.",[42,1571,1573],{"id":1572},"prisoverslag-for-hjemmesider-i-2026","Prisoverslag for hjemmesider i 2026",[64,1575,1577],{"id":1576},"simpel-hjemmeside-wordpresstemplate","Simpel hjemmeside (WordPress\u002Ftemplate)",[47,1579,1580],{},[106,1581,1582],{},"Pris: 10.000 - 30.000 DKK",[100,1584,1585,1588,1591,1594,1597],{},[103,1586,1587],{},"Template-baseret design (fx WordPress med et købt tema)",[103,1589,1590],{},"5-10 undersider",[103,1592,1593],{},"Kontaktformular",[103,1595,1596],{},"Basalt responsivt design",[103,1598,1599],{},"Minimal tilpasning",[47,1601,1602],{},"Pas på: I denne prisklasse får du oftest en standardløsning med begrænset kvalitet. Mange udbydere installerer blot et tema og tilpasser farver og indhold. Det kan være fint til en helt simpel tilstedeværelse, men forvent ikke høj hastighed, god SEO eller unikt design.",[64,1604,1606],{"id":1605},"professionel-hjemmeside-skræddersyet","Professionel hjemmeside (skræddersyet)",[47,1608,1609],{},[106,1610,1611],{},"Pris: 40.000 - 120.000 DKK",[100,1613,1614,1617,1620,1623,1626,1629],{},[103,1615,1616],{},"Skræddersyet design tilpasset din virksomhed",[103,1618,1619],{},"Responsivt og optimeret til alle devices",[103,1621,1622],{},"SEO-optimeret struktur og indhold",[103,1624,1625],{},"CMS-integration (så du selv kan redigere indhold)",[103,1627,1628],{},"Performance-optimering",[103,1630,1631],{},"Basalt analytics-setup",[47,1633,1634],{},"Her får du en hjemmeside der er bygget specifikt til din virksomhed og dine brugere. Designet er unikt, koden er skrevet fra bunden, og der er taget højde for hastighed, SEO og brugeroplevelse.",[64,1636,1638],{"id":1637},"webshop","Webshop",[47,1640,1641],{},[106,1642,1643],{},"Pris: 50.000 - 200.000+ DKK",[100,1645,1646,1649,1652,1655,1658,1661],{},[103,1647,1648],{},"Alt fra den professionelle hjemmeside",[103,1650,1651],{},"Produktkatalog og kategoristyring",[103,1653,1654],{},"Betalingsløsning (Stripe, Nets, MobilePay)",[103,1656,1657],{},"Ordrestyring og lagerstyring",[103,1659,1660],{},"Fragtberegning og forsendelse",[103,1662,1663],{},"Integration til regnskabssystem",[47,1665,1666],{},"Prisen afhænger i høj grad af antal produkter, kompleksitet i produktvarianter, og hvilke integrationer der er behov for. En webshop med 50 produkter er en helt anden opgave end en med 10.000+ produkter.",[64,1668,1670],{"id":1669},"web-applikation-saas-platform","Web-applikation \u002F SaaS-platform",[47,1672,1673],{},[106,1674,1675],{},"Pris: 150.000 - 500.000+ DKK",[100,1677,1678,1681,1684,1687,1690,1693],{},[103,1679,1680],{},"Brugertilmelding og login-system",[103,1682,1683],{},"Kompleks funktionalitet og forretningslogik",[103,1685,1686],{},"API-integrationer",[103,1688,1689],{},"Skalerbar arkitektur",[103,1691,1692],{},"Sikkerhed og databeskyttelse",[103,1694,1695],{},"Løbende videreudvikling",[47,1697,1698],{},"Denne type projekt er software-udvikling, ikke \"bare\" en hjemmeside. Her taler vi om digitale produkter der kører en forretning.",[42,1700,1702],{"id":1701},"hvad-påvirker-prisen","Hvad påvirker prisen?",[47,1704,1705],{},"Der er en lang række faktorer der påvirker prisen på en hjemmeside. Her er de vigtigste:",[64,1707,1709],{"id":1708},"design-og-kompleksitet","Design og kompleksitet",[100,1711,1712,1715,1718],{},[103,1713,1714],{},"Skal det være et unikt, skræddersyet design, eller er et template tilstrækkeligt?",[103,1716,1717],{},"Hvor mange undersider er der behov for?",[103,1719,1720],{},"Er der behov for animationer, interaktive elementer eller avanceret layout?",[64,1722,1724],{"id":1723},"funktionalitet","Funktionalitet",[100,1726,1727,1730,1733],{},[103,1728,1729],{},"Skal der være integrationer til tredjeparts-systemer (CRM, ERP, betalingsgateway)?",[103,1731,1732],{},"Er der behov for brugerlogin, booking, prisberegner eller andre specialfunktioner?",[103,1734,1735],{},"Skal du selv kunne opdatere indhold via et CMS?",[64,1737,1739],{"id":1738},"seo-og-performance","SEO og performance",[100,1741,1742,1745,1748],{},[103,1743,1744],{},"Skal hjemmesiden optimeres til søgemaskiner?",[103,1746,1747],{},"Er hastighed en prioritet? (Hint: det bør det altid være)",[103,1749,1750],{},"Skal der være struktureret data og schema markup?",[64,1752,1754],{"id":1753},"vedligeholdelse-og-support","Vedligeholdelse og support",[100,1756,1757,1760,1763],{},[103,1758,1759],{},"Hvem tager sig af opdateringer og sikkerhed efter lancering?",[103,1761,1762],{},"Er der behov for løbende support og videreudvikling?",[103,1764,1765],{},"Skal der være en serviceaftale?",[64,1767,1769],{"id":1768},"ai-påvirkning-på-priser-i-2026","AI-påvirkning på priser i 2026",[47,1771,1772],{},"AI-værktøjer har ændret landskabet for webudvikling. Nogle enkle opgaver kan nu laves hurtigere, men det har også øget forventningerne til kvalitet. Her er hvad du skal vide:",[100,1774,1775,1781,1787],{},[103,1776,1777,1780],{},[106,1778,1779],{},"AI kan hjælpe med prototyping og kode"," — Men det kræver en erfaren udvikler at bruge AI-værktøjer effektivt og sikre kvaliteten",[103,1782,1783,1786],{},[106,1784,1785],{},"Template-markedet er blevet større"," — Der er flere billige løsninger end nogensinde, men kvalitetsforskellen er også blevet større",[103,1788,1789,1792],{},[106,1790,1791],{},"Kompleksiteten er steget"," — Forventninger til hastighed, SEO, tilgængelighed og brugeroplevelse er højere end nogensinde",[42,1794,1796],{"id":1795},"kravspecifikation-dit-vigtigste-værktøj","Kravspecifikation: Dit vigtigste værktøj",[47,1798,1799],{},"Inden du indhenter tilbud, bør du udarbejde en kravspecifikation. Det er en beskrivelse af hvad din hjemmeside skal kunne, hvordan den skal se ud, og hvem den henvender sig til.",[47,1801,1802],{},"En god kravspecifikation hjælper dig med at:",[100,1804,1805,1811,1817],{},[103,1806,1807,1810],{},[106,1808,1809],{},"Få sammenlignelige tilbud"," — Uden en kravspec sammenligner du æbler og pærer",[103,1812,1813,1816],{},[106,1814,1815],{},"Undgå scope creep"," — Klare rammer forebygger at projektet vokser ukontrolleret",[103,1818,1819,1822],{},[106,1820,1821],{},"Sætte realistiske forventninger"," — Både for dig og for udvikleren",[64,1824,1826],{"id":1825},"hvad-skal-en-kravspecifikation-indeholde","Hvad skal en kravspecifikation indeholde?",[100,1828,1829,1835,1841,1847,1852,1858,1864],{},[103,1830,1831,1834],{},[106,1832,1833],{},"Formål"," — Hvad skal hjemmesiden opnå for din forretning?",[103,1836,1837,1840],{},[106,1838,1839],{},"Målgruppe"," — Hvem er dine brugere?",[103,1842,1843,1846],{},[106,1844,1845],{},"Sider og indhold"," — Hvilke sider er der behov for, og hvad skal de indeholde?",[103,1848,1849,1851],{},[106,1850,1724],{}," — Kontaktformular, booking, webshop, login, integrationer?",[103,1853,1854,1857],{},[106,1855,1856],{},"Design"," — Har du et eksisterende brand\u002Fdesignguide, eller skal der laves nyt design?",[103,1859,1860,1863],{},[106,1861,1862],{},"Tekniske krav"," — Hastighed, SEO, browsersupport, tilgængelighed?",[103,1865,1866,1869],{},[106,1867,1868],{},"Budget og tidsplan"," — Hvad er dit budget, og hvornår skal løsningen være klar?",[42,1871,1873],{"id":1872},"pris-og-kvalitet-hænger-sammen","Pris og kvalitet hænger sammen",[47,1875,1876],{},"Det er fristende at vælge den billigste løsning, men i webudvikling får du næsten altid hvad du betaler for.",[47,1878,1879],{},"En hjemmeside til 10.000 DKK er formentlig:",[100,1881,1882,1885,1888,1891],{},[103,1883,1884],{},"Et standardiseret WordPress-tema med minimal tilpasning",[103,1886,1887],{},"Langsom og dårligt optimeret",[103,1889,1890],{},"Uden SEO-strategi",[103,1892,1893],{},"Svær at vedligeholde og videreudvikle",[47,1895,1896],{},"En hjemmeside til 60.000+ DKK bør give dig:",[100,1898,1899,1902,1905,1908],{},[103,1900,1901],{},"Et unikt design tilpasset din virksomhed",[103,1903,1904],{},"Hurtig load-tid og god performance",[103,1906,1907],{},"SEO-optimeret struktur",[103,1909,1910],{},"En løsning der kan vokse med din forretning",[47,1912,1913],{},"Tænk på din hjemmeside som en investering, ikke en udgift. For de fleste virksomheder er hjemmesiden omdrejningspunktet for al digital kommunikation. Den skal stå skarpt.",[42,1915,1917],{"id":1916},"gode-råd-inden-du-køber","Gode råd inden du køber",[1919,1920,1921,1927,1933,1939,1945],"ol",{},[103,1922,1923,1926],{},[106,1924,1925],{},"Lav en kravspecifikation"," — Selv en simpel. Det sparer dig tid og penge",[103,1928,1929,1932],{},[106,1930,1931],{},"Indhent 2-3 tilbud"," — Sammenlign ikke bare pris, men også erfaring, referencer og proces",[103,1934,1935,1938],{},[106,1936,1937],{},"Spørg ind til teknologi"," — Hvad bliver det bygget i, og kan det vedligeholdes af andre?",[103,1940,1941,1944],{},[106,1942,1943],{},"Tænk langsigtet"," — En billig løsning nu kan blive dyr på sigt, hvis den skal bygges om",[103,1946,1947,1950],{},[106,1948,1949],{},"Prioriter hastighed og SEO"," — Det er ikke nice-to-have, det er afgørende for din synlighed",[42,1952,1954],{"id":1953},"har-du-brug-for-et-tilbud","Har du brug for et tilbud?",[47,1956,1957],{},"Har du et projekt du gerne vil have et prisoverslag på? Tag kontakt, så tager vi en uforpligtende snak om dine behov og muligheder.",{"title":434,"searchDepth":435,"depth":435,"links":1959},[1960,1961,1967,1974,1977,1978,1979],{"id":1559,"depth":435,"text":1560},{"id":1572,"depth":435,"text":1573,"children":1962},[1963,1964,1965,1966],{"id":1576,"depth":441,"text":1577},{"id":1605,"depth":441,"text":1606},{"id":1637,"depth":441,"text":1638},{"id":1669,"depth":441,"text":1670},{"id":1701,"depth":435,"text":1702,"children":1968},[1969,1970,1971,1972,1973],{"id":1708,"depth":441,"text":1709},{"id":1723,"depth":441,"text":1724},{"id":1738,"depth":441,"text":1739},{"id":1753,"depth":441,"text":1754},{"id":1768,"depth":441,"text":1769},{"id":1795,"depth":435,"text":1796,"children":1975},[1976],{"id":1825,"depth":441,"text":1826},{"id":1872,"depth":435,"text":1873},{"id":1916,"depth":435,"text":1917},{"id":1953,"depth":435,"text":1954},"2021-02-02","Hvad koster det at få lavet en hjemmeside? Priserne varierer enormt, og der er mange faktorer der spiller ind. Her får du et realistisk overblik over priser og hvad der påvirker dem.",{},"\u002Fblog\u002Fhvad-koster-en-hjemmeside",{"title":1554,"description":1981},"Hvad koster en hjemmeside i 2026? Fra simple WordPress-sider til skræddersyede løsninger. Få et realistisk overblik over priser, faktorer der påvirker prisen, og råd til at finde den rigtige løsning.","Hvad koster en hjemmeside i 2026? Priser og prisoverslag","hvad-koster-en-hjemmeside","blog\u002Fhvad-koster-en-hjemmeside",[1990,1094,470,1991],"pris","hjemmeside","\u002Fimages\u002Fcontentful\u002Fblog-pris-hjemmeside.png","-FI28IRldFkjAtLVTjSPWOWnJcBSNOFGxNj8tYBI_u4",1775291277802]