[{"data":1,"prerenderedAt":487},["Reactive",2],{"global":3,"blok-/blog/modernisering-af-legacy-javascript/":439,"story:/blog/modernisering-af-legacy-javascript/":464},{"story":4,"cv":436,"rels":437,"links":438},{"name":5,"created_at":6,"published_at":7,"updated_at":8,"id":9,"uuid":10,"content":11,"slug":51,"full_slug":51,"sort_by_date":429,"position":430,"tag_list":431,"is_startpage":29,"parent_id":429,"meta_data":429,"group_id":432,"first_published_at":433,"release_id":429,"lang":434,"path":429,"alternates":435,"default_full_slug":429,"translated_slugs":429},"Site settings","2023-02-07T07:13:48.809Z","2026-08-26T07:42:25.623Z","2026-08-26T07:42:25.641Z",258215571,"1fff830c-f3f1-49a9-84f3-94bfd7097497",{"zip":12,"_uid":13,"city":14,"email":15,"phone":16,"Header":17,"popups":18,"address":44,"favicon":45,"siteUrl":49,"siteName":50,"component":51,"redirects":52,"logoFooter":171,"logoHeader":174,"navigation":177,"navigationCta":226,"socialMediaLinks":233,"departmentsNavigation":255,"footerNavigation1Items":327,"footerNavigation1Title":363,"footerNavigation2Items":364,"footerNavigation2Title":393,"footerNavigation3Items":394,"footerNavigation3Title":428},"7100","505975f0-8676-4e20-86ef-d9d3a51f31ae","Vejle","info@uptimedevelopment.dk","+45 70 20 69 59",[],[19],{"Text":20,"_uid":21,"Image":22,"Title":30,"component":31,"SendMessageText":32,"delay_in_seconds":33,"ContactButtonText":34,"FormBackgroundColor":35,"contact_button_link":36,"initial_button_text":42,"ContactBackgroundColor":43},"Ring på 70 20 69 59 eller udfyld kontaktinformationer her.","1245454c-96c2-4dff-a565-e58677753fa1",{"id":23,"alt":24,"name":25,"focus":25,"title":25,"source":25,"filename":26,"copyright":25,"fieldtype":27,"meta_data":28,"is_external_url":29},20856972,"dan-olesen","","https://a.storyblok.com/f/195037/1667x1667/180b821d9c/dan-olesen.jpg","asset",{"alt":24,"title":25,"source":25,"copyright":25},false,"Har du brug for hjælp til et udviklingsprojekt?","ContactPopUp","Kontakt mig","2","Kontakt","#F4F4F4",{"id":37,"url":25,"anchor":38,"linktype":39,"fieldtype":40,"cached_url":41},"4ff97ed1-78a2-4bd1-b221-b514f8b82c95","contact","story","multilink","kontakt","Kontakt os →","#DA001B","Innovations Allé 7",{"id":46,"alt":25,"name":25,"focus":25,"title":25,"source":25,"filename":47,"copyright":25,"fieldtype":27,"meta_data":48,"is_external_url":29},10316658,"https://a.storyblok.com/f/195037/150x150/4b272b1db6/favicon.png",[],"https://www.uptimedevelopment.dk","Uptime Development A/S","global",{"tbody":53,"thead":162,"fieldtype":170},[54,65,74,83,92,101,110,117,126,135,144,153],{"_uid":55,"body":56,"component":64},"c92e0f8c-ccfa-4b4a-aef4-ecfeea166abd",[57,61],{"_uid":58,"value":59,"component":60},"9f3d71af-a1ab-42cb-8bbe-b6b246e8bd15","/5-node-web-frameworks-du-skal-holde-oeje-med","_table_col",{"_uid":62,"value":63,"component":60},"505d5dc4-c959-43ce-a11a-f7dc7492de9a","/blog/5-node-web-frameworks-du-skal-holde-oeje-med","_table_row",{"_uid":66,"body":67,"component":64},"202ba5f7-7db3-4a2f-8894-111eafd5ee97",[68,71],{"_uid":69,"value":70,"component":60},"e4e8322c-5f5f-4da8-8f8a-157a84b19d27","/bliv-klogere-paa-scrum",{"_uid":72,"value":73,"component":60},"4660cd33-0b25-480c-aca7-e5037051309c","/blog/bliv-klogere-paa-scrum",{"_uid":75,"body":76,"component":64},"4de12db7-6edd-46d7-be71-64d28ae44035",[77,80],{"_uid":78,"value":79,"component":60},"1496bafd-202a-4af6-b6ef-317a8d487c47","/react-og-asp-net-core-er-fundamentet-i-nyt-socialt-medie-til-musikbranchen",{"_uid":81,"value":82,"component":60},"62863bdd-2fe9-4f03-aee3-0ff5e0625d09","/blog/react-og-asp-net-core-er-fundamentet-i-nyt-socialt-medie-til-musikbranchen",{"_uid":84,"body":85,"component":64},"bf41c033-b58f-4070-8f2b-cd7778d64c98",[86,89],{"_uid":87,"value":88,"component":60},"e384c282-dcdc-44e8-afad-0b666e5dabe1","/react-og-node-tager-foerertroejen-i-international-undersoegelse",{"_uid":90,"value":91,"component":60},"506f6532-1d78-40ca-977b-d3b93035d7e8","/blog/react-og-node-tager-foerertroejen-i-international-undersoegelse",{"_uid":93,"body":94,"component":64},"7cd64b27-b865-40f7-845b-da43b8a139d2",[95,98],{"_uid":96,"value":97,"component":60},"88c04135-2ff1-4bee-8838-812e757ef1fe","/saadan-bruger-du-dit-it-budget-smartest",{"_uid":99,"value":100,"component":60},"a48d1db0-66b4-40b8-b870-a82cbdf47598","/blog/saadan-bruger-du-dit-it-budget-smartest",{"_uid":102,"body":103,"component":64},"044027f2-d5f6-4c23-a09b-4cc455771919",[104,107],{"_uid":105,"value":106,"component":60},"62655203-33e9-4d60-a72e-afa45e77e65e","/stor-undersoegelse-nye-spillere-stikker-hovedet-frem-i-javascript-verdenen",{"_uid":108,"value":109,"component":60},"e8c77406-3f5b-4bbf-8bc4-c5535d274e7e","/blog/stor-undersoegelse-nye-spillere-stikker-hovedet-frem-i-javascript-verdenen",{"_uid":111,"body":112,"component":64},"c721f17d-bf34-49d9-b2a8-939763f73bc9",[113,115],{"_uid":114,"value":97,"component":60},"2367fa98-6859-4b02-a8a3-625b732bbf20",{"_uid":116,"value":100,"component":60},"15648518-7732-4a0d-ae37-691583d3a7e8",{"_uid":118,"body":119,"component":64},"059aa2e9-f281-4d83-a3a5-df6805928abe",[120,123],{"_uid":121,"value":122,"component":60},"4c0e463e-92d3-4ed9-8fe2-beff572dcd43","/medarbejderstories/*",{"_uid":124,"value":125,"component":60},"0632bede-a443-445d-9d79-367922fd1487","/medarbejderhistorier/*",{"_uid":127,"body":128,"component":64},"28dac8de-7285-4983-8419-e2fb013e492d",[129,132],{"_uid":130,"value":131,"component":60},"c367c8f3-1475-4222-b727-395382a3c7d7","/reference/aubo-production\n",{"_uid":133,"value":134,"component":60},"c29ce268-7cd5-4f59-aaee-2b49b224bb7e","/reference/aubo",{"_uid":136,"body":137,"component":64},"761b6c9c-7094-4233-b2c3-cfbaaa1d6fb6",[138,141],{"_uid":139,"value":140,"component":60},"ce1b7aa4-578f-4727-99cb-89103109dcfc","/kompetencer/webudvikling/storyblok-udvikling-uptime-development-a-s",{"_uid":142,"value":143,"component":60},"dcfb210b-241e-4759-8f6e-6badcdc5fede","/kompetencer/webudvikling/storyblok-udvikling/",{"_uid":145,"body":146,"component":64},"e3790927-d7f4-4580-bfe7-1f3e860e6f09",[147,150],{"_uid":148,"value":149,"component":60},"087c8f63-ca41-40f0-8eab-3c24a7c32be1","/kompetencer/webudvikling/statamic-udvikling-uptime-development-a-s",{"_uid":151,"value":152,"component":60},"a6e04551-4242-4b3c-8351-2d33cf7b5478","/kompetencer/webudvikling/statamic-udvikling/",{"_uid":154,"body":155,"component":64},"6036c6fb-da83-4ee7-9036-d4b7b8217445",[156,159],{"_uid":157,"value":158,"component":60},"89cfd0a4-712b-466b-a2ea-4b634b19f38d","/kompetencer/webudvikling/angular-uptime-development-a-s",{"_uid":160,"value":161,"component":60},"d440684d-1348-409b-9932-62b5ecb50bab","/kompetencer/webudvikling/angular-udvikling/",[163,167],{"_uid":164,"value":165,"component":166},"b11d708a-a114-493c-aa81-3d2924f7da6c","From","_table_head",{"_uid":168,"value":169,"component":166},"1b97c57f-81ff-4d37-997d-52ba62d31346","To","table",{"id":172,"alt":25,"name":25,"focus":25,"title":25,"filename":173,"copyright":25,"fieldtype":27,"is_external_url":29},7117671,"https://a.storyblok.com/f/195037/x/33240b4ce2/uptime-logo-white.svg",{"id":175,"alt":25,"name":25,"focus":25,"title":25,"filename":176,"copyright":25,"fieldtype":27,"is_external_url":29},7117602,"https://a.storyblok.com/f/195037/x/914b4393c3/uptime-logo.svg",[178,186,192,198,204,210,216,222],{"Page":179,"_uid":182,"Title":183,"component":184,"SubNavigationItems":185},{"id":180,"url":25,"linktype":39,"fieldtype":40,"cached_url":181},"4603843a-bc48-4f87-a65b-dca5a7f0ddca","saadan-arbejder-vi","db7b83c9-a943-46d1-b9b7-8cee9eac6a5a","Sådan arbejder vi","BlockNavigationItem",[],{"Page":187,"_uid":190,"Title":191,"component":184},{"id":188,"url":25,"linktype":39,"fieldtype":40,"cached_url":189},"e63056b2-cadd-427b-9088-6b960adcdf71","kompetencer","7fc4feed-51be-4472-9f20-e93bdc9b1df4","Ydelser",{"Page":193,"_uid":196,"Title":197,"component":184},{"id":194,"url":25,"linktype":39,"fieldtype":40,"cached_url":195},"269ceb67-9543-4318-b65a-4bba788d8a12","referencer","57d60acc-cdb3-4755-98b5-532d3df98cd3","Cases",{"Page":199,"_uid":202,"Title":203,"component":184},{"id":200,"url":25,"linktype":39,"fieldtype":40,"cached_url":201},"7f3f0d5b-f9df-4a44-a3c0-44db30130deb","karriere","e8c0946f-837c-4889-a37d-7e0b1451eab9","Karriere",{"Page":205,"_uid":208,"Title":209,"component":184},{"id":206,"url":25,"linktype":39,"fieldtype":40,"cached_url":207},"e5c914f8-1576-467b-85b9-a9c7ad2b2179","om-os","730ba654-4727-46a6-8001-e48cdb7d6a27","Om os",{"Page":211,"_uid":214,"Title":215,"component":184},{"id":212,"url":25,"linktype":39,"fieldtype":40,"cached_url":213},"0089734a-6d00-4a89-ad6a-adb7f249bf26","brancher/","db7ddf68-d5f3-4f01-b831-38fc8b0f7c86","Brancher",{"Page":217,"_uid":220,"Title":221,"component":184},{"id":218,"url":25,"linktype":39,"fieldtype":40,"cached_url":219},"6293995f-67ea-4935-b00d-d6b10596af3d","blog/","f198c788-9583-4395-9cec-35a920bc2b20","Artikler",{"Page":223,"_uid":224,"Title":225,"component":184},{"id":37,"url":25,"linktype":39,"fieldtype":40,"cached_url":41},"6d562fa7-9764-4c1d-8999-0af9d3d7917b","Kontakt os",[227],{"Page":228,"_uid":229,"Title":230,"hidden":231,"component":184,"SubNavigationItems":232},{"id":37,"url":25,"anchor":38,"linktype":39,"fieldtype":40,"cached_url":41},"977f0c7f-5abd-40a2-b9da-a6d72127eee2","Book teknisk sparring",true,[],[234,246],{"_uid":235,"link":236,"Asset":239,"maxWidth":244,"component":245,"imageSize":25,"maxHeight":244},"b3cdc7fd-ca29-49f1-8acc-1685d05d79ca",{"id":25,"url":237,"linktype":238,"fieldtype":40,"cached_url":237},"https://www.facebook.com/uptimedevelopmentdk","url",{"id":240,"alt":241,"name":25,"focus":25,"title":25,"source":25,"filename":242,"copyright":25,"fieldtype":27,"meta_data":243,"is_external_url":29},11203649,"Facebook SoMe ikon","https://a.storyblok.com/f/195037/768x768/9354be154c/facebook-logo.png",[],"32","BlockImage",{"_uid":247,"link":248,"Asset":250,"maxWidth":244,"component":245,"imageSize":25,"maxHeight":244},"61696a88-1dac-473b-9440-acc6e0212805",{"id":25,"url":249,"linktype":238,"fieldtype":40,"cached_url":249},"https://www.linkedin.com/company/uptime-development/",{"id":251,"alt":252,"name":25,"focus":25,"title":25,"source":25,"filename":253,"copyright":25,"fieldtype":27,"meta_data":254,"is_external_url":29},11203650,"LinkedIn SoMe ikon","https://a.storyblok.com/f/195037/640x640/e8f936cc4f/linkedin-logo.png",[],{"tbody":256,"thead":317,"fieldtype":170},[257,269,281,293,305],{"_uid":258,"body":259,"component":64},"85922153-cdda-4388-8701-12db416076db",[260,263,266],{"_uid":261,"value":262,"component":60},"558d6047-1c7a-4de1-8821-566fb69a5be5","Danmark",{"_uid":264,"value":265,"component":60},"2430cfc3-688d-4620-85e0-26e92d311221","dk",{"_uid":267,"value":268,"component":60},"baccd3ac-f5cc-4b08-8882-1c1b0293e5ef","/",{"_uid":270,"body":271,"component":64},"76842066-ff5f-4ab3-b31c-f8bbedbdbcec",[272,275,278],{"_uid":273,"value":274,"component":60},"de00b93e-a532-4fce-924e-216e9f9375a9","Estland",{"_uid":276,"value":277,"component":60},"71d47cad-2ff0-443a-b055-f610d6ba13a7","ee",{"_uid":279,"value":280,"component":60},"1fa86fbd-6d93-44fe-90bf-08407bbaa6bb","https://uptime.ee/",{"_uid":282,"body":283,"component":64},"159ec48f-a015-4a88-963b-6014e151b1f8",[284,287,290],{"_uid":285,"value":286,"component":60},"364f3eed-53ed-434a-ae4a-848e8fc1e160","Norge",{"_uid":288,"value":289,"component":60},"f596476e-b013-4573-81a7-92acfae94a78","no",{"_uid":291,"value":292,"component":60},"ff7c0ae4-ccfa-4189-9caf-3a6873edb06a","https://uptimeconsulting.no/",{"_uid":294,"body":295,"component":64},"14bb9056-2451-4699-aed4-c95d8e5c1bda",[296,299,302],{"_uid":297,"value":298,"component":60},"3fedefa7-2620-42ce-afc2-fd9804a66037","Polen",{"_uid":300,"value":301,"component":60},"1572da6c-45ef-43cb-b24d-7eecd428041d","pl",{"_uid":303,"value":304,"component":60},"ff58fec4-f6f5-443a-9540-c069a085163e","https://www.uptime.eu/contact/",{"_uid":306,"body":307,"component":64},"1b772d37-47ab-448c-b84f-ab711921f593",[308,311,314],{"_uid":309,"value":310,"component":60},"38cf0e30-3cb4-4d84-9407-9ab206dad496","Schweiz",{"_uid":312,"value":313,"component":60},"989f321a-6c87-4739-91c4-e4068cce4ca7","ch",{"_uid":315,"value":316,"component":60},"2757315c-f21c-48a6-850b-3ae096ade15b","https://uptime.swiss/",[318,321,324],{"_uid":319,"value":320,"component":166},"aa4c1941-ee16-4dbe-8574-39185cca54f7","Navn",{"_uid":322,"value":323,"component":166},"f62c0bf1-738b-4f15-9961-317c58196f24","Landekode",{"_uid":325,"value":326,"component":166},"55b0e09b-428c-4b7f-a4cb-439d6564a8a7","URL",[328,335,342,349,356],{"Page":329,"_uid":332,"Title":333,"component":184,"SubNavigationItems":334},{"id":330,"url":25,"linktype":39,"fieldtype":40,"cached_url":331},"b49e0691-5fbe-4486-86bd-6ef6d3028374","kompetencer/app-udvikling/","36981831-3ff2-4a2a-a8bb-81046de11517","App udvikling",[],{"Page":336,"_uid":339,"Title":340,"component":184,"SubNavigationItems":341},{"id":337,"url":25,"linktype":39,"fieldtype":40,"cached_url":338},"1099935e-614b-4892-b08b-f83a01c3de2e","kompetencer/softwareintegration","9049940a-7bf4-493f-9ff0-25cad876d914","Software integration",[],{"Page":343,"_uid":346,"Title":347,"component":184,"SubNavigationItems":348},{"id":344,"url":25,"linktype":39,"fieldtype":40,"cached_url":345},"84882505-8312-4d6a-9a49-f3d175e9c1dc","kompetencer/webudvikling/","dfd91dca-8d29-4be0-b3ad-7c06fde2ccd2","Webudvikling",[],{"Page":350,"_uid":353,"Title":354,"component":184,"SubNavigationItems":355},{"id":351,"url":25,"linktype":39,"fieldtype":40,"cached_url":352},"1d81ee31-5b13-44b8-99a4-42380b5d8f2f","kompetencer/programmering/","c4769577-4c02-4650-9f21-40949765ee88","Programmering",[],{"Page":357,"_uid":360,"Title":361,"component":184,"SubNavigationItems":362},{"id":358,"url":25,"linktype":39,"fieldtype":40,"cached_url":359},"67360096-cd53-4d07-926f-bf4ff64d751e","kompetencer/it-udvikling","e1be4934-0370-43a2-86d9-fa0c92e73ade","IT udvikling",[],"Kompetencer",[365,370,374,378,383,387],{"Page":366,"_uid":368,"Title":274,"component":184,"SubNavigationItems":369},{"id":25,"url":367,"linktype":238,"fieldtype":40,"cached_url":367},"https://www.uptime.ee/","fbc0cbbe-6b90-4783-9e84-5de43cb588a8",[],{"Page":371,"_uid":372,"Title":286,"component":184,"SubNavigationItems":373},{"id":25,"url":292,"linktype":238,"fieldtype":40,"cached_url":292},"736cc7d8-f6f4-4e7a-9083-ca6c6d5e7f73",[],{"Page":375,"_uid":376,"Title":298,"component":184,"SubNavigationItems":377},{"id":25,"url":304,"linktype":238,"fieldtype":40,"cached_url":304},"ca6a8287-4dfa-497e-8277-03421745a9e4",[],{"Page":379,"_uid":381,"Title":262,"component":184,"SubNavigationItems":382},{"id":25,"url":380,"linktype":238,"fieldtype":40,"cached_url":380},"https://www.uptimedevelopment.dk/","f3027c1d-72ff-4bd5-af05-8321b421d21c",[],{"Page":384,"_uid":385,"Title":310,"component":184,"SubNavigationItems":386},{"id":25,"url":316,"linktype":238,"fieldtype":40,"cached_url":316},"b39aaa49-a7fd-46df-8196-dc48f3e678d8",[],{"Page":388,"_uid":390,"Title":391,"component":184,"SubNavigationItems":392},{"id":25,"url":389,"linktype":238,"fieldtype":40,"cached_url":389},"https://uptime.ee","c4551692-9846-4f9e-a7da-acb980b8e09b","Spanien",[],"Kontorer",[395,399,403,407,414,421],{"Page":396,"_uid":397,"Title":209,"component":184,"SubNavigationItems":398},{"id":206,"url":25,"linktype":39,"fieldtype":40,"cached_url":207},"8081492e-32ad-4542-8618-32af1e2c60f2",[],{"Page":400,"_uid":401,"Title":203,"component":184,"SubNavigationItems":402},{"id":200,"url":25,"linktype":39,"fieldtype":40,"cached_url":201},"88b8096f-5f6a-4110-a4eb-7d7040e728dc",[],{"Page":404,"_uid":405,"Title":34,"component":184,"SubNavigationItems":406},{"id":37,"url":25,"linktype":39,"fieldtype":40,"cached_url":41},"4a05dc72-f8ea-45ac-90e9-ad655af09a47",[],{"Page":408,"_uid":411,"Title":412,"component":184,"SubNavigationItems":413},{"id":25,"url":409,"target":410,"linktype":27,"fieldtype":40,"cached_url":409},"https://a.storyblok.com/f/195037/x/82776e3a7a/uptime-leveringsbetingelser-2023.pdf","_blank","1fe2dd54-6178-4af7-a1e8-412de06356af","Leveringsbetingelser",[],{"Page":415,"_uid":418,"Title":419,"component":184,"SubNavigationItems":420},{"id":416,"url":25,"linktype":39,"fieldtype":40,"cached_url":417},"610b4b5f-d838-489b-866e-2d197a997335","cookie-policy","329dbf5c-076b-407e-a7f4-623405f9507e","Privatlivs- & Cookiepolitik",[],{"Page":422,"_uid":425,"Title":426,"component":184,"SubNavigationItems":427},{"id":423,"url":25,"linktype":39,"fieldtype":40,"cached_url":424},"ca01e7ae-d95f-4d27-b6d1-181c32833d46","ski-leverandor","022b37e6-f46c-4191-9606-7d27a76ea669","SKI Leverandør",[],"Information ",null,110,[],"5b70cd24-4539-4bea-bba4-84fad44f9486","2023-02-07T08:01:17.912Z","default",[],1788335206,[],[],{"_uid":440,"body":441,"noindex":29,"component":461,"breadcrumbs":462,"shortDescription":463},"2916f384-ce9f-4475-a874-924ee83147a1",[442,446,449,452,455,458],{"_uid":443,"EmbedCode":444,"component":445},"lj0","\u003Csection class=\"up-page-header\">\u003Cdiv class=\"up-container\">\u003Cdiv class=\"up-breadcrumb\">\u003Ca href=\"/kompetencer/\">Ydelser\u003C/a>\u003Cspan>›\u003C/span>\u003Cspan>Guide\u003C/span>\u003C/div>\u003Cspan class=\"up-eyebrow\">\u003Cspan class=\"up-dot\">\u003C/span> Modernisering\u003C/span>\u003Ch1>Legacy JavaScript\u003Cbr>\u003Cem>skal sjældent skrives helt om\u003C/em>\u003C/h1>\u003Cp class=\"up-lead\">jQuery, AngularJS og gammel JavaScript-kode kan være dyr at ændre. Men en total rewrite flytter ofte risikoen i stedet for at fjerne den. Her er en mere kontrolleret vej til en moderne frontend.\u003C/p>\u003Cnav class=\"up-subnav\">\u003Ca href=\"/kompetencer/programmering/javascript/\" class=\"up-subbtn\">JavaScript\u003C/a>\u003Ca href=\"/kompetencer/programmering/typescript/\" class=\"up-subbtn\">TypeScript\u003C/a>\u003Ca href=\"/kompetencer/webudvikling/frontend-udvikling/\" class=\"up-subbtn\">Frontend\u003C/a>\u003C/nav>\u003C/div>\u003C/section>","BlockEmbedCode",{"_uid":447,"EmbedCode":448,"component":445},"lj1","\u003Csection class=\"up-section\">\u003Cdiv class=\"up-container\">\u003Cdiv class=\"up-prose up-reveal\" style=\"max-width:860px\">\u003Cspan class=\"up-tag\">Start med problemet\u003C/span>\u003Ch2>Gammel kode er ikke i sig selv teknisk gæld\u003C/h2>\u003Cp>Hvis en gammel JavaScript-del er stabil, sikker og næsten aldrig ændres, kan det være billigere at lade den være. Problemet opstår, når kodebasen gør ændringer langsomme, skaber fejl, låser jer til udgåede dependencies eller gør det svært at arbejde sikkert i den.\u003C/p>\u003Cp>Derfor starter en modernisering med at identificere de områder, hvor den gamle teknologi faktisk koster noget. Ikke med et krav om at alt skal ende i det nyeste framework.\u003C/p>\u003C/div>\u003C/div>\u003C/section>",{"_uid":450,"EmbedCode":451,"component":445},"lj2","\u003Csection class=\"up-section up-alt\">\u003Cdiv class=\"up-container\">\u003Cdiv class=\"up-section-header up-reveal\">\u003Cspan class=\"up-tag\">En praktisk rækkefølge\u003C/span>\u003Ch2>Modernisér omkring klare grænser\u003C/h2>\u003C/div>\u003Cdiv class=\"up-cards up-reveal\">\u003Cdiv class=\"up-card\">\u003Ch3>1. Kortlæg\u003C/h3>\u003Cp>Find kritiske flows, dependencies, globale sideeffekter, browserkrav og de dele der ændres ofte.\u003C/p>\u003C/div>\u003Cdiv class=\"up-card\">\u003Ch3>2. Skab testbarhed\u003C/h3>\u003Cp>Læg tests omkring de vigtigste forretningsflows, før adfærden ændres.\u003C/p>\u003C/div>\u003Cdiv class=\"up-card\">\u003Ch3>3. Adskil data og UI\u003C/h3>\u003Cp>Flyt API-kald og forretningslogik ud af DOM-kode, så frontend kan udskiftes i mindre bidder.\u003C/p>\u003C/div>\u003Cdiv class=\"up-card\">\u003Ch3>4. Indfør TypeScript selektivt\u003C/h3>\u003Cp>Start ved nye moduler og tydelige grænser. En big-bang konvertering er sjældent nødvendig.\u003C/p>\u003C/div>\u003Cdiv class=\"up-card\">\u003Ch3>5. Erstat feature for feature\u003C/h3>\u003Cp>Nye komponenter kan leve ved siden af gammel kode under en overgang.\u003C/p>\u003C/div>\u003Cdiv class=\"up-card\">\u003Ch3>6. Fjern det gamle\u003C/h3>\u003Cp>Dependencies og legacy-kode slettes først, når trafikken reelt er flyttet og den nye del er bevist.\u003C/p>\u003C/div>\u003C/div>\u003C/div>\u003C/section>",{"_uid":453,"EmbedCode":454,"component":445},"lj3","\u003Csection class=\"up-section\">\u003Cdiv class=\"up-container\">\u003Cdiv class=\"up-section-header up-reveal\">\u003Cspan class=\"up-tag\">jQuery & AngularJS\u003C/span>\u003Ch2>To forskellige moderniseringsproblemer\u003C/h2>\u003C/div>\u003Cdiv class=\"up-why up-reveal\">\u003Cdiv class=\"up-wcard\">\u003Ch3>jQuery\u003C/h3>\u003Cp>jQuery er ikke nødvendigvis et problem i en lille stabil funktion. I større applikationer opstår udfordringen ofte, når DOM-manipulation, state og forretningslogik er filtret sammen. Her kan nye komponenter gradvist overtage afgrænsede områder.\u003C/p>\u003C/div>\u003Cdiv class=\"up-wcard\">\u003Ch3>AngularJS\u003C/h3>\u003Cp>AngularJS 1.x har været ude af officiel support siden 2021. Her bør risikoen vurderes mere aktivt. En strangler-tilgang, hvor routes eller funktioner flyttes gradvist, kan være mindre risikabel end en parallel total rewrite.\u003C/p>\u003C/div>\u003Cdiv class=\"up-wcard\">\u003Ch3>Framework-skift\u003C/h3>\u003Cp>Modernisering behøver ikke betyde React. Vue, Angular eller en enklere web-stack kan være bedre afhængigt af team, produkt og eksisterende arkitektur.\u003C/p>\u003C/div>\u003C/div>\u003C/div>\u003C/section>",{"_uid":456,"EmbedCode":457,"component":445},"lj4","\u003Csection class=\"up-section up-alt\">\u003Cdiv class=\"up-container\">\u003Cdiv class=\"up-prose up-reveal\" style=\"max-width:860px\">\u003Cspan class=\"up-tag\">Hvornår rewrite?\u003C/span>\u003Ch2>Nogle gange er en ny kodebase stadig den rigtige beslutning\u003C/h2>\u003Cp>En rewrite kan give mening, hvis produktet samtidig ændrer sig grundlæggende, den eksisterende arkitektur ikke kan understøtte de nye krav, eller hvis en gradvis migration kræver dyr dobbeltvedligeholdelse i mange år.\u003C/p>\u003Cp>Men beregn hele risikoen: skjulte forretningsregler skal genopdages, gamle edge cases skal genimplementeres, og ny software får også fejl. Bevar derfor den gamle løsning som reference, migrér data og brugere kontrolleret, og planlæg en reel rollback.\u003C/p>\u003Ch3>Et godt første mål\u003C/h3>\u003Cp>Vælg én funktion, som ændres ofte og har tydelige grænser. Modernisér den ende til ende og mål, om deploy-frekvens, fejlrate eller udviklingstid faktisk bliver bedre.\u003C/p>\u003C/div>\u003C/div>\u003C/section>",{"_uid":459,"EmbedCode":460,"component":445},"lj5","\u003Csection class=\"up-section\">\u003Cdiv class=\"up-container\">\u003Cdiv class=\"up-cta-banner up-reveal\">\u003Cdiv>\u003Ch3>Sidder I fast i en gammel frontend?\u003C/h3>\u003Cp>Vi kan gennemgå kodebasen og lave en migrationsplan, der prioriterer risiko og forretningsværdi frem for en total omskrivning for omskrivningens skyld.\u003C/p>\u003C/div>\u003Ca href=\"/kontakt/\" class=\"up-btn up-btn-primary\">Book teknisk sparring\u003C/a>\u003C/div>\u003C/div>\u003C/section>","page",[],"En praktisk guide til at modernisere jQuery, AngularJS og ældre JavaScript gradvist. Fokus på risiko, test, grænser i systemet og hvornår en total rewrite faktisk giver mening.",{"name":465,"created_at":466,"published_at":467,"updated_at":468,"id":469,"uuid":470,"content":471,"slug":480,"full_slug":481,"sort_by_date":429,"position":482,"tag_list":483,"is_startpage":29,"parent_id":484,"meta_data":429,"group_id":485,"first_published_at":467,"release_id":429,"lang":434,"path":429,"alternates":486,"default_full_slug":429,"translated_slugs":429},"Modernisering af legacy JavaScript uden total rewrite","2026-09-01T14:23:45.553Z","2026-09-02T07:46:44.210Z","2026-09-02T07:46:44.231Z",215380072706121,"722a243b-997e-405b-9e03-d33623360b07",{"_uid":440,"body":472,"noindex":29,"component":461,"breadcrumbs":479,"shortDescription":463},[473,474,475,476,477,478],{"_uid":443,"EmbedCode":444,"component":445},{"_uid":447,"EmbedCode":448,"component":445},{"_uid":450,"EmbedCode":451,"component":445},{"_uid":453,"EmbedCode":454,"component":445},{"_uid":456,"EmbedCode":457,"component":445},{"_uid":459,"EmbedCode":460,"component":445},[],"modernisering-af-legacy-javascript","blog/modernisering-af-legacy-javascript",-400,[],348441801,"5c6ccc9c-44a9-4d04-b4d6-f97cad674d99",[],1788335238528]