{"id":571,"date":"2026-10-07T00:05:17","date_gmt":"2026-10-07T00:05:17","guid":{"rendered":"https:\/\/gilnas.synology.me\/wordpress\/571\/"},"modified":"2026-10-07T00:05:17","modified_gmt":"2026-10-07T00:05:17","slug":"nuxt-4-6%ec%9d%98-%ec%84%9c%eb%b2%84-%ec%b6%94%ec%83%81%ed%99%94%ec%99%80-h3-v2-%ec%a0%84%ed%99%98-%ec%b2%b4%ed%81%ac%ed%8f%ac%ec%9d%b8%ed%8a%b8-server-abstraction-and-h3-v2-migration-with-nuxt-4-6","status":"publish","type":"post","link":"https:\/\/gilnas.synology.me\/wordpress\/571\/","title":{"rendered":"Nuxt 4.6\uc758 \uc11c\ubc84 \ucd94\uc0c1\ud654\uc640 H3 v2 \uc804\ud658 \uccb4\ud06c\ud3ec\uc778\ud2b8 | Server Abstraction and H3 v2 Migration with Nuxt 4.6"},"content":{"rendered":"<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/gilnas.synology.me\/wordpress\/wp-content\/uploads\/2026\/10\/nuxt-trend-hero-6.png\" alt=\"Nuxt 4.6\uc758 \uc11c\ubc84 \ucd94\uc0c1\ud654\uc640 H3 v2 \uc804\ud658 \uccb4\ud06c\ud3ec\uc778\ud2b8 | Server Abstraction and H3 v2 Migration with Nuxt 4.6\" \/><\/figure>\n<p><strong>\uc694\uc57d:<\/strong> \ucd5c\uadfc 72\uc2dc\uac04\uc758 Nuxt \uc0dd\ud0dc\uacc4\uc5d0\uc11c \uac00\uc7a5 \ud070 \ubcc0\ud654\ub294 Nuxt 4.6\uc758 \uc815\uc2dd \ucd9c\uc2dc\uc640 H3 v2 \uc548\uc815\ud654\ub2e4. \uc774\ubc88 3\uc77c \ub9ac\ud3ec\ud2b8\ub294 <strong>Nuxt CLI v4, <code>nuxt\/server<\/code>, \ud0c0\uc785\ub4dc <code>$fetch<\/code>, \uc571 \uc2dc\ud06c\ub9bf\u00b7\uc138\uc158, H3 v2<\/strong>\ub97c \ud558\ub098\uc758 \uc6b4\uc601 \uc804\ud658\uc73c\ub85c \ubb36\uc5b4, Nuxt\/Vue \ud300\uc774 \ubb34\uc5c7\uc744 \uc9c0\uae08 \uac80\uc99d\ud558\uace0 \ubb34\uc5c7\uc744 \ub2e8\uacc4\uc801\uc73c\ub85c \ub3c4\uc785\ud560\uc9c0 \uc815\ub9ac\ud55c\ub2e4.<\/p>\n<h2>\ud575\uc2ec \ub2f5\ubcc0: \uc9c0\uae08 Nuxt \ud300\uc774 \ud574\uc57c \ud560 \uc77c<\/h2>\n<p><strong>\uacb0\ub860\ubd80\ud130 \ub9d0\ud558\uba74<\/strong>, Nuxt 4.6\uc740 \ub2e8\uc21c\ud55c \uae30\ub2a5 \ubb36\uc74c\uc774 \uc544\ub2c8\ub77c Nuxt 5\u00b7Nitro v3\u00b7H3 v2\ub85c \ud5a5\ud558\ub294 \uc11c\ubc84 \uacbd\uacc4 \uc7ac\uc124\uacc4\ub2e4. \uc989\uc2dc \uc804\uba74 \uc804\ud658\ubcf4\ub2e4, \uba3c\uc800 CI\uc5d0\uc11c Nuxt 4.6 \uc5c5\uadf8\ub808\uc774\ub4dc\uc640 Node \ub7f0\ud0c0\uc784 \uc870\uac74\uc744 \ud655\uc778\ud558\uace0, \uc0c8 \uc11c\ubc84 \ucf54\ub4dc\ub294 <code>nuxt\/server<\/code>\ub85c \uc791\uc131\ud558\uba70, \ud0c0\uc785\ub4dc <code>$fetch<\/code>\uc640 \uc138\uc158\uc740 \uaca9\ub9ac\ub41c canary\uc5d0\uc11c \uac80\uc99d\ud558\ub294 \uc21c\uc11c\uac00 \uc548\uc804\ud558\ub2e4. H3 v2\ub294 10\uc6d4 4\uc77c KST\uc5d0 \uc548\uc815 \ubc84\uc804\uc774 \ub418\uc5c8\uc9c0\ub9cc \ub77c\uc6b0\ud305\u00b7\uc751\ub2f5\u00b7\ud5e4\ub354 \uacc4\uc57d\uc774 \ub2ec\ub77c\uc84c\uc73c\ubbc0\ub85c \uc9c1\uc811 H3 API\ub97c \uc4f0\ub294 \ud504\ub85c\uc81d\ud2b8\ub294 \ubcc4\ub3c4\uc758 \ub9c8\uc774\uadf8\ub808\uc774\uc158 \ud14c\uc2a4\ud2b8\uac00 \ud544\uc694\ud558\ub2e4.<\/p>\n<ul>\n<li><strong>\ud655\uc778\ub41c \uc0ac\uc2e4:<\/strong> Nuxt 4.6\uc740 10\uc6d4 6\uc77c KST \uc815\uc2dd \ucd9c\uc2dc\ub410\uc73c\uba70 CLI v4\uc640 <code>nuxt\/server<\/code>\ub97c \ud3ec\ud568\ud55c\ub2e4.<\/li>\n<li><strong>\ud655\uc778\ub41c \uc0ac\uc2e4:<\/strong> H3 v2.0.1\uc740 10\uc6d4 4\uc77c KST \uc815\uc2dd \ucd9c\uc2dc\ub410\uace0 Node.js 20.19 \uc774\uc0c1\uc744 \uc694\uad6c\ud55c\ub2e4.<\/li>\n<li><strong>\uc2e4\ubb34 \ud310\ub2e8:<\/strong> Nuxt \uc571\uc758 \uc77c\ubc18 \uc6b4\uc601 \ub7f0\ud0c0\uc784\uc740 \uae30\ubcf8 Nitro\ub97c \uc720\uc9c0\ud558\uace0, \uc0c8 API \uacbd\uacc4\uc640 \ud14c\uc2a4\ud2b8\ubd80\ud130 \uc774\uc2dd\ud558\ub294 \uac83\uc774 \uc704\ud5d8\uc744 \uc81c\ud55c\ud55c\ub2e4.<\/li>\n<\/ul>\n<h2>3\uc77c \ub3d9\uc548 \ud655\uc778\ub41c \ud575\uc2ec \uc774\uc288 5\uac00\uc9c0<\/h2>\n<h3>1. Nuxt 4.6\uacfc Nuxt CLI v4: \uac1c\ubc1c \uc11c\ubc84 \uad00\uce21\uc131\uacfc \ub3d9\uc2dc \uc791\uc5c5 \uc81c\uc5b4<\/h3>\n<p><a href=\"https:\/\/github.com\/nuxt\/nuxt\/releases\/tag\/v4.6.0\" target=\"_blank\" rel=\"noopener\">Nuxt 4.6 \ub9b4\ub9ac\uc2a4 \ub178\ud2b8<\/a>\uc5d0 \ub530\ub974\uba74, \uc758\uc874\uc131\uc73c\ub85c \ud568\uaed8 \ubc30\ud3ec\ub418\ub294 <code>@nuxt\/cli<\/code> v4\ub294 \uc778\ud130\ub799\ud2f0\ube0c \ud130\ubbf8\ub110 UI, \uc2dc\uc791\u00b7\uc7ac\uc2dc\uc791 \uc6d0\uc778\uacfc \ubaa8\ub4c8 \uc124\uc815 \uc2dc\uac04\uc758 \uac00\uc2dc\ud654, \uadf8\ub9ac\uace0 <code>.nuxt\/<\/code> lock \ud30c\uc77c\uc744 \uc81c\uacf5\ud55c\ub2e4. \ub450 \ubc88\uc9f8 <code>nuxt dev<\/code>\uac00 \uc774\ubbf8 \uc2e4\ud589 \uc911\uc778 \uc11c\ubc84\ub97c \uc778\uacc4\ud558\uac70\ub098 \uae30\ub2e4\ub9b4 \uc218 \uc788\uac8c \ud574 \ub85c\uceec \uac1c\ubc1c\uacfc \uc5d0\uc774\uc804\ud2b8\u00b7\uc790\ub3d9\ud654 \uc791\uc5c5\uc774 \uac19\uc740 \ud504\ub85c\uc81d\ud2b8\ub97c \ub9cc\uc9c8 \ub54c\uc758 \ucda9\ub3cc\uc744 \uc904\uc774\ub294 \ubc29\ud5a5\uc774\ub2e4.<\/p>\n<p><strong>\uc2dc\uc0ac\uc810:<\/strong> \ud300\uc758 \uac1c\ubc1c \uacbd\ud5d8 \uac1c\uc120\uc740 \ub2e8\uc21c\ud788 \ubd80\ud305 \uc2dc\uac04\ub9cc\uc758 \ubb38\uc81c\uac00 \uc544\ub2c8\ub2e4. \uc7ac\uc2dc\uc791 \uc774\uc720\u00b7\ub290\ub9b0 \ubaa8\ub4c8\u00b7\uc2e4\ud589 \uc911 \uc11c\ubc84\uc758 \uc18c\uc720\uad8c\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c, \ubc18\ubcf5\ub418\ub294 \u201c\uc65c dev \uc11c\ubc84\uac00 \ub2e4\uc2dc \ub5b4\ub098\u201d \ubb38\uc81c\ub97c \ub85c\uadf8\uac00 \uc544\ub2cc CLI \ub808\ubca8\uc5d0\uc11c \ucd94\uc801\ud560 \uc218 \uc788\ub2e4. \ub2e8, \uc790\ub3d9\ud654\uac00 \uc784\uc758\ub85c \uae30\uc874 \uac1c\ubc1c \uc11c\ubc84\ub97c \uc885\ub8cc\ud558\uac70\ub098 \uc778\uacc4\ud558\uc9c0 \uc54a\ub3c4\ub85d \ud300 \uaddc\uce59\uc744 \uba3c\uc800 \ub46c\uc57c \ud55c\ub2e4.<\/p>\n<h3>2. <code>nuxt\/server<\/code>: Nitro\/H3 \uc758\uc874\uc744 \uc571\uc758 \uacf5\uac1c \uc11c\ubc84 \uacbd\uacc4\uc5d0\uc11c \ubd84\ub9ac<\/h3>\n<p>Nuxt 4.6\uc758 \uc911\uc2ec \ubcc0\ud654\ub294 <code>nuxt\/server<\/code> import surface\ub2e4. \ub9b4\ub9ac\uc2a4 \ub178\ud2b8\ub294 \uc11c\ubc84 \ud578\ub4e4\ub7ec\u00b7\ubbf8\ub4e4\uc6e8\uc5b4\u00b7\uc720\ud2f8\ub9ac\ud2f0\ub97c \uc774 \uacbd\uacc4\uc5d0\uc11c \uc81c\uacf5\ud558\uba70, \uae30\ubcf8 \uad6c\ud604\uc740 \uc5ec\uc804\ud788 Nitro\/H3\uc774\uc9c0\ub9cc \ucf54\ub4dc\uac00 \ud2b9\uc815 <code>h3<\/code>\u00b7<code>nitropack<\/code> \uba54\uc774\uc800 \ubc84\uc804\uc5d0 \uc9c1\uc811 \ubb36\uc774\uc9c0 \uc54a\uac8c \ud55c\ub2e4\uace0 \uc124\uba85\ud55c\ub2e4. \uc774\ub294 Nuxt 5\uc5d0\uc11c Nitro v3\u00b7H3 v2\ub85c \uac08 \ub54c \uc11c\ubc84 \ucf54\ub4dc\ub97c \ub354 \uc27d\uac8c \uc720\uc9c0\ud558\uae30 \uc704\ud55c \ud638\ud658\uc131 \uce35\uc774\ub2e4.<\/p>\n<p><strong>\uc2dc\uc0ac\uc810:<\/strong> \uc0c8 <code>server\/api<\/code> \ucf54\ub4dc\uc640 \uc0ac\ub0b4 \ubaa8\ub4c8\uc740 <code>h3<\/code> \uc9c1\uc811 import\ubcf4\ub2e4 <code>nuxt\/server<\/code>\uc744 \uc6b0\uc120 \uac80\ud1a0\ud560 \uadfc\uac70\uac00 \uc0dd\uacbc\ub2e4. \ub2e4\ub9cc Nuxt 4\uc758 auto-import\ub41c <code>defineEventHandler<\/code> \ub4f1\uc740 \uc5ec\uc804\ud788 H3 \ud615\ud0dc\uc774\ubbc0\ub85c, \uc0c8 \uacbd\uacc4\ub97c \uc4f8 \ud30c\uc77c\uc5d0\uc11c\ub294 <code>nuxt\/server<\/code>\uc5d0\uc11c \uba85\uc2dc\uc801\uc73c\ub85c import\ud574\uc57c \ud55c\ub2e4. \uc591\ucabd API\ub97c \uc11e\uc73c\uba74 Nuxt\uac00 <code>NUXT_E8012<\/code> \uc624\ub958\ub85c \uc548\ub0b4\ud55c\ub2e4.<\/p>\n<h3>3. \ud0c0\uc785\ub4dc <code>$fetch<\/code>: \ub300\ud615 API \ub77c\uc6b0\ud2b8\uc5d0\uc11c TypeScript \ube44\uc6a9\uc744 \uc904\uc774\ub294 opt-in<\/h3>\n<p>Nuxt 4.6\uc740 <a href=\"https:\/\/github.com\/danielroe\/fetchdts\" target=\"_blank\" rel=\"noopener\">fetchdts<\/a> \uae30\ubc18\uc73c\ub85c \ud0c0\uc785\ub4dc <code>$fetch<\/code>\ub97c \ub2e4\uc2dc \ub9cc\ub4e4\uc5c8\ub2e4. \uacf5\uc2dd \ub9b4\ub9ac\uc2a4\uc758 \ubca4\uce58\ub9c8\ud06c\uc5d0\uc11c\ub294 \uae30\uc874 \ubc29\uc2dd\uc774 \ub77c\uc6b0\ud2b8 \uc218\uc5d0 \ub530\ub77c TypeScript \uc778\uc2a4\ud134\uc2a4\ud654 \ube44\uc6a9\uc774 \uae09\uc99d\ud558\ub358 \ubb38\uc81c\ub97c \uc904\uc774\uace0, \uc815\uc801 \uacbd\ub85c\uc640 \uac80\uc99d\ub41c body\/query\/header \ud0c0\uc785\uc744 \ub354 \uc815\ubc00\ud558\uac8c \ucd94\ub860\ud55c\ub2e4. Nuxt 4\uc5d0\uc11c\ub294 <code>experimental.routeTypedFetch: true<\/code>\ub85c \ucf1c\ub294 \uc2e4\ud5d8 \uae30\ub2a5\uc774\uba70 Nuxt 5 \uae30\ubcf8\uac12\uc744 \ud5a5\ud55c \uc900\ube44 \ub2e8\uacc4\ub2e4.<\/p>\n<p><strong>\uc2dc\uc0ac\uc810:<\/strong> API \ub77c\uc6b0\ud2b8\uac00 \ub9ce\uc740 \uc11c\ube44\uc2a4\ub77c\uba74 \uccb4\uac10\uc740 \ud074 \uc218 \uc788\uc9c0\ub9cc, \uc2e4\ud5d8 \ud50c\ub798\uadf8\ub97c \ud504\ub85c\ub355\uc158 \uc804\uccb4\uc5d0 \uc989\uc2dc \ucf1c\ub294 \uadfc\uac70\ub294 \uc544\ub2c8\ub2e4. \uc190\uc73c\ub85c \ud655\uc7a5\ud55c <code>ServerRoutes<\/code> \ud0c0\uc785, \ubcf5\uc7a1\ud55c \ub3d9\uc801 \ub77c\uc6b0\ud2b8, CI\uc758 <code>vue-tsc<\/code> \uc2dc\uac04\uacfc \uba54\ubaa8\ub9ac\ub97c \ud3ec\ud568\ud55c \ubcc4\ub3c4 \ube0c\ub79c\uce58 \ube44\uad50\uac00 \uba3c\uc800\ub2e4. \uc131\ub2a5 \uc218\uce58\ub294 \uacf5\uc2dd \ubca4\uce58\ub9c8\ud06c \ud658\uacbd\uc758 \uacb0\uacfc\uc774\uba70 \ubaa8\ub4e0 \uc571\uc5d0 \ub3d9\uc77c\ud558\uac8c \uc7ac\ud604\ub41c\ub2e4\uace0 \ub2e8\uc815\ud560 \uc218 \uc5c6\ub2e4.<\/p>\n<h3>4. <code>runtimeConfig.appSecret<\/code>\uc640 \uc138\uc158: \ube44\ubc00\uac12 \ubd84\uc0b0 \ub300\uc2e0 \ubaa9\uc801\ubcc4 \ud30c\uc0dd<\/h3>\n<p>Nuxt 4.6\uc740 <code>NUXT_APP_SECRET<\/code>\uc73c\ub85c \uc124\uc815\ud558\ub294 \ub8e8\ud2b8 \uc571 \uc2dc\ud06c\ub9bf\uacfc <code>deriveSecret(purpose)<\/code>\ub97c \ucd94\uac00\ud588\ub2e4. \uacf5\uc2dd \uc608\uc2dc\ub294 \uc774 \uac12\uc73c\ub85c \ubaa9\uc801\ubcc4 \uc2dc\ud06c\ub9bf\uc744 \ud30c\uc0dd\ud558\uace0, <code>nuxt\/server<\/code>\uc758 \uc138\uc158 helper\uac00 cookie\ub97c sealing\ud574 \uc11c\ubc84 \uc800\uc7a5\uc18c \uc5c6\uc774 \uc138\uc158 \ub370\uc774\ud130\ub97c \ub2e4\ub8f0 \uc218 \uc788\uc74c\uc744 \ubcf4\uc5ec \uc900\ub2e4. \ube4c\ub4dc\uc5d0\uc11c\ub294 \uc2dc\ud06c\ub9bf\uc744 \uc790\ub3d9 \uc0dd\uc131\ud558\uc9c0 \uc54a\uc73c\uba70, \uac1c\ubc1c \uc911\uc5d0\ub294 \uc5c6\uc744 \uacbd\uc6b0 \uc0dd\uc131\u00b7\ubcf4\uc874\ud558\uace0 \uacbd\uace0\ud55c\ub2e4.<\/p>\n<p><strong>\uc2dc\uc0ac\uc810:<\/strong> \uc774\ub294 \u201c\ube44\ubc00\uc744 \ud558\ub098\ub9cc \ub46c\ub3c4 \ub41c\ub2e4\u201d\ub294 \uc6b4\uc601 \uba74\uc81c\uac00 \uc544\ub2c8\ub2e4. \ubc30\ud3ec \ud50c\ub7ab\ud3fc\uc5d0\uc11c <code>NUXT_APP_SECRET<\/code>\uc744 \ud658\uacbd\ubcc4\ub85c \uc548\uc804\ud558\uac8c \uc8fc\uc785\ud558\uace0, \uad50\uccb4 \uc2dc \ubaa8\ub4e0 \ubaa9\uc801\ubcc4 \ud30c\uc0dd \ud0a4\uc640 \uc138\uc158\uc5d0 \ubbf8\uce58\ub294 \uc601\ud5a5\uc744 \ub864\ubc31 \uacc4\ud68d\uc5d0 \ub123\uc5b4\uc57c \ud55c\ub2e4. \uc138\uc158 cookie\uc758 Secure\u00b7SameSite\u00b7\ub3c4\uba54\uc778\u00b7\ub9cc\ub8cc \uc815\ucc45\uacfc \ud504\ub85d\uc2dc TLS \uc885\ub8cc \uad6c\uc131\ub3c4 \ud568\uaed8 \uac80\uc99d\ud574\uc57c \ud55c\ub2e4.<\/p>\n<h3>5. H3 v2.0.1 \uc815\uc2dd\ud654: \uc6f9 \ud45c\uc900 API\uc640 \ub77c\uc6b0\ud305 \uacc4\uc57d\uc758 \uc2e4\uc81c \uc804\ud658<\/h3>\n<p><a href=\"https:\/\/github.com\/h3js\/h3\/releases\/tag\/v2.0.1\" target=\"_blank\" rel=\"noopener\">H3 v2.0.1 \ub9b4\ub9ac\uc2a4<\/a>\ub294 H3 v2\uc758 \uc548\uc815\ud654\ub97c \uc120\uc5b8\ud588\ub2e4. \ud45c\uc900 <code>Request<\/code>\u00b7<code>Response<\/code>\u00b7<code>URL<\/code>\u00b7<code>Headers<\/code> \uc911\uc2ec\uc73c\ub85c \uc7ac\uc791\uc131\ub410\uc73c\uba70, Node\u00b7Bun\u00b7Deno\u00b7Cloudflare Workers \ub4f1 \uc5ec\ub7ec \ub7f0\ud0c0\uc784\uc744 \uaca8\ub0e5\ud55c\ub2e4. \uadf8\ub7ec\ub098 <a href=\"https:\/\/h3.dev\/migration\" target=\"_blank\" rel=\"noopener\">\uacf5\uc2dd \ub9c8\uc774\uadf8\ub808\uc774\uc158 \uac00\uc774\ub4dc<\/a>\ub294 <code>app.use('\/path')<\/code>\uc758 \ud558\uc704 \uacbd\ub85c \ub9e4\uce6d, response \ubc18\ud658 \ubc29\uc2dd, \ud5e4\ub354 \uc811\uadfc, <code>x-forwarded-proto<\/code> \uc2e0\ub8b0 \uc815\ucc45 \ub4f1\uc774 \ub2ec\ub77c\uc9c4\ub2e4\uace0 \uba85\uc2dc\ud55c\ub2e4.<\/p>\n<p><strong>\uc2dc\uc0ac\uc810:<\/strong> Nuxt 4.6\uc758 <code>nuxt\/server<\/code>\uc740 \uc774 \uc804\ud658\uc744 \ud761\uc218\ud558\uae30 \uc704\ud55c \uc548\uc804\ud55c \uc0c8 \uacbd\uacc4\ub2e4. \ubc18\ub300\ub85c \uc9c1\uc811 H3 \uc571\u00b7Nitro \ud50c\ub7ec\uadf8\uc778\u00b7\ud504\ub85d\uc2dc \ucf54\ub4dc\ub97c \uc791\uc131\ud55c \ud300\uc740 H3 v2\ub97c \ub2e8\uc21c \uc7a0\uae08\ud30c\uc77c \uc5c5\ub370\uc774\ud2b8\ub85c \ucde8\uae09\ud558\uba74 \uc548 \ub41c\ub2e4. \ud2b9\ud788 \uc640\uc77c\ub4dc\uce74\ub4dc \ub77c\uc6b0\ud2b8, \uc778\uc99d \ubbf8\ub4e4\uc6e8\uc5b4, redirect, CORS, CDN \ub4a4\uc758 \uc6d0\ubcf8 URL \ud310\uc815\uc744 \ud68c\uadc0 \ud14c\uc2a4\ud2b8\ud574\uc57c \ud55c\ub2e4.<\/p>\n<h2>\ud504\ub860\ud2b8\uc5d4\ub4dc \uac1c\ubc1c\uc790 \uc2e4\ud589 \uccb4\ud06c\ub9ac\uc2a4\ud2b8<\/h2>\n<h3>\uc774\ubc88 \uc8fc: \uc5c5\uadf8\ub808\uc774\ub4dc \uc804 \uc99d\uac70 \uc218\uc9d1<\/h3>\n<ul>\n<li><strong>\ub7f0\ud0c0\uc784:<\/strong> CI\uc640 \ubc30\ud3ec \uc774\ubbf8\uc9c0\uac00 Nuxt 4.6 \uc694\uad6c \uc870\uac74(Node.js 22.21+, 24.11+ \ub610\ub294 26+)\uc744 \ucda9\uc871\ud558\ub294\uc9c0 \ud655\uc778\ud55c\ub2e4. H3 v2\ub97c \uc9c1\uc811 \uc4f0\ub294 \uacbd\uc6b0\uc5d0\ub294 \ucd5c\uc18c Node.js 20.19\ub3c4 \ubcc4\ub3c4\ub85c \ud655\uc778\ud55c\ub2e4.<\/li>\n<li><strong>\uc7a0\uae08\ud30c\uc77c:<\/strong> \ub3c5\ub9bd \ube0c\ub79c\uce58\uc5d0\uc11c <code>npx nuxt upgrade --dedupe<\/code>\ub97c \uc2e4\ud589\ud558\uace0, \uc758\uc874\uc131 diff\u00b7\ube4c\ub4dc\u00b7SSR smoke test\u00b7\uc815\uc801 \uc0dd\uc131 \uacb0\uacfc\ub97c \ud568\uaed8 \uae30\ub85d\ud55c\ub2e4.<\/li>\n<li><strong>\uac1c\ubc1c \uc11c\ubc84:<\/strong> CLI v4\uc758 \uc7ac\uc2dc\uc791 \uc6d0\uc778\u00b7\ubaa8\ub4c8 setup \uc2dc\uac04\u00b7lock \ub3d9\uc791\uc744 \ud300 \uacf5\uc6a9 \uac1c\ubc1c \uc2dc\ub098\ub9ac\uc624\uc5d0\uc11c \ud655\uc778\ud55c\ub2e4. \uac1c\ubc1c \uc11c\ubc84\uac00 \uc774\ubbf8 \uc788\uc744 \ub54c \uc790\ub3d9\ud654\uac00 \ucde8\ud560 \ud589\ub3d9\uc744 \ubb38\uc11c\ud654\ud55c\ub2e4.<\/li>\n<\/ul>\n<h3>\ub2e4\uc74c \ub2e8\uacc4: \uc11c\ubc84 \uacbd\uacc4\uc640 \ud0c0\uc785\uc744 \uc791\uc740 \ub2e8\uc704\ub85c \uc2dc\ud5d8<\/h3>\n<ul>\n<li><strong>\uc0c8 API\ubd80\ud130:<\/strong> \uc0c8 \uc11c\ubc84 \uc5d4\ub4dc\ud3ec\uc778\ud2b8 \ud558\ub098\ub97c <code>nuxt\/server<\/code> explicit import\ub85c \uad6c\ud604\ud558\uace0, \uae30\uc874 H3 auto-import \ud578\ub4e4\ub7ec\uc640 \uac19\uc740 \ud30c\uc77c\uc5d0\uc11c \uc11e\uc9c0 \uc54a\ub294\ub2e4.<\/li>\n<li><strong>\ud0c0\uc785\ub4dc fetch:<\/strong> routeTypedFetch\ub97c canary \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \ucf20 \ub4a4, \ub300\ud615 \ub77c\uc6b0\ud2b8 \uc9d1\ud569\uc758 typecheck \uc2dc\uac04\u00b7\uba54\ubaa8\ub9ac\u00b7\uae30\uc874 <code>ServerRoutes<\/code> \ud655\uc7a5 \uc624\ub958\ub97c \ube44\uad50\ud55c\ub2e4.<\/li>\n<li><strong>\uc138\uc158:<\/strong> <code>NUXT_APP_SECRET<\/code> \uc8fc\uc785, secret rotation, cookie \uc18d\uc131, \uc5ed\ud504\ub85d\uc2dc \ud658\uacbd\uc758 HTTPS\uc640 forwarded header \uc2e0\ub8b0 \ubc94\uc704\ub97c \uac80\uc99d\ud55c\ub2e4.<\/li>\n<li><strong>H3 \uc9c1\uc811 \uc0ac\uc6a9:<\/strong> <code>app.use<\/code> \uc640\uc77c\ub4dc\uce74\ub4dc, <code>sendRedirect<\/code>\u00b7response return, <code>event.req.headers<\/code>, <code>x-forwarded-proto<\/code>\ub97c \ud3ec\ud568\ud55c \ud68c\uadc0 \ud14c\uc2a4\ud2b8\ub97c \ub9cc\ub4e0\ub2e4.<\/li>\n<\/ul>\n<h2>Vite\/Vue \uc0dd\ud0dc\uacc4 \uc0c1\ud0dc: \uc774\ubc88 72\uc2dc\uac04\uc5d0 \uacfc\uc7a5\ud558\uc9c0 \ub9d0\uc544\uc57c \ud560 \ubd80\ubd84<\/h2>\n<p>\uc870\uc0ac \uae30\uc900 \uae30\uac04(10\uc6d4 4\uc77c 00:00 UTC~10\uc6d4 7\uc77c 00:00 UTC)\uc5d0\ub294 Vue core\uc758 \uc0c8 stable \ub9b4\ub9ac\uc2a4\ub97c \ud655\uc778\ud558\uc9c0 \ubabb\ud588\ub2e4. Vue 3.6.0-rc.10\uc740 9\uc6d4 30\uc77c \uacf5\uac1c\ub41c <strong>prerelease<\/strong>\uc774\uba70, \ubc30\ud3ec \uac00\ub2a5\ud55c stable\ub85c \ud45c\ud604\ud574\uc11c\ub294 \uc548 \ub41c\ub2e4. Vite 8.3.2\ub3c4 10\uc6d4 1\uc77c \ub9b4\ub9ac\uc2a4\ub85c \uc774\ubc88 72\uc2dc\uac04 \ubc16\uc758 \uc9c1\uc804 \uae30\uc900\uc120\uc774\ub2e4. \ub2e4\ub9cc Vite 8.3.2\ub294 CSS preload query \ucc98\ub9ac, watcher \uc624\ub958\ub85c \uc778\ud55c \uc11c\ubc84 \uc911\ub2e8 \ubc29\uc9c0, bundled-dev\/Rolldown \uad00\ub828 \uc218\uc815\uacfc source-map \ucc98\ub9ac \uac1c\uc120\uc744 \ud3ec\ud568\ud558\ubbc0\ub85c Nuxt 4.6 \uc5c5\uadf8\ub808\uc774\ub4dc \uac80\uc99d \ub54c \ud568\uaed8 \ud655\uc778\ud560 \uc758\uc874\uc131 \uae30\uc900\uc73c\ub85c\ub294 \uc720\ud6a8\ud558\ub2e4.<\/p>\n<p><strong>\uc2e4\ubb34 \ud574\uc11d:<\/strong> \uc774\ubc88 \ucc3d\uc758 \uc8fc\uc81c\ub294 \u201cVue\/Vite\uac00 \uc0c8 \ubc84\uc804\uc744 \ub0c8\ub2e4\u201d\uac00 \uc544\ub2c8\ub77c, Nuxt 4.6\uc774 \uc0c8 CLI\u00b7\uc11c\ubc84 \ucd94\uc0c1\ud654\u00b7\ud0c0\uc785 \uc2dc\uc2a4\ud15c\uc73c\ub85c \uae30\uc874 Vite\/Nitro\/H3 \uacbd\uacc4\ub97c \uc7ac\ubc30\uce58\ud588\ub2e4\ub294 \uc810\uc774\ub2e4. Vue RC\ub098 Vite \uc9c1\uc804 \ud328\uce58\ub97c \uc6b4\uc601 \ubc30\ud3ec \uadfc\uac70\ub85c \uc0bc\uc9c0 \ub9d0\uace0, Nuxt 4.6\uc758 \uba85\uc2dc\ub41c \uc5c5\uadf8\ub808\uc774\ub4dc\u00b7\ud638\ud658\uc131 \uacbd\uacc4 \uc704\uc5d0\uc11c \ud14c\uc2a4\ud2b8 \ubc94\uc704\ub97c \uc124\uacc4\ud558\uc790.<\/p>\n<h2>\uc790\uc8fc \ubb3b\ub294 \uc9c8\ubb38 (AEO)<\/h2>\n<h3>Nuxt 4.6\uc73c\ub85c \ubc14\ub85c \uc62c\ub824\ub3c4 \ub418\ub098?<\/h3>\n<p>\uc815\uc2dd \ub9b4\ub9ac\uc2a4\uc774\ubbc0\ub85c \ud3c9\uac00 \ub300\uc0c1\uc5d0\ub294 \ub123\uc5b4\uc57c \ud558\uc9c0\ub9cc, \ud504\ub85c\uc81d\ud2b8\ubcc4 \ub7f0\ud0c0\uc784\u00b7\ubaa8\ub4c8\u00b7\uc11c\ubc84 \ucf54\ub4dc \uc758\uc874\uc131\uc774 \ub2e4\ub974\ub2e4. \uba3c\uc800 \uc5c5\uadf8\ub808\uc774\ub4dc \ube0c\ub79c\uce58\uc5d0\uc11c build, SSR, route rules, API, \uce90\uc2dc, \ud0c0\uc785 \uac80\uc0ac, \ubc30\ud3ec preview\ub97c \uac80\uc99d\ud55c \ub4a4 \ub2e8\uacc4\uc801\uc73c\ub85c \ubc30\ud3ec\ud558\ub294 \uac83\uc774 \ub2f5\uc774\ub2e4.<\/p>\n<h3>H3 v2\ub97c \uc4f0\uba74 Nuxt 4.6\uc5d0\uc11c Nitro\ub97c \ubc14\uafd4\uc57c \ud558\ub098?<\/h3>\n<p>\uc544\ub2c8\ub2e4. \uacf5\uc2dd \ub9b4\ub9ac\uc2a4\ub294 \ub300\ubd80\ubd84\uc758 \uc571\uc5d0 \uae30\ubcf8 Nitro\uac00 \uc5ec\uc804\ud788 \uc801\uc808\ud558\ub2e4\uace0 \ub9d0\ud55c\ub2e4. Nuxt 4.6\uc758 <code>nuxt\/server<\/code>\uc744 \uc0ac\uc6a9\ud558\uba74 \uc55e\uc73c\ub85c\uc758 H3\/Nitro \uba54\uc774\uc800 \uc804\ud658\uacfc \uc571 \ucf54\ub4dc\ub97c \ubd84\ub9ac\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub418\uc9c0\ub9cc, \uc9c1\uc811 H3 v2\ub97c \ucc44\ud0dd\ud558\ub294 \uacbd\uc6b0\uc5d0\ub294 \ubcc4\ub3c4 \ub9c8\uc774\uadf8\ub808\uc774\uc158\uc774 \ud544\uc694\ud558\ub2e4.<\/p>\n<h3>routeTypedFetch\ub294 \uc9c0\uae08 \ucf1c\uc57c \ud558\ub098?<\/h3>\n<p>\ub300\ud615 API \ub77c\uc6b0\ud2b8\uc758 typecheck \ubcd1\ubaa9\uc744 \ud574\uacb0\ud560 \uac00\ub2a5\uc131\uc774 \uc788\uc9c0\ub9cc Nuxt 4\uc5d0\uc11c\ub294 \uc2e4\ud5d8 \uae30\ub2a5\uc774\ub2e4. CI \uc9c0\ud45c\uc640 \ud0c0\uc785 \ud638\ud658\uc131\uc744 \ube44\uad50\ud560 \uc218 \uc788\ub294 canary\uc5d0\uc11c \uba3c\uc800 \ucf1c\uace0, \uacb0\uacfc\uac00 \ud655\uc778\ub41c \ub4a4 \ud655\ub300\ud55c\ub2e4.<\/p>\n<h2>\uc8fc\uc694 \ucd9c\ucc98<\/h2>\n<ul>\n<li><a href=\"https:\/\/github.com\/nuxt\/nuxt\/releases\/tag\/v4.6.0\" target=\"_blank\" rel=\"noopener\">Nuxt 4.6.0 \uacf5\uc2dd GitHub \ub9b4\ub9ac\uc2a4<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/nuxt\/cli\/releases\/tag\/v4.0.0\" target=\"_blank\" rel=\"noopener\">Nuxt CLI v4 \uacf5\uc2dd \ub9b4\ub9ac\uc2a4<\/a><\/li>\n<li><a href=\"https:\/\/nuxt.com\/docs\/guide\/going-further\/server-imports\" target=\"_blank\" rel=\"noopener\">Nuxt server imports \uacf5\uc2dd \uac00\uc774\ub4dc<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/h3js\/h3\/releases\/tag\/v2.0.1\" target=\"_blank\" rel=\"noopener\">H3 v2.0.1 \uacf5\uc2dd GitHub \ub9b4\ub9ac\uc2a4<\/a><\/li>\n<li><a href=\"https:\/\/h3.dev\/migration\" target=\"_blank\" rel=\"noopener\">H3 v1 \u2192 v2 \uacf5\uc2dd \ub9c8\uc774\uadf8\ub808\uc774\uc158 \uac00\uc774\ub4dc<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/vitejs\/vite\/releases\/tag\/v8.3.2\" target=\"_blank\" rel=\"noopener\">Vite 8.3.2 \uacf5\uc2dd GitHub \ub9b4\ub9ac\uc2a4<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/vuejs\/core\/releases\/tag\/v3.6.0-rc.10\" target=\"_blank\" rel=\"noopener\">Vue 3.6.0-rc.10 prerelease<\/a><\/li>\n<\/ul>\n<h2>3\uc77c \uacb0\ub860<\/h2>\n<p>Nuxt 4.6\uacfc H3 v2\uc758 \uc870\ud569\uc740 Nuxt \uc11c\ubc84 \ucf54\ub4dc\ub97c \uc6f9 \ud45c\uc900\uacfc \ud504\ub808\uc784\uc6cc\ud06c \uc18c\uc720 API \ucabd\uc73c\ub85c \uc62e\uae30\ub294 \uc2e0\ud638\ub2e4. \uc9c0\uae08\uc758 \uc6b0\uc120\uc21c\uc704\ub294 \uc804\uccb4 \uc7ac\uc791\uc131\uc774\ub098 \uc2e4\ud5d8 \uae30\ub2a5\uc758 \uc989\uc2dc \ud65c\uc131\ud654\uac00 \uc544\ub2c8\ub77c, <strong>Node\u00b7lockfile\u00b7SSR\u00b7route rules\u00b7\uc138\uc158\u00b7\ud0c0\uc785 \uac80\uc0ac<\/strong>\ub97c \ud3ec\ud568\ud55c canary \uac80\uc99d\uc774\ub2e4. \uc0c8 \ucf54\ub4dc\ub294 <code>nuxt\/server<\/code>\uc73c\ub85c \uacbd\uacc4\ub97c \ub9cc\ub4e4\uace0, \uc9c1\uc811 H3\ub97c \uc4f4 \uae30\uc874 \ucf54\ub4dc\ub294 H3 v2\uc758 \ub77c\uc6b0\ud305\u00b7\uc751\ub2f5\u00b7\ud504\ub85d\uc2dc \uacc4\uc57d\uc744 \uba85\uc2dc\uc801\uc73c\ub85c \ud14c\uc2a4\ud2b8\ud558\uc790.<\/p>\n<h2>\ub354 \uae4a\uac8c \uc77d\uae30: \uc2e4\uc804 \uac00\uc774\ub4dc<\/h2>\n<p>\uc774 \ub9ac\ud3ec\ud2b8\ub294 \ucd5c\uadfc \ud750\ub984\uc744 \ube60\ub974\uac8c \ud30c\uc545\ud558\uae30 \uc704\ud55c \uc694\uc57d\uc785\ub2c8\ub2e4. \uc2e4\uc81c \ud504\ub85c\uc81d\ud2b8\uc5d0 \uc801\uc6a9\ud560 \ub54c\ub294 \uc544\ub798\uc758 \uae30\uc900 \uae00\uacfc \ud568\uaed8 \ud655\uc778\ud558\uba74 \ub354 \uc548\uc804\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a href=\"https:\/\/gilnas.synology.me\/wordpress\/113\/\">AI \uc5d0\uc774\uc804\ud2b8\ub780 \ubb34\uc5c7\uc778\uac00?<\/a><\/li>\n<li><a href=\"https:\/\/gilnas.synology.me\/wordpress\/114\/\">\ud504\ub86c\ud504\ud2b8 \uc778\uc81d\uc158 \ubcf4\uc548 \uccb4\ud06c\ub9ac\uc2a4\ud2b8<\/a><\/li>\n<li><a href=\"https:\/\/gilnas.synology.me\/wordpress\/115\/\">AI \ucf54\ub529 \ub3c4\uad6c \uc548\uc804 \uc6cc\ud06c\ud50c\ub85c<\/a><\/li>\n<li><a href=\"https:\/\/gilnas.synology.me\/wordpress\/116\/\">Nuxt SEO \uc124\uc815 \ubc29\ubc95<\/a><\/li>\n<li><a href=\"https:\/\/gilnas.synology.me\/wordpress\/117\/\">Nuxt\uc640 WordPress Headless CMS \uad6c\uc870<\/a><\/li>\n<li><a href=\"https:\/\/gilnas.synology.me\/wordpress\/118\/\">\uac1c\ubc1c\uc790 \ube14\ub85c\uadf8 \uc560\ub4dc\uc13c\uc2a4 \uc2b9\uc778 \uc804\ub7b5<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\uc694\uc57d: \ucd5c\uadfc 72\uc2dc\uac04\uc758 Nuxt \uc0dd\ud0dc\uacc4\uc5d0\uc11c \uac00\uc7a5 \ud070 \ubcc0\ud654\ub294 Nuxt 4.6\uc758 \uc815\uc2dd \ucd9c\uc2dc\uc640 H3 v2 \uc548\uc815\ud654\ub2e4. \uc774\ubc88 3\uc77c \ub9ac\ud3ec\ud2b8\ub294 Nuxt CLI v4, nuxt\/server, \ud0c0\uc785\ub4dc $fetch, \uc571 \uc2dc\ud06c\ub9bf\u00b7\uc138\uc158, H3 v2\ub97c \ud558\ub098\uc758 \uc6b4\uc601 \uc804\ud658\uc73c\ub85c \ubb36\uc5b4, Nuxt\/Vue \ud300\uc774 \ubb34\uc5c7\uc744 \uc9c0\uae08 \uac80\uc99d\ud558\uace0 \ubb34\uc5c7\uc744 \ub2e8\uacc4\uc801\uc73c\ub85c \ub3c4\uc785\ud560\uc9c0 \uc815\ub9ac\ud55c\ub2e4. \ud575\uc2ec \ub2f5\ubcc0: \uc9c0\uae08 Nuxt \ud300\uc774 \ud574\uc57c \ud560 \uc77c \uacb0\ub860\ubd80\ud130 \ub9d0\ud558\uba74, Nuxt 4.6\uc740 \ub2e8\uc21c\ud55c \uae30\ub2a5 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":570,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-571","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-nuxt-trend"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/posts\/571","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/comments?post=571"}],"version-history":[{"count":0,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/posts\/571\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/media\/570"}],"wp:attachment":[{"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/media?parent=571"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/categories?post=571"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gilnas.synology.me\/wordpress\/wp-json\/wp\/v2\/tags?post=571"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}