[{"data":1,"prerenderedAt":1188},["ShallowReactive",2],{"palette-projects":3,"palette-posts":177,"\u002Fblog\u002Fnuxt-4-novidades-revolucionarias":194,"\u002Fblog\u002Fnuxt-4-novidades-revolucionarias-surround":1185},[4,27,44,57,73,86,101,113,126,138,150,163],{"id":5,"title":6,"accent":7,"description":8,"device":9,"extension":10,"featured":11,"image":12,"kind":13,"meta":14,"repo":15,"stem":16,"tagline":17,"tags":18,"url":24,"year":25,"__hash__":26},"projects\u002Fprojects\u002F01.fluxxi.yml","Fluxxi","#0f766e","Comandas por mesa que enviam pedidos direto para cozinha e bar, estoque com alertas, fechamento de caixa por turno, equipe com comissões e relatórios em PDF. Um produto completo, com planos pagos e versão PWA para o celular.","desktop","yml",true,"\u002Fprojects\u002Ffluxxi.png","Produto",{},null,"projects\u002F01.fluxxi","SaaS de gestão para bares e restaurantes.",[19,20,21,22,23],"Nuxt","Nuxt UI","Supabase","Pinia","GSAP","https:\u002F\u002Fwww.fluxxi.com.br\u002F",2026,"_1Q9DQI2p5piM84tbn1QZM3GNYJ2sAsr-h1syMorkiQ",{"id":28,"title":29,"accent":30,"description":31,"device":9,"extension":10,"featured":11,"image":32,"kind":33,"meta":34,"repo":15,"stem":35,"tagline":36,"tags":37,"url":42,"year":25,"__hash__":43},"projects\u002Fprojects\u002F02.lifetour.yml","LifeTour","#f5b301","Jogo de tabuleiro inspirado no Business Tour, em Phaser 3 e WebGL. Motor de regras desacoplado da interface, bots com IA, modo online, editor de mapas e balanceamento validado com milhares de partidas simuladas.","\u002Fprojects\u002Flifetour.png","Pessoal",{},"projects\u002F02.lifetour","Board game de negócios isométrico, jogável no navegador.",[38,39,40,21,41],"Phaser 3","TypeScript","Vite","Vitest","https:\u002F\u002Flifetour-ivory.vercel.app\u002F","yLAYCM2fRZtFZ-zkolG0zvY-NpM_hsP-_G9xowC72MI",{"id":45,"title":46,"accent":47,"description":48,"device":9,"extension":10,"featured":11,"image":49,"kind":33,"meta":50,"repo":15,"stem":51,"tagline":52,"tags":53,"url":55,"year":25,"__hash__":56},"projects\u002Fprojects\u002F03.faictory.yml","Faictory","#facc15","Inspirado em Factorio. Minere recursos, monte cadeias de produção com esteiras, braços robóticos e máquinas, e explore uma ilha gerada proceduralmente. Renderização em three.js com HUD em Nuxt UI.","\u002Fprojects\u002Ffaictory.png",{},"projects\u002F03.faictory","Jogo 3D de automação industrial no navegador.",[19,54,20,39],"three.js","https:\u002F\u002Ffaictory.vercel.app\u002F","LxtgDr3OCa8rqhWUiwzYIi1vm7kX4iI9OWJEfoeVNts",{"id":58,"title":59,"accent":60,"description":61,"device":62,"extension":10,"featured":11,"image":63,"kind":33,"meta":64,"repo":15,"stem":65,"tagline":66,"tags":67,"url":71,"year":25,"__hash__":72},"projects\u002Fprojects\u002F04.myfin.yml","MyFin","#c6f16b","PWA instalável para controlar o dinheiro do dia a dia e as vendas a prazo, com parcelas, cobrança pelo WhatsApp e lembretes. Os dados ficam no aparelho e funcionam offline, com sincronização cifrada opcional.","mobile","\u002Fprojects\u002Fmyfin.png",{},"projects\u002F04.myfin","Finanças pessoais e vendas fiado, offline-first.",[68,39,69,70,41],"React","PWA","IndexedDB","https:\u002F\u002Fmyfin-wine.vercel.app\u002F","MnKq_n6lh7yoUZeI27pDEp0ziBT6nb62qi8W7SDudXU",{"id":74,"title":75,"accent":15,"description":76,"device":9,"extension":10,"featured":11,"image":77,"kind":78,"meta":79,"repo":15,"stem":80,"tagline":81,"tags":82,"url":84,"year":25,"__hash__":85},"projects\u002Fprojects\u002F05.imperiodabeleza.yml","Império da Beleza","Site com serviços e pacotes, agendamento com escolha de horário, área do cliente e programa de fidelidade. Painel admin com agenda, clientes, financeiro e promoções, e lembretes automáticos pelo WhatsApp.","\u002Fprojects\u002Fimperiodabeleza.png","Cliente",{},"projects\u002F05.imperiodabeleza","Agendamento online e gestão para salão de beleza.",[19,20,21,83],"WhatsApp API","https:\u002F\u002Fimperiodabeleza.vercel.app\u002F","dYH4YyKfMy-yjcJrhnW0kLPMoyHKGsgidRamwvyJE48",{"id":87,"title":88,"accent":15,"description":89,"device":9,"extension":10,"featured":11,"image":90,"kind":91,"meta":92,"repo":15,"stem":93,"tagline":94,"tags":95,"url":98,"year":99,"__hash__":100},"projects\u002Fprojects\u002F06.paper-ui.yml","Paper UI","Design system com estética de desenho à mão, em Vue 3 e Nuxt, com TypeScript e Tailwind CSS. Hoje na versão 2.0, com documentação própria.","\u002Fprojects\u002Fpaper-ui.png","Open source",{},"projects\u002F06.paper-ui","Biblioteca de componentes hand-drawn para Nuxt.",[19,96,39,97],"Design System","Tailwind","https:\u002F\u002Fpaper-docs.nuxt.space\u002F",2025,"Oq9ZcBuOfRs5t6tO_vpEkYVnkeSZBMolKc7lh_K1aN0",{"id":102,"title":103,"accent":15,"description":104,"device":9,"extension":10,"featured":11,"image":105,"kind":78,"meta":106,"repo":15,"stem":107,"tagline":108,"tags":109,"url":111,"year":99,"__hash__":112},"projects\u002Fprojects\u002F07.bushdocs.yml","BushDocs","Documentação técnica com categorias hierárquicas ilimitadas, editor rich text com imagens e vídeos, fluxo de rascunho e publicação e busca rápida com ⌘K.","\u002Fprojects\u002Fbushdocs.png",{},"projects\u002F07.bushdocs","Plataforma de documentação interna.",[19,20,110,21],"Tiptap","https:\u002F\u002Fbushdocs.vercel.app\u002F","88pcETkmoP3NFm07m8OTaAdbai37nd2-8TIY-i81Ryk",{"id":114,"title":115,"accent":15,"description":116,"device":9,"extension":10,"featured":117,"image":118,"kind":33,"meta":119,"repo":15,"stem":120,"tagline":121,"tags":122,"url":124,"year":25,"__hash__":125},"projects\u002Fprojects\u002F08.pokerpg.yml","PokeRPG","Explore mapas procedurais pelo teclado, enfrente encontros aleatórios e capture, batalhe e troque Pokémon, com perfis, níveis e experiência. Dados da PokeAPI.",false,"\u002Fprojects\u002Fpokerpg.png",{},"projects\u002F08.pokerpg","RPG multiplayer de Pokémon no navegador.",[19,21,123,22],"PokeAPI","https:\u002F\u002Fpokerpg-chi.vercel.app\u002F","18Xeq0OHakXFKJ6CLbDXi7OHTcExH4qCrqfKCf5gKdM",{"id":127,"title":128,"accent":15,"description":129,"device":9,"extension":10,"featured":117,"image":130,"kind":78,"meta":131,"repo":15,"stem":132,"tagline":133,"tags":134,"url":136,"year":25,"__hash__":137},"projects\u002Fprojects\u002F09.booking-panels.yml","Booking Panels","Dois painéis mensais com linha do tempo de 36 dias e sete tipos de agendamento. Visualização pública, edição autenticada e atualização em tempo real via Supabase Realtime.","\u002Fprojects\u002Fbooking-panels.png",{},"projects\u002F09.booking-panels","Painéis de agendamento de produção em tempo real.",[19,20,135],"Supabase Realtime","https:\u002F\u002Fbooking-panels.vercel.app\u002F","y2iEjTOCE9uomrY_BvcUrEc1s68I2UbyMzuOt-d_jZw",{"id":139,"title":140,"accent":15,"description":141,"device":9,"extension":10,"featured":117,"image":142,"kind":78,"meta":143,"repo":15,"stem":144,"tagline":145,"tags":146,"url":148,"year":25,"__hash__":149},"projects\u002Fprojects\u002F10.accelerator.yml","Production Accelerator","Seis indicadores em gauges e um cronograma de 60 dias por baia, com modo TV que se atualiza sozinho e modo de edição com drag & drop de datas.","\u002Fprojects\u002Faccelerator.png",{},"projects\u002F10.accelerator","Dashboard de acompanhamento de produção.",[19,21,147],"Chart.js","https:\u002F\u002Faccelerator-gilt.vercel.app\u002F","cQB8X0ir3dZipl1HElNl0elYQuA6HvT13efem-d5NcY",{"id":151,"title":152,"accent":15,"description":153,"device":9,"extension":10,"featured":117,"image":154,"kind":33,"meta":155,"repo":156,"stem":157,"tagline":158,"tags":159,"url":161,"year":99,"__hash__":162},"projects\u002Fprojects\u002F11.kanboard.yml","KanBoard","Quadro Kanban com criação e remoção de colunas e cards, atalhos de teclado, undo\u002Fredo e persistência local. Projeto para explorar o Nuxt 4.","\u002Fkanboard.jpg",{},"https:\u002F\u002Fgithub.com\u002FFelipeO16\u002Fkanboard","projects\u002F11.kanboard","Kanban com atalhos de teclado e undo\u002Fredo.",[19,97,160],"VueUse","https:\u002F\u002Fkanboard.nuxt.dev\u002F","tsQYWkJzBU8Rj5hph3X0_oKcPXmnyLAIRh69QVA85-w",{"id":164,"title":165,"accent":15,"description":166,"device":9,"extension":10,"featured":117,"image":167,"kind":33,"meta":168,"repo":169,"stem":170,"tagline":171,"tags":172,"url":174,"year":175,"__hash__":176},"projects\u002Fprojects\u002F12.wordle.yml","Wordle Clone","Clone de Wordle feito para praticar Test-Driven Development com Vitest, com palavra do dia e feedback visual interativo.","\u002Fwordle.jpg",{},"https:\u002F\u002Fgithub.com\u002FFelipeO16\u002Fwordle","projects\u002F12.wordle","Wordle em Nuxt, construído com TDD.",[19,41,173,39],"TDD","https:\u002F\u002Fwordle.nuxt.dev\u002F",2024,"JLM-jGzPC_oxnzB5dVkdQisY6zTDDPjQZSKHQ9cHQFc",[178,182,186,190],{"title":179,"path":180,"description":181},"Nuxt 4: As Novidades Revolucionárias que Você Precisa Conhecer","\u002Fblog\u002Fnuxt-4-novidades-revolucionarias","Descubra as principais novidades do Nuxt 4, incluindo nova estrutura de projeto, data fetching inteligente, melhor suporte TypeScript e CLI mais rápido.",{"title":183,"path":184,"description":185},"Paper UI: A História por Trás da Biblioteca que Revolucionou o Design Vue.js","\u002Fblog\u002Fpaper-ui-historia-criacao","Descubra como nasceu a Paper UI, os desafios técnicos enfrentados e como uma ideia simples se tornou um módulo oficial do Nuxt.js.",{"title":187,"path":188,"description":189},"Nuxt Performance: Otimizações Avançadas que Aumentaram 40% a Velocidade dos Meus Projetos","\u002Fblog\u002Fnuxt-performance-otimizacoes-avancadas","Técnicas avançadas de otimização de performance em Nuxt.js que implementei em projetos reais, com resultados mensuráveis e código prático.",{"title":191,"path":192,"description":193},"O Futuro do Ecossistema Nuxt.js: Tendências que Vão Moldar o Desenvolvimento Front-end em 2025","\u002Fblog\u002Fnuxt-ecosystem-futuro-desenvolvimento","Análise profunda das tendências emergentes no ecossistema Nuxt.js, incluindo AI, edge computing, e as tecnologias que vão revolucionar o desenvolvimento front-end.",{"id":195,"title":179,"body":196,"date":1168,"description":181,"extension":1169,"image":1170,"meta":1171,"navigation":11,"path":180,"seo":1179,"stem":1180,"tags":1181,"__hash__":1184},"blog\u002Fblog\u002Fnuxt-4-novidades-revolucionarias.md",{"type":197,"value":198,"toc":1129},"minimark",[199,208,213,221,231,236,258,264,268,279,283,367,371,391,395,518,522,525,529,560,564,587,590,680,684,687,691,721,725,745,749,752,756,782,786,848,852,856,882,886,892,896,918,922,942,946,957,961,985,989,992,996,1034,1038,1057,1061,1066,1072,1076,1108,1111,1125],[200,201,202,203,207],"p",{},"O ",[204,205,206],"strong",{},"Nuxt 4"," chegou oficialmente em julho de 2025 e trouxe consigo uma evolução focada na experiência do desenvolvedor, com melhor organização de projetos, data fetching mais inteligente e suporte TypeScript aprimorado. Como desenvolvedor que acompanha de perto a evolução do framework, vou compartilhar as principais novidades que mais me impressionaram.",[209,210,212],"h2",{"id":211},"️-nova-estrutura-de-projeto-organização-inteligente","🗂️ Nova Estrutura de Projeto: Organização Inteligente",[200,214,215,216,220],{},"A maior mudança visível é como os projetos são organizados. Seu código de aplicação agora vive em um diretório ",[217,218,219],"code",{},"app\u002F"," por padrão:",[222,223,228],"pre",{"className":224,"code":226,"language":227},[225],"language-text","my-nuxt-app\u002F\n├─ app\u002F\n│  ├─ assets\u002F\n│  ├─ components\u002F\n│  ├─ composables\u002F\n│  ├─ layouts\u002F\n│  ├─ middleware\u002F\n│  ├─ pages\u002F\n│  ├─ plugins\u002F\n│  ├─ utils\u002F\n│  ├─ app.vue\n│  ├─ app.config.ts\n│  └─ error.vue\n├─ content\u002F\n├─ public\u002F\n├─ shared\u002F\n├─ server\u002F\n└─ nuxt.config.ts\n","text",[217,229,226],{"__ignoreMap":230},"",[232,233,235],"h3",{"id":234},"benefícios-da-nova-estrutura","Benefícios da Nova Estrutura",[237,238,239,246,252],"ul",{},[240,241,242,245],"li",{},[204,243,244],{},"File watchers mais rápidos"," (especialmente no Windows e Linux)",[240,247,248,251],{},[204,249,250],{},"Melhor contexto para IDEs"," sobre código cliente vs servidor",[240,253,254,257],{},[204,255,256],{},"Separação clara"," entre código da aplicação e dependências",[200,259,260,263],{},[204,261,262],{},"Não quer migrar?"," Não se preocupe! O Nuxt detecta sua estrutura existente e continua funcionando exatamente como antes.",[209,265,267],{"id":266},"data-fetching-mais-inteligente","🔄 Data Fetching Mais Inteligente",[200,269,270,271,274,275,278],{},"O Nuxt 4 trouxe melhorias significativas no ",[217,272,273],{},"useAsyncData"," e ",[217,276,277],{},"useFetch",":",[232,280,282],{"id":281},"compartilhamento-automático-de-dados","Compartilhamento Automático de Dados",[222,284,288],{"className":285,"code":286,"language":287,"meta":230,"style":230},"language-typescript shiki shiki-themes material-theme-lighter github-light github-dark","\u002F\u002F Múltiplos componentes usando a mesma chave agora compartilham dados automaticamente\nconst { data } = await useAsyncData('user-profile', () => $fetch('\u002Fapi\u002Fuser'))\n","typescript",[217,289,290,299],{"__ignoreMap":230},[291,292,295],"span",{"class":293,"line":294},"line",1,[291,296,298],{"class":297},"sutJx","\u002F\u002F Múltiplos componentes usando a mesma chave agora compartilham dados automaticamente\n",[291,300,302,306,310,314,317,321,325,329,333,337,341,343,346,349,352,355,357,359,362,364],{"class":293,"line":301},2,[291,303,305],{"class":304},"sbsja","const",[291,307,309],{"class":308},"sP7_E"," {",[291,311,313],{"class":312},"s_hVV"," data",[291,315,316],{"class":308}," }",[291,318,320],{"class":319},"smGrS"," =",[291,322,324],{"class":323},"sVHd0"," await",[291,326,328],{"class":327},"sGLFI"," useAsyncData",[291,330,332],{"class":331},"su5hD","(",[291,334,336],{"class":335},"sjJ54","'",[291,338,340],{"class":339},"s_sjI","user-profile",[291,342,336],{"class":335},[291,344,345],{"class":308},",",[291,347,348],{"class":308}," ()",[291,350,351],{"class":304}," =>",[291,353,354],{"class":327}," $fetch",[291,356,332],{"class":331},[291,358,336],{"class":335},[291,360,361],{"class":339},"\u002Fapi\u002Fuser",[291,363,336],{"class":335},[291,365,366],{"class":331},"))\n",[232,368,370],{"id":369},"limpeza-automática","Limpeza Automática",[237,372,373,379,385],{},[240,374,375,378],{},[204,376,377],{},"Cleanup automático"," quando componentes são desmontados",[240,380,381,384],{},[204,382,383],{},"Chaves reativas"," para refetch automático quando necessário",[240,386,387,390],{},[204,388,389],{},"Controle aprimorado"," sobre quando usar dados em cache",[232,392,394],{"id":393},"exemplo-prático","Exemplo Prático",[222,396,398],{"className":285,"code":397,"language":287,"meta":230,"style":230},"\u002F\u002F Chave reativa - refetch automático quando userId muda\nconst { data: user } = await useAsyncData('user', () => \n  $fetch(`\u002Fapi\u002Fusers\u002F${userId.value}`), \n  { key: `user-${userId.value}` }\n)\n",[217,399,400,405,445,481,512],{"__ignoreMap":230},[291,401,402],{"class":293,"line":294},[291,403,404],{"class":297},"\u002F\u002F Chave reativa - refetch automático quando userId muda\n",[291,406,407,409,411,414,416,419,421,423,425,427,429,431,434,436,438,440,442],{"class":293,"line":301},[291,408,305],{"class":304},[291,410,309],{"class":308},[291,412,313],{"class":413},"sucvu",[291,415,278],{"class":308},[291,417,418],{"class":312}," user",[291,420,316],{"class":308},[291,422,320],{"class":319},[291,424,324],{"class":323},[291,426,328],{"class":327},[291,428,332],{"class":331},[291,430,336],{"class":335},[291,432,433],{"class":339},"user",[291,435,336],{"class":335},[291,437,345],{"class":308},[291,439,348],{"class":308},[291,441,351],{"class":304},[291,443,444],{"class":331}," \n",[291,446,448,451,453,456,459,462,465,468,471,474,477,479],{"class":293,"line":447},3,[291,449,450],{"class":327},"  $fetch",[291,452,332],{"class":331},[291,454,455],{"class":335},"`",[291,457,458],{"class":339},"\u002Fapi\u002Fusers\u002F",[291,460,461],{"class":335},"${",[291,463,464],{"class":331},"userId",[291,466,467],{"class":335},".",[291,469,470],{"class":331},"value",[291,472,473],{"class":335},"}`",[291,475,476],{"class":331},")",[291,478,345],{"class":308},[291,480,444],{"class":331},[291,482,484,487,491,493,496,499,501,503,505,507,509],{"class":293,"line":483},4,[291,485,486],{"class":308},"  {",[291,488,490],{"class":489},"skxfh"," key",[291,492,278],{"class":308},[291,494,495],{"class":335}," `",[291,497,498],{"class":339},"user-",[291,500,461],{"class":335},[291,502,464],{"class":331},[291,504,467],{"class":335},[291,506,470],{"class":331},[291,508,473],{"class":335},[291,510,511],{"class":308}," }\n",[291,513,515],{"class":293,"line":514},5,[291,516,517],{"class":331},")\n",[209,519,521],{"id":520},"melhor-experiência-typescript","🔧 Melhor Experiência TypeScript",[200,523,524],{},"O Nuxt 4 cria projetos TypeScript separados para diferentes contextos:",[232,526,528],{"id":527},"separação-inteligente-de-contextos","Separação Inteligente de Contextos",[237,530,531,539,547,555],{},[240,532,533,536,537,476],{},[204,534,535],{},"Código da aplicação"," (",[217,538,219],{},[240,540,541,536,544,476],{},[204,542,543],{},"Código do servidor",[217,545,546],{},"server\u002F",[240,548,549,536,552,476],{},[204,550,551],{},"Código compartilhado",[217,553,554],{},"shared\u002F",[240,556,557],{},[204,558,559],{},"Código de configuração",[232,561,563],{"id":562},"benefícios-reais","Benefícios Reais",[237,565,566,572,578],{},[240,567,568,571],{},[204,569,570],{},"Autocompletar mais preciso"," e inferência de tipos",[240,573,574,577],{},[204,575,576],{},"Menos erros confusos"," ao trabalhar em diferentes contextos",[240,579,580,586],{},[204,581,582,583],{},"Apenas um ",[217,584,585],{},"tsconfig.json"," na raiz do projeto",[232,588,394],{"id":589},"exemplo-prático-1",[222,591,593],{"className":285,"code":592,"language":287,"meta":230,"style":230},"\u002F\u002F app\u002Fcomposables\u002FuseAuth.ts - Tipagem automática\nexport const useAuth = () => {\n  const user = ref\u003CUser | null>(null)\n  \u002F\u002F TypeScript entende automaticamente o tipo User\n  return { user }\n}\n",[217,594,595,600,621,658,663,674],{"__ignoreMap":230},[291,596,597],{"class":293,"line":294},[291,598,599],{"class":297},"\u002F\u002F app\u002Fcomposables\u002FuseAuth.ts - Tipagem automática\n",[291,601,602,605,608,612,614,616,618],{"class":293,"line":301},[291,603,604],{"class":323},"export",[291,606,607],{"class":304}," const",[291,609,611],{"class":610},"sfCm-"," useAuth",[291,613,320],{"class":319},[291,615,348],{"class":308},[291,617,351],{"class":304},[291,619,620],{"class":308}," {\n",[291,622,623,626,628,630,633,636,640,643,647,650,652,656],{"class":293,"line":447},[291,624,625],{"class":304},"  const",[291,627,418],{"class":312},[291,629,320],{"class":319},[291,631,632],{"class":327}," ref",[291,634,635],{"class":308},"\u003C",[291,637,639],{"class":638},"sbgvK","User",[291,641,642],{"class":319}," |",[291,644,646],{"class":645},"sZMiF"," null",[291,648,649],{"class":308},">",[291,651,332],{"class":489},[291,653,655],{"class":654},"s39Yj","null",[291,657,517],{"class":489},[291,659,660],{"class":293,"line":483},[291,661,662],{"class":297},"  \u002F\u002F TypeScript entende automaticamente o tipo User\n",[291,664,665,668,670,672],{"class":293,"line":514},[291,666,667],{"class":323},"  return",[291,669,309],{"class":308},[291,671,418],{"class":331},[291,673,511],{"class":308},[291,675,677],{"class":293,"line":676},6,[291,678,679],{"class":308},"}\n",[209,681,683],{"id":682},"cli-e-desenvolvimento-mais-rápido","⚡ CLI e Desenvolvimento Mais Rápido",[200,685,686],{},"O Nuxt 4 trouxe melhorias significativas na velocidade:",[232,688,690],{"id":689},"melhorias-de-performance","Melhorias de Performance",[237,692,693,699,705,715],{},[240,694,695,698],{},[204,696,697],{},"Cold starts mais rápidos"," - inicialização do servidor de desenvolvimento",[240,700,701,704],{},[204,702,703],{},"Node.js compile cache"," - reutilização automática do cache v8",[240,706,707,710,711,714],{},[204,708,709],{},"File watching nativo"," - usa APIs ",[217,712,713],{},"fs.watch"," para menos recursos do sistema",[240,716,717,720],{},[204,718,719],{},"Comunicação via sockets"," - CLI e Vite se comunicam via sockets internos",[232,722,724],{"id":723},"impacto-real","Impacto Real",[237,726,727,733,739],{},[240,728,729,732],{},[204,730,731],{},"Startup 40% mais rápido"," em desenvolvimento",[240,734,735,738],{},[204,736,737],{},"Menos uso de memória"," e recursos do sistema",[240,740,741,744],{},[204,742,743],{},"Especialmente notável no Windows"," devido às otimizações de socket",[209,746,748],{"id":747},"templates-atualizados","🎨 Templates Atualizados",[200,750,751],{},"Os templates de inicialização do Nuxt receberam uma renovação completa:",[232,753,755],{"id":754},"melhorias-nos-templates","Melhorias nos Templates",[237,757,758,764,770,776],{},[240,759,760,763],{},[204,761,762],{},"Acessibilidade aprimorada"," por padrão",[240,765,766,769],{},[204,767,768],{},"Títulos padrão"," mais informativos",[240,771,772,775],{},[204,773,774],{},"Polimento visual"," geral dos templates",[240,777,778,781],{},[204,779,780],{},"Melhor estrutura"," de componentes",[232,783,785],{"id":784},"template-padrão-renovado","Template Padrão Renovado",[222,787,791],{"className":788,"code":789,"language":790,"meta":230,"style":230},"language-vue shiki shiki-themes material-theme-lighter github-light github-dark","\u003C!-- app.vue - Template mais limpo e organizado -->\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003CNuxtWelcome \u002F>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n","vue",[217,792,793,798,809,819,830,839],{"__ignoreMap":230},[291,794,795],{"class":293,"line":294},[291,796,797],{"class":297},"\u003C!-- app.vue - Template mais limpo e organizado -->\n",[291,799,800,802,806],{"class":293,"line":301},[291,801,635],{"class":308},[291,803,805],{"class":804},"sQzsp","template",[291,807,808],{"class":308},">\n",[291,810,811,814,817],{"class":293,"line":447},[291,812,813],{"class":308},"  \u003C",[291,815,816],{"class":804},"div",[291,818,808],{"class":308},[291,820,821,824,827],{"class":293,"line":483},[291,822,823],{"class":308},"    \u003C",[291,825,826],{"class":804},"NuxtWelcome",[291,828,829],{"class":308}," \u002F>\n",[291,831,832,835,837],{"class":293,"line":514},[291,833,834],{"class":308},"  \u003C\u002F",[291,836,816],{"class":804},[291,838,808],{"class":308},[291,840,841,844,846],{"class":293,"line":676},[291,842,843],{"class":308},"\u003C\u002F",[291,845,805],{"class":804},[291,847,808],{"class":308},[209,849,851],{"id":850},"impacto-real-nos-projetos","📈 Impacto Real nos Projetos",[232,853,855],{"id":854},"melhorias-observadas","Melhorias Observadas",[237,857,858,864,870,876],{},[240,859,860,863],{},[204,861,862],{},"Desenvolvimento mais fluido"," com file watchers otimizados",[240,865,866,869],{},[204,867,868],{},"TypeScript mais preciso"," com separação de contextos",[240,871,872,875],{},[204,873,874],{},"Data fetching mais eficiente"," com compartilhamento automático",[240,877,878,881],{},[204,879,880],{},"CLI mais responsivo"," especialmente no Windows",[209,883,885],{"id":884},"como-fazer-a-migração","🚀 Como Fazer a Migração",[200,887,888,889,278],{},"A migração é ",[204,890,891],{},"surpreendentemente simples",[232,893,895],{"id":894},"_1-atualizar-o-nuxt","1. Atualizar o Nuxt",[222,897,901],{"className":898,"code":899,"language":900,"meta":230,"style":230},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","npx nuxt upgrade --dedupe\n","bash",[217,902,903],{"__ignoreMap":230},[291,904,905,908,911,914],{"class":293,"line":294},[291,906,907],{"class":638},"npx",[291,909,910],{"class":339}," nuxt",[291,912,913],{"class":339}," upgrade",[291,915,917],{"class":916},"stzsN"," --dedupe\n",[232,919,921],{"id":920},"_2-usar-ferramentas-de-migração-opcional","2. Usar Ferramentas de Migração (Opcional)",[222,923,925],{"className":898,"code":924,"language":900,"meta":230,"style":230},"# Automatiza muitos passos da migração\nnpx codemod@latest nuxt\u002F4\u002Fmigration-recipe\n",[217,926,927,932],{"__ignoreMap":230},[291,928,929],{"class":293,"line":294},[291,930,931],{"class":297},"# Automatiza muitos passos da migração\n",[291,933,934,936,939],{"class":293,"line":301},[291,935,907],{"class":638},[291,937,938],{"class":339}," codemod@latest",[291,940,941],{"class":339}," nuxt\u002F4\u002Fmigration-recipe\n",[232,943,945],{"id":944},"_3-testar-e-ajustar","3. Testar e Ajustar",[237,947,948,951,954],{},[240,949,950],{},"Execute seus testes",[240,952,953],{},"Verifique se tudo compila corretamente",[240,955,956],{},"Ajuste qualquer problema que surgir",[232,958,960],{"id":959},"compatibilidade","Compatibilidade",[237,962,963,973,979],{},[240,964,965,968,969,972],{},[204,966,967],{},"Nuxt 2 compatibility removida"," do ",[217,970,971],{},"@nuxt\u002Fkit"," (afeta principalmente autores de módulos)",[240,974,975,978],{},[204,976,977],{},"Utilitários legados"," e funcionalidades depreciadas foram limpos",[240,980,981,984],{},[204,982,983],{},"Configurações de compatibilidade"," disponíveis para reverter comportamento antigo",[209,986,988],{"id":987},"o-futuro-do-nuxt","🔮 O Futuro do Nuxt",[200,990,991],{},"O Nuxt 4 estabelece as bases para:",[232,993,995],{"id":994},"próximas-versões","Próximas Versões",[237,997,998,1004,1010,1016,1022,1028],{},[240,999,1000,1003],{},[204,1001,1002],{},"Nuxt 5"," planejado para o futuro próximo com Nitro v3 e h3 v2",[240,1005,1006,1009],{},[204,1007,1008],{},"Melhor performance"," com Vite Environment API",[240,1011,1012,1015],{},[204,1013,1014],{},"SSR streaming"," (#4753)",[240,1017,1018,1021],{},[204,1019,1020],{},"Módulo de acessibilidade"," oficial (#23255)",[240,1023,1024,1027],{},[204,1025,1026],{},"Estratégias de cache"," para fetch (#26017)",[240,1029,1030,1033],{},[204,1031,1032],{},"Suporte multi-app"," (#21635)",[232,1035,1037],{"id":1036},"roadmap","Roadmap",[237,1039,1040,1046,1051],{},[240,1041,1042,1045],{},[204,1043,1044],{},"Nuxt 3"," continuará recebendo atualizações até janeiro de 2026",[240,1047,1048,1050],{},[204,1049,206],{}," receberá patches rápidos para correções",[240,1052,1053,1056],{},[204,1054,1055],{},"Funcionalidades"," continuarão sendo lançadas em versões menores",[209,1058,1060],{"id":1059},"conclusão","🎉 Conclusão",[200,1062,202,1063,1065],{},[204,1064,206],{}," representa uma evolução focada na experiência do desenvolvedor, com melhor organização de projetos, data fetching mais inteligente e suporte TypeScript aprimorado. As melhorias são pensadas para tornar o desenvolvimento mais fluido e eficiente.",[200,1067,1068,1071],{},[204,1069,1070],{},"Minha recomendação",": A migração é simples e os benefícios são imediatos. O Nuxt 4 é a escolha natural para novos projetos Vue.js em 2025.",[232,1073,1075],{"id":1074},"principais-benefícios","Principais Benefícios",[237,1077,1078,1087,1092,1097,1102],{},[240,1079,1080,1081,1084,1085],{},"✅ ",[204,1082,1083],{},"Organização melhor"," com estrutura ",[217,1086,219],{},[240,1088,1080,1089,875],{},[204,1090,1091],{},"Data fetching inteligente",[240,1093,1080,1094,869],{},[204,1095,1096],{},"TypeScript aprimorado",[240,1098,1080,1099,881],{},[204,1100,1101],{},"CLI mais rápido",[240,1103,1080,1104,1107],{},[204,1105,1106],{},"Migração simples"," com ferramentas automatizadas",[1109,1110],"hr",{},[200,1112,1113],{},[1114,1115,1116,1117,1124],"em",{},"Quer saber mais sobre alguma funcionalidade específica? Deixe um comentário ou me siga no ",[1118,1119,1123],"a",{"href":1120,"rel":1121},"https:\u002F\u002Fgithub.com\u002FFelipeOl6",[1122],"nofollow","GitHub"," para mais insights sobre Nuxt.js!",[1126,1127,1128],"style",{},"html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .sGLFI, html code.shiki .sGLFI{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sucvu, html code.shiki .sucvu{--shiki-light:#E53935;--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .skxfh, html code.shiki .skxfh{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sfCm-, html code.shiki .sfCm-{--shiki-light:#90A4AE;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sQzsp, html code.shiki .sQzsp{--shiki-light:#E53935;--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":230,"searchDepth":301,"depth":301,"links":1130},[1131,1134,1139,1144,1148,1152,1155,1161,1165],{"id":211,"depth":301,"text":212,"children":1132},[1133],{"id":234,"depth":447,"text":235},{"id":266,"depth":301,"text":267,"children":1135},[1136,1137,1138],{"id":281,"depth":447,"text":282},{"id":369,"depth":447,"text":370},{"id":393,"depth":447,"text":394},{"id":520,"depth":301,"text":521,"children":1140},[1141,1142,1143],{"id":527,"depth":447,"text":528},{"id":562,"depth":447,"text":563},{"id":589,"depth":447,"text":394},{"id":682,"depth":301,"text":683,"children":1145},[1146,1147],{"id":689,"depth":447,"text":690},{"id":723,"depth":447,"text":724},{"id":747,"depth":301,"text":748,"children":1149},[1150,1151],{"id":754,"depth":447,"text":755},{"id":784,"depth":447,"text":785},{"id":850,"depth":301,"text":851,"children":1153},[1154],{"id":854,"depth":447,"text":855},{"id":884,"depth":301,"text":885,"children":1156},[1157,1158,1159,1160],{"id":894,"depth":447,"text":895},{"id":920,"depth":447,"text":921},{"id":944,"depth":447,"text":945},{"id":959,"depth":447,"text":960},{"id":987,"depth":301,"text":988,"children":1162},[1163,1164],{"id":994,"depth":447,"text":995},{"id":1036,"depth":447,"text":1037},{"id":1059,"depth":301,"text":1060,"children":1166},[1167],{"id":1074,"depth":447,"text":1075},"2025-01-15","md","https:\u002F\u002Fvueschool.io\u002F_ipx\u002Ff_webp&q_100&s_1200x1200\u002Fhttps:\u002F\u002Fvueschool.io\u002Fstorage\u002Fmedia\u002F02c8784f683de4262d21016a4ae714b8\u002FThe-Complete-Guide-to-Data-Fetching-in-Nuxt-01.png",{"author":1172},{"name":1173,"avatar":1174,"bio":1176,"social":1177},"Felipe Oliveira",{"src":1175},"https:\u002F\u002Fi.imgur.com\u002FywWj688.jpeg","Desenvolvedor Front-end especialista em Vue.js, Nuxt.js e TypeScript. Criador da Paper UI e apaixonado por design systems inovadores.",{"github":1120,"linkedin":1178},"https:\u002F\u002Flinkedin.com\u002Fin\u002Ffelipe-oliveira-dev",{"title":179,"description":181},"blog\u002Fnuxt-4-novidades-revolucionarias",[1182,790,287,1183],"nuxt","performance","Kran5QPG72bh6emMR0je4p5DD4PKzxj_yQcqWQhPnAI",[15,1186],{"title":191,"path":192,"stem":1187,"description":193,"children":-1},"blog\u002Fnuxt-ecosystem-futuro-desenvolvimento",1792609231896]