[{"data":1,"prerenderedAt":4573},["ShallowReactive",2],{"palette-projects":3,"palette-posts":177,"\u002Fblog\u002Fnuxt-performance-otimizacoes-avancadas":194,"\u002Fblog\u002Fnuxt-performance-otimizacoes-avancadas-surround":4568},[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":187,"body":196,"date":4550,"description":189,"extension":4551,"image":4552,"meta":4553,"navigation":11,"path":188,"seo":4561,"stem":4562,"tags":4563,"__hash__":4567},"blog\u002Fblog\u002Fnuxt-performance-otimizacoes-avancadas.md",{"type":197,"value":198,"toc":4496},"minimark",[199,212,217,222,250,254,274,278,282,606,610,723,727,731,889,893,1040,1044,1048,1622,1626,1721,1725,1729,1940,1944,2162,2166,2170,2508,2512,2593,2597,2601,2777,2781,2943,2947,2951,3145,3149,3279,3283,3287,3502,3506,3694,3698,3702,3747,3751,4010,4014,4018,4137,4141,4145,4209,4213,4217,4224,4228,4339,4343,4428,4432,4439,4461,4471,4474,4488,4493],[200,201,202,203,207,208,211],"p",{},"Após 6 anos desenvolvendo com Nuxt.js, aprendi que ",[204,205,206],"strong",{},"performance não é acidente"," - é resultado de decisões técnicas conscientes. Neste artigo, compartilho as otimizações que implementei em projetos reais e que resultaram em ",[204,209,210],{},"melhorias mensuráveis de 40%+ na velocidade",".",[213,214,216],"h2",{"id":215},"resultados-reais-dos-meus-projetos","📊 Resultados Reais dos Meus Projetos",[218,219,221],"h3",{"id":220},"projeto-fluxxi-sistema-de-gestão","Projeto Fluxxi (Sistema de Gestão)",[223,224,225,232,238,244],"ul",{},[226,227,228,231],"li",{},[204,229,230],{},"Lighthouse Performance",": 72 → 94 (+22 pontos)",[226,233,234,237],{},[204,235,236],{},"First Contentful Paint",": 2.1s → 1.2s (-43%)",[226,239,240,243],{},[204,241,242],{},"Largest Contentful Paint",": 3.8s → 2.1s (-45%)",[226,245,246,249],{},[204,247,248],{},"Cumulative Layout Shift",": 0.15 → 0.02 (-87%)",[218,251,253],{"id":252},"projeto-paper-ui-documentação","Projeto Paper UI (Documentação)",[223,255,256,262,268],{},[226,257,258,261],{},[204,259,260],{},"Bundle Size",": 1.2MB → 680KB (-43%)",[226,263,264,267],{},[204,265,266],{},"Build Time",": 4min 30s → 2min 45s (-39%)",[226,269,270,273],{},[204,271,272],{},"Cold Start",": 6.2s → 3.8s (-39%)",[213,275,277],{"id":276},"_1-bundle-splitting-inteligente","🚀 1. Bundle Splitting Inteligente",[218,279,281],{"id":280},"estratégia-de-code-splitting","Estratégia de Code Splitting",[283,284,289],"pre",{"className":285,"code":286,"language":287,"meta":288,"style":288},"language-typescript shiki shiki-themes material-theme-lighter github-light github-dark","\u002F\u002F nuxt.config.ts\nexport default defineNuxtConfig({\n  build: {\n    analyze: process.env.ANALYZE === 'true'\n  },\n  \n  nitro: {\n    rollupConfig: {\n      output: {\n        manualChunks: {\n          \u002F\u002F Vendor chunks otimizados\n          'vue-vendor': ['vue', 'vue-router'],\n          'nuxt-vendor': ['@nuxt\u002Fkit', '@nuxt\u002Fnitro'],\n          'ui-vendor': ['@headlessui\u002Fvue', '@heroicons\u002Fvue'],\n          'utils-vendor': ['lodash-es', 'date-fns']\n        }\n      }\n    }\n  }\n})\n","typescript","",[290,291,292,301,323,336,373,379,385,395,405,415,425,431,472,506,540,573,579,585,591,597],"code",{"__ignoreMap":288},[293,294,297],"span",{"class":295,"line":296},"line",1,[293,298,300],{"class":299},"sutJx","\u002F\u002F nuxt.config.ts\n",[293,302,304,308,311,315,319],{"class":295,"line":303},2,[293,305,307],{"class":306},"sVHd0","export",[293,309,310],{"class":306}," default",[293,312,314],{"class":313},"sGLFI"," defineNuxtConfig",[293,316,318],{"class":317},"su5hD","(",[293,320,322],{"class":321},"sP7_E","{\n",[293,324,326,330,333],{"class":295,"line":325},3,[293,327,329],{"class":328},"skxfh","  build",[293,331,332],{"class":321},":",[293,334,335],{"class":321}," {\n",[293,337,339,342,344,347,349,352,354,358,362,366,370],{"class":295,"line":338},4,[293,340,341],{"class":328},"    analyze",[293,343,332],{"class":321},[293,345,346],{"class":317}," process",[293,348,211],{"class":321},[293,350,351],{"class":317},"env",[293,353,211],{"class":321},[293,355,357],{"class":356},"s_hVV","ANALYZE",[293,359,361],{"class":360},"smGrS"," ===",[293,363,365],{"class":364},"sjJ54"," '",[293,367,369],{"class":368},"s_sjI","true",[293,371,372],{"class":364},"'\n",[293,374,376],{"class":295,"line":375},5,[293,377,378],{"class":321},"  },\n",[293,380,382],{"class":295,"line":381},6,[293,383,384],{"class":317},"  \n",[293,386,388,391,393],{"class":295,"line":387},7,[293,389,390],{"class":328},"  nitro",[293,392,332],{"class":321},[293,394,335],{"class":321},[293,396,398,401,403],{"class":295,"line":397},8,[293,399,400],{"class":328},"    rollupConfig",[293,402,332],{"class":321},[293,404,335],{"class":321},[293,406,408,411,413],{"class":295,"line":407},9,[293,409,410],{"class":328},"      output",[293,412,332],{"class":321},[293,414,335],{"class":321},[293,416,418,421,423],{"class":295,"line":417},10,[293,419,420],{"class":328},"        manualChunks",[293,422,332],{"class":321},[293,424,335],{"class":321},[293,426,428],{"class":295,"line":427},11,[293,429,430],{"class":299},"          \u002F\u002F Vendor chunks otimizados\n",[293,432,434,437,441,444,446,449,451,454,456,459,461,464,466,469],{"class":295,"line":433},12,[293,435,436],{"class":364},"          '",[293,438,440],{"class":439},"sZUrc","vue-vendor",[293,442,443],{"class":364},"'",[293,445,332],{"class":321},[293,447,448],{"class":317}," [",[293,450,443],{"class":364},[293,452,453],{"class":368},"vue",[293,455,443],{"class":364},[293,457,458],{"class":321},",",[293,460,365],{"class":364},[293,462,463],{"class":368},"vue-router",[293,465,443],{"class":364},[293,467,468],{"class":317},"]",[293,470,471],{"class":321},",\n",[293,473,475,477,480,482,484,486,488,491,493,495,497,500,502,504],{"class":295,"line":474},13,[293,476,436],{"class":364},[293,478,479],{"class":439},"nuxt-vendor",[293,481,443],{"class":364},[293,483,332],{"class":321},[293,485,448],{"class":317},[293,487,443],{"class":364},[293,489,490],{"class":368},"@nuxt\u002Fkit",[293,492,443],{"class":364},[293,494,458],{"class":321},[293,496,365],{"class":364},[293,498,499],{"class":368},"@nuxt\u002Fnitro",[293,501,443],{"class":364},[293,503,468],{"class":317},[293,505,471],{"class":321},[293,507,509,511,514,516,518,520,522,525,527,529,531,534,536,538],{"class":295,"line":508},14,[293,510,436],{"class":364},[293,512,513],{"class":439},"ui-vendor",[293,515,443],{"class":364},[293,517,332],{"class":321},[293,519,448],{"class":317},[293,521,443],{"class":364},[293,523,524],{"class":368},"@headlessui\u002Fvue",[293,526,443],{"class":364},[293,528,458],{"class":321},[293,530,365],{"class":364},[293,532,533],{"class":368},"@heroicons\u002Fvue",[293,535,443],{"class":364},[293,537,468],{"class":317},[293,539,471],{"class":321},[293,541,543,545,548,550,552,554,556,559,561,563,565,568,570],{"class":295,"line":542},15,[293,544,436],{"class":364},[293,546,547],{"class":439},"utils-vendor",[293,549,443],{"class":364},[293,551,332],{"class":321},[293,553,448],{"class":317},[293,555,443],{"class":364},[293,557,558],{"class":368},"lodash-es",[293,560,443],{"class":364},[293,562,458],{"class":321},[293,564,365],{"class":364},[293,566,567],{"class":368},"date-fns",[293,569,443],{"class":364},[293,571,572],{"class":317},"]\n",[293,574,576],{"class":295,"line":575},16,[293,577,578],{"class":321},"        }\n",[293,580,582],{"class":295,"line":581},17,[293,583,584],{"class":321},"      }\n",[293,586,588],{"class":295,"line":587},18,[293,589,590],{"class":321},"    }\n",[293,592,594],{"class":295,"line":593},19,[293,595,596],{"class":321},"  }\n",[293,598,600,603],{"class":295,"line":599},20,[293,601,602],{"class":321},"}",[293,604,605],{"class":317},")\n",[218,607,609],{"id":608},"resultado-prático","Resultado Prático",[283,611,615],{"className":612,"code":613,"language":614,"meta":288,"style":288},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","# Antes da otimização\ndist\u002F_nuxt\u002F\n├── index.js (1.2MB)\n├── vendor.js (800KB)\n└── app.js (400KB)\n\n# Depois da otimização  \ndist\u002F_nuxt\u002F\n├── index.js (200KB)\n├── vue-vendor.js (180KB)\n├── nuxt-vendor.js (120KB)\n├── ui-vendor.js (80KB)\n└── utils-vendor.js (60KB)\n","bash",[290,616,617,622,628,639,649,660,665,670,674,683,693,703,713],{"__ignoreMap":288},[293,618,619],{"class":295,"line":296},[293,620,621],{"class":299},"# Antes da otimização\n",[293,623,624],{"class":295,"line":303},[293,625,627],{"class":626},"sbgvK","dist\u002F_nuxt\u002F\n",[293,629,630,633,636],{"class":295,"line":325},[293,631,632],{"class":626},"├──",[293,634,635],{"class":368}," index.js",[293,637,638],{"class":317}," (1.2MB)\n",[293,640,641,643,646],{"class":295,"line":338},[293,642,632],{"class":626},[293,644,645],{"class":368}," vendor.js",[293,647,648],{"class":317}," (800KB)\n",[293,650,651,654,657],{"class":295,"line":375},[293,652,653],{"class":626},"└──",[293,655,656],{"class":368}," app.js",[293,658,659],{"class":317}," (400KB)\n",[293,661,662],{"class":295,"line":381},[293,663,664],{"emptyLinePlaceholder":11},"\n",[293,666,667],{"class":295,"line":387},[293,668,669],{"class":299},"# Depois da otimização  \n",[293,671,672],{"class":295,"line":397},[293,673,627],{"class":626},[293,675,676,678,680],{"class":295,"line":407},[293,677,632],{"class":626},[293,679,635],{"class":368},[293,681,682],{"class":317}," (200KB)\n",[293,684,685,687,690],{"class":295,"line":417},[293,686,632],{"class":626},[293,688,689],{"class":368}," vue-vendor.js",[293,691,692],{"class":317}," (180KB)\n",[293,694,695,697,700],{"class":295,"line":427},[293,696,632],{"class":626},[293,698,699],{"class":368}," nuxt-vendor.js",[293,701,702],{"class":317}," (120KB)\n",[293,704,705,707,710],{"class":295,"line":433},[293,706,632],{"class":626},[293,708,709],{"class":368}," ui-vendor.js",[293,711,712],{"class":317}," (80KB)\n",[293,714,715,717,720],{"class":295,"line":474},[293,716,653],{"class":626},[293,718,719],{"class":368}," utils-vendor.js",[293,721,722],{"class":317}," (60KB)\n",[213,724,726],{"id":725},"_2-lazy-loading-estratégico","🎯 2. Lazy Loading Estratégico",[218,728,730],{"id":729},"componentes-críticos-vs-não-críticos","Componentes Críticos vs Não-Críticos",[283,732,735],{"className":733,"code":734,"language":453,"meta":288,"style":288},"language-vue shiki shiki-themes material-theme-lighter github-light github-dark","\u003C!-- components\u002FCriticalComponents.vue -->\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003C!-- Componentes que aparecem acima da dobra -->\n    \u003CHeader \u002F>\n    \u003CHero \u002F>\n    \u003CNavigation \u002F>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003C!-- components\u002FNonCriticalComponents.vue -->\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003C!-- Componentes que aparecem abaixo da dobra -->\n    \u003CLazyFooter \u002F>\n    \u003CLazyTestimonials \u002F>\n    \u003CLazyNewsletter \u002F>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n",[290,736,737,742,754,764,769,780,789,798,807,816,820,825,833,841,846,855,864,873,881],{"__ignoreMap":288},[293,738,739],{"class":295,"line":296},[293,740,741],{"class":299},"\u003C!-- components\u002FCriticalComponents.vue -->\n",[293,743,744,747,751],{"class":295,"line":303},[293,745,746],{"class":321},"\u003C",[293,748,750],{"class":749},"sQzsp","template",[293,752,753],{"class":321},">\n",[293,755,756,759,762],{"class":295,"line":325},[293,757,758],{"class":321},"  \u003C",[293,760,761],{"class":749},"div",[293,763,753],{"class":321},[293,765,766],{"class":295,"line":338},[293,767,768],{"class":299},"    \u003C!-- Componentes que aparecem acima da dobra -->\n",[293,770,771,774,777],{"class":295,"line":375},[293,772,773],{"class":321},"    \u003C",[293,775,776],{"class":749},"Header",[293,778,779],{"class":321}," \u002F>\n",[293,781,782,784,787],{"class":295,"line":381},[293,783,773],{"class":321},[293,785,786],{"class":749},"Hero",[293,788,779],{"class":321},[293,790,791,793,796],{"class":295,"line":387},[293,792,773],{"class":321},[293,794,795],{"class":749},"Navigation",[293,797,779],{"class":321},[293,799,800,803,805],{"class":295,"line":397},[293,801,802],{"class":321},"  \u003C\u002F",[293,804,761],{"class":749},[293,806,753],{"class":321},[293,808,809,812,814],{"class":295,"line":407},[293,810,811],{"class":321},"\u003C\u002F",[293,813,750],{"class":749},[293,815,753],{"class":321},[293,817,818],{"class":295,"line":417},[293,819,664],{"emptyLinePlaceholder":11},[293,821,822],{"class":295,"line":427},[293,823,824],{"class":299},"\u003C!-- components\u002FNonCriticalComponents.vue -->\n",[293,826,827,829,831],{"class":295,"line":433},[293,828,746],{"class":321},[293,830,750],{"class":749},[293,832,753],{"class":321},[293,834,835,837,839],{"class":295,"line":474},[293,836,758],{"class":321},[293,838,761],{"class":749},[293,840,753],{"class":321},[293,842,843],{"class":295,"line":508},[293,844,845],{"class":299},"    \u003C!-- Componentes que aparecem abaixo da dobra -->\n",[293,847,848,850,853],{"class":295,"line":542},[293,849,773],{"class":321},[293,851,852],{"class":749},"LazyFooter",[293,854,779],{"class":321},[293,856,857,859,862],{"class":295,"line":575},[293,858,773],{"class":321},[293,860,861],{"class":749},"LazyTestimonials",[293,863,779],{"class":321},[293,865,866,868,871],{"class":295,"line":581},[293,867,773],{"class":321},[293,869,870],{"class":749},"LazyNewsletter",[293,872,779],{"class":321},[293,874,875,877,879],{"class":295,"line":587},[293,876,802],{"class":321},[293,878,761],{"class":749},[293,880,753],{"class":321},[293,882,883,885,887],{"class":295,"line":593},[293,884,811],{"class":321},[293,886,750],{"class":749},[293,888,753],{"class":321},[218,890,892],{"id":891},"lazy-loading-com-suspense","Lazy Loading com Suspense",[283,894,896],{"className":733,"code":895,"language":453,"meta":288,"style":288},"\u003Ctemplate>\n  \u003Cdiv>\n    \u003CSuspense>\n      \u003Ctemplate #default>\n        \u003CLazyHeavyComponent \u002F>\n      \u003C\u002Ftemplate>\n      \u003Ctemplate #fallback>\n        \u003Cdiv class=\"skeleton-loader\">\n          \u003C!-- Skeleton loading state -->\n        \u003C\u002Fdiv>\n      \u003C\u002Ftemplate>\n    \u003C\u002FSuspense>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n",[290,897,898,906,914,923,939,949,958,971,993,998,1007,1015,1024,1032],{"__ignoreMap":288},[293,899,900,902,904],{"class":295,"line":296},[293,901,746],{"class":321},[293,903,750],{"class":749},[293,905,753],{"class":321},[293,907,908,910,912],{"class":295,"line":303},[293,909,758],{"class":321},[293,911,761],{"class":749},[293,913,753],{"class":321},[293,915,916,918,921],{"class":295,"line":325},[293,917,773],{"class":321},[293,919,920],{"class":749},"Suspense",[293,922,753],{"class":321},[293,924,925,928,930,933,937],{"class":295,"line":338},[293,926,927],{"class":321},"      \u003C",[293,929,750],{"class":749},[293,931,932],{"class":321}," #",[293,934,936],{"class":935},"s9AJx","default",[293,938,753],{"class":321},[293,940,941,944,947],{"class":295,"line":375},[293,942,943],{"class":321},"        \u003C",[293,945,946],{"class":749},"LazyHeavyComponent",[293,948,779],{"class":321},[293,950,951,954,956],{"class":295,"line":381},[293,952,953],{"class":321},"      \u003C\u002F",[293,955,750],{"class":749},[293,957,753],{"class":321},[293,959,960,962,964,966,969],{"class":295,"line":387},[293,961,927],{"class":321},[293,963,750],{"class":749},[293,965,932],{"class":321},[293,967,968],{"class":935},"fallback",[293,970,753],{"class":321},[293,972,973,975,977,980,983,986,989,991],{"class":295,"line":397},[293,974,943],{"class":321},[293,976,761],{"class":749},[293,978,979],{"class":935}," class",[293,981,982],{"class":321},"=",[293,984,985],{"class":364},"\"",[293,987,988],{"class":368},"skeleton-loader",[293,990,985],{"class":364},[293,992,753],{"class":321},[293,994,995],{"class":295,"line":407},[293,996,997],{"class":299},"          \u003C!-- Skeleton loading state -->\n",[293,999,1000,1003,1005],{"class":295,"line":417},[293,1001,1002],{"class":321},"        \u003C\u002F",[293,1004,761],{"class":749},[293,1006,753],{"class":321},[293,1008,1009,1011,1013],{"class":295,"line":427},[293,1010,953],{"class":321},[293,1012,750],{"class":749},[293,1014,753],{"class":321},[293,1016,1017,1020,1022],{"class":295,"line":433},[293,1018,1019],{"class":321},"    \u003C\u002F",[293,1021,920],{"class":749},[293,1023,753],{"class":321},[293,1025,1026,1028,1030],{"class":295,"line":474},[293,1027,802],{"class":321},[293,1029,761],{"class":749},[293,1031,753],{"class":321},[293,1033,1034,1036,1038],{"class":295,"line":508},[293,1035,811],{"class":321},[293,1037,750],{"class":749},[293,1039,753],{"class":321},[213,1041,1043],{"id":1042},"_3-otimização-de-imagens-avançada","⚡ 3. Otimização de Imagens Avançada",[218,1045,1047],{"id":1046},"sistema-de-imagens-inteligente","Sistema de Imagens Inteligente",[283,1049,1051],{"className":733,"code":1050,"language":453,"meta":288,"style":288},"\u003C!-- components\u002FOptimizedImage.vue -->\n\u003Ctemplate>\n  \u003Cpicture>\n    \u003Csource \n      :srcset=\"webpSrc\" \n      type=\"image\u002Fwebp\"\n    \u002F>\n    \u003Csource \n      :srcset=\"avifSrc\" \n      type=\"image\u002Favif\"\n    \u002F>\n    \u003Cimg\n      :src=\"fallbackSrc\"\n      :alt=\"alt\"\n      :width=\"width\"\n      :height=\"height\"\n      loading=\"lazy\"\n      decoding=\"async\"\n      class=\"optimized-image\"\n    \u002F>\n  \u003C\u002Fpicture>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup>\nconst props = defineProps({\n  src: String,\n  alt: String,\n  width: Number,\n  height: Number\n})\n\n\u002F\u002F Geração automática de múltiplos formatos\nconst webpSrc = computed(() => \n  `\u002Fimages\u002Fwebp\u002F${props.src.replace(\u002F\\.[^\u002F.]+$\u002F, '.webp')}`\n)\nconst avifSrc = computed(() => \n  `\u002Fimages\u002Favif\u002F${props.src.replace(\u002F\\.[^\u002F.]+$\u002F, '.avif')}`\n)\nconst fallbackSrc = computed(() => \n  `\u002Fimages\u002F${props.src}`\n)\n\u003C\u002Fscript>\n",[290,1052,1053,1058,1066,1075,1085,1101,1116,1121,1129,1144,1157,1161,1168,1182,1196,1210,1224,1238,1252,1266,1270,1279,1288,1293,1306,1326,1339,1351,1364,1375,1382,1387,1393,1416,1487,1492,1512,1565,1570,1590,1608,1613],{"__ignoreMap":288},[293,1054,1055],{"class":295,"line":296},[293,1056,1057],{"class":299},"\u003C!-- components\u002FOptimizedImage.vue -->\n",[293,1059,1060,1062,1064],{"class":295,"line":303},[293,1061,746],{"class":321},[293,1063,750],{"class":749},[293,1065,753],{"class":321},[293,1067,1068,1070,1073],{"class":295,"line":325},[293,1069,758],{"class":321},[293,1071,1072],{"class":749},"picture",[293,1074,753],{"class":321},[293,1076,1077,1079,1082],{"class":295,"line":338},[293,1078,773],{"class":321},[293,1080,1081],{"class":749},"source",[293,1083,1084],{"class":321}," \n",[293,1086,1087,1090,1092,1094,1097,1099],{"class":295,"line":375},[293,1088,1089],{"class":935},"      :srcset",[293,1091,982],{"class":321},[293,1093,985],{"class":364},[293,1095,1096],{"class":368},"webpSrc",[293,1098,985],{"class":364},[293,1100,1084],{"class":321},[293,1102,1103,1106,1108,1110,1113],{"class":295,"line":381},[293,1104,1105],{"class":935},"      type",[293,1107,982],{"class":321},[293,1109,985],{"class":364},[293,1111,1112],{"class":368},"image\u002Fwebp",[293,1114,1115],{"class":364},"\"\n",[293,1117,1118],{"class":295,"line":387},[293,1119,1120],{"class":321},"    \u002F>\n",[293,1122,1123,1125,1127],{"class":295,"line":397},[293,1124,773],{"class":321},[293,1126,1081],{"class":749},[293,1128,1084],{"class":321},[293,1130,1131,1133,1135,1137,1140,1142],{"class":295,"line":407},[293,1132,1089],{"class":935},[293,1134,982],{"class":321},[293,1136,985],{"class":364},[293,1138,1139],{"class":368},"avifSrc",[293,1141,985],{"class":364},[293,1143,1084],{"class":321},[293,1145,1146,1148,1150,1152,1155],{"class":295,"line":417},[293,1147,1105],{"class":935},[293,1149,982],{"class":321},[293,1151,985],{"class":364},[293,1153,1154],{"class":368},"image\u002Favif",[293,1156,1115],{"class":364},[293,1158,1159],{"class":295,"line":427},[293,1160,1120],{"class":321},[293,1162,1163,1165],{"class":295,"line":433},[293,1164,773],{"class":321},[293,1166,1167],{"class":749},"img\n",[293,1169,1170,1173,1175,1177,1180],{"class":295,"line":474},[293,1171,1172],{"class":935},"      :src",[293,1174,982],{"class":321},[293,1176,985],{"class":364},[293,1178,1179],{"class":368},"fallbackSrc",[293,1181,1115],{"class":364},[293,1183,1184,1187,1189,1191,1194],{"class":295,"line":508},[293,1185,1186],{"class":935},"      :alt",[293,1188,982],{"class":321},[293,1190,985],{"class":364},[293,1192,1193],{"class":368},"alt",[293,1195,1115],{"class":364},[293,1197,1198,1201,1203,1205,1208],{"class":295,"line":542},[293,1199,1200],{"class":935},"      :width",[293,1202,982],{"class":321},[293,1204,985],{"class":364},[293,1206,1207],{"class":368},"width",[293,1209,1115],{"class":364},[293,1211,1212,1215,1217,1219,1222],{"class":295,"line":575},[293,1213,1214],{"class":935},"      :height",[293,1216,982],{"class":321},[293,1218,985],{"class":364},[293,1220,1221],{"class":368},"height",[293,1223,1115],{"class":364},[293,1225,1226,1229,1231,1233,1236],{"class":295,"line":581},[293,1227,1228],{"class":935},"      loading",[293,1230,982],{"class":321},[293,1232,985],{"class":364},[293,1234,1235],{"class":368},"lazy",[293,1237,1115],{"class":364},[293,1239,1240,1243,1245,1247,1250],{"class":295,"line":587},[293,1241,1242],{"class":935},"      decoding",[293,1244,982],{"class":321},[293,1246,985],{"class":364},[293,1248,1249],{"class":368},"async",[293,1251,1115],{"class":364},[293,1253,1254,1257,1259,1261,1264],{"class":295,"line":593},[293,1255,1256],{"class":935},"      class",[293,1258,982],{"class":321},[293,1260,985],{"class":364},[293,1262,1263],{"class":368},"optimized-image",[293,1265,1115],{"class":364},[293,1267,1268],{"class":295,"line":599},[293,1269,1120],{"class":321},[293,1271,1273,1275,1277],{"class":295,"line":1272},21,[293,1274,802],{"class":321},[293,1276,1072],{"class":749},[293,1278,753],{"class":321},[293,1280,1282,1284,1286],{"class":295,"line":1281},22,[293,1283,811],{"class":321},[293,1285,750],{"class":749},[293,1287,753],{"class":321},[293,1289,1291],{"class":295,"line":1290},23,[293,1292,664],{"emptyLinePlaceholder":11},[293,1294,1296,1298,1301,1304],{"class":295,"line":1295},24,[293,1297,746],{"class":321},[293,1299,1300],{"class":749},"script",[293,1302,1303],{"class":935}," setup",[293,1305,753],{"class":321},[293,1307,1309,1313,1316,1319,1322,1324],{"class":295,"line":1308},25,[293,1310,1312],{"class":1311},"sbsja","const",[293,1314,1315],{"class":356}," props",[293,1317,1318],{"class":360}," =",[293,1320,1321],{"class":313}," defineProps",[293,1323,318],{"class":317},[293,1325,322],{"class":321},[293,1327,1329,1332,1334,1337],{"class":295,"line":1328},26,[293,1330,1331],{"class":328},"  src",[293,1333,332],{"class":321},[293,1335,1336],{"class":317}," String",[293,1338,471],{"class":321},[293,1340,1342,1345,1347,1349],{"class":295,"line":1341},27,[293,1343,1344],{"class":328},"  alt",[293,1346,332],{"class":321},[293,1348,1336],{"class":317},[293,1350,471],{"class":321},[293,1352,1354,1357,1359,1362],{"class":295,"line":1353},28,[293,1355,1356],{"class":328},"  width",[293,1358,332],{"class":321},[293,1360,1361],{"class":317}," Number",[293,1363,471],{"class":321},[293,1365,1367,1370,1372],{"class":295,"line":1366},29,[293,1368,1369],{"class":328},"  height",[293,1371,332],{"class":321},[293,1373,1374],{"class":317}," Number\n",[293,1376,1378,1380],{"class":295,"line":1377},30,[293,1379,602],{"class":321},[293,1381,605],{"class":317},[293,1383,1385],{"class":295,"line":1384},31,[293,1386,664],{"emptyLinePlaceholder":11},[293,1388,1390],{"class":295,"line":1389},32,[293,1391,1392],{"class":299},"\u002F\u002F Geração automática de múltiplos formatos\n",[293,1394,1396,1398,1401,1403,1406,1408,1411,1414],{"class":295,"line":1395},33,[293,1397,1312],{"class":1311},[293,1399,1400],{"class":356}," webpSrc",[293,1402,1318],{"class":360},[293,1404,1405],{"class":313}," computed",[293,1407,318],{"class":317},[293,1409,1410],{"class":321},"()",[293,1412,1413],{"class":1311}," =>",[293,1415,1084],{"class":317},[293,1417,1419,1422,1425,1428,1431,1433,1436,1438,1441,1444,1447,1451,1455,1458,1462,1464,1467,1470,1472,1474,1476,1479,1481,1484],{"class":295,"line":1418},34,[293,1420,1421],{"class":364},"  `",[293,1423,1424],{"class":368},"\u002Fimages\u002Fwebp\u002F",[293,1426,1427],{"class":364},"${",[293,1429,1430],{"class":317},"props",[293,1432,211],{"class":364},[293,1434,1435],{"class":317},"src",[293,1437,211],{"class":364},[293,1439,1440],{"class":313},"replace",[293,1442,318],{"class":1443},"sfo-9",[293,1445,1446],{"class":364},"\u002F",[293,1448,1450],{"class":1449},"sjYin","\\.",[293,1452,1454],{"class":1453},"s39Yj","[",[293,1456,1457],{"class":360},"^",[293,1459,1461],{"class":1460},"stzsN","\u002F.",[293,1463,468],{"class":1453},[293,1465,1466],{"class":360},"+",[293,1468,1469],{"class":306},"$",[293,1471,1446],{"class":364},[293,1473,458],{"class":364},[293,1475,365],{"class":364},[293,1477,1478],{"class":368},".webp",[293,1480,443],{"class":364},[293,1482,1483],{"class":1443},")",[293,1485,1486],{"class":364},"}`\n",[293,1488,1490],{"class":295,"line":1489},35,[293,1491,605],{"class":317},[293,1493,1495,1497,1500,1502,1504,1506,1508,1510],{"class":295,"line":1494},36,[293,1496,1312],{"class":1311},[293,1498,1499],{"class":356}," avifSrc",[293,1501,1318],{"class":360},[293,1503,1405],{"class":313},[293,1505,318],{"class":317},[293,1507,1410],{"class":321},[293,1509,1413],{"class":1311},[293,1511,1084],{"class":317},[293,1513,1515,1517,1520,1522,1524,1526,1528,1530,1532,1534,1536,1538,1540,1542,1544,1546,1548,1550,1552,1554,1556,1559,1561,1563],{"class":295,"line":1514},37,[293,1516,1421],{"class":364},[293,1518,1519],{"class":368},"\u002Fimages\u002Favif\u002F",[293,1521,1427],{"class":364},[293,1523,1430],{"class":317},[293,1525,211],{"class":364},[293,1527,1435],{"class":317},[293,1529,211],{"class":364},[293,1531,1440],{"class":313},[293,1533,318],{"class":1443},[293,1535,1446],{"class":364},[293,1537,1450],{"class":1449},[293,1539,1454],{"class":1453},[293,1541,1457],{"class":360},[293,1543,1461],{"class":1460},[293,1545,468],{"class":1453},[293,1547,1466],{"class":360},[293,1549,1469],{"class":306},[293,1551,1446],{"class":364},[293,1553,458],{"class":364},[293,1555,365],{"class":364},[293,1557,1558],{"class":368},".avif",[293,1560,443],{"class":364},[293,1562,1483],{"class":1443},[293,1564,1486],{"class":364},[293,1566,1568],{"class":295,"line":1567},38,[293,1569,605],{"class":317},[293,1571,1573,1575,1578,1580,1582,1584,1586,1588],{"class":295,"line":1572},39,[293,1574,1312],{"class":1311},[293,1576,1577],{"class":356}," fallbackSrc",[293,1579,1318],{"class":360},[293,1581,1405],{"class":313},[293,1583,318],{"class":317},[293,1585,1410],{"class":321},[293,1587,1413],{"class":1311},[293,1589,1084],{"class":317},[293,1591,1593,1595,1598,1600,1602,1604,1606],{"class":295,"line":1592},40,[293,1594,1421],{"class":364},[293,1596,1597],{"class":368},"\u002Fimages\u002F",[293,1599,1427],{"class":364},[293,1601,1430],{"class":317},[293,1603,211],{"class":364},[293,1605,1435],{"class":317},[293,1607,1486],{"class":364},[293,1609,1611],{"class":295,"line":1610},41,[293,1612,605],{"class":317},[293,1614,1616,1618,1620],{"class":295,"line":1615},42,[293,1617,811],{"class":321},[293,1619,1300],{"class":749},[293,1621,753],{"class":321},[218,1623,1625],{"id":1624},"resultado-mensurável","Resultado Mensurável",[283,1627,1629],{"className":285,"code":1628,"language":287,"meta":288,"style":288},"\u002F\u002F Antes: 2.3MB de imagens\n\u002F\u002F Depois: 680KB de imagens (-70%)\nconst imageOptimization = {\n  webp: '30% smaller than JPEG',\n  avif: '50% smaller than JPEG', \n  lazy: 'Load only visible images',\n  responsive: 'Multiple sizes for different screens'\n}\n",[290,1630,1631,1636,1641,1652,1668,1686,1702,1716],{"__ignoreMap":288},[293,1632,1633],{"class":295,"line":296},[293,1634,1635],{"class":299},"\u002F\u002F Antes: 2.3MB de imagens\n",[293,1637,1638],{"class":295,"line":303},[293,1639,1640],{"class":299},"\u002F\u002F Depois: 680KB de imagens (-70%)\n",[293,1642,1643,1645,1648,1650],{"class":295,"line":325},[293,1644,1312],{"class":1311},[293,1646,1647],{"class":356}," imageOptimization",[293,1649,1318],{"class":360},[293,1651,335],{"class":321},[293,1653,1654,1657,1659,1661,1664,1666],{"class":295,"line":338},[293,1655,1656],{"class":328},"  webp",[293,1658,332],{"class":321},[293,1660,365],{"class":364},[293,1662,1663],{"class":368},"30% smaller than JPEG",[293,1665,443],{"class":364},[293,1667,471],{"class":321},[293,1669,1670,1673,1675,1677,1680,1682,1684],{"class":295,"line":375},[293,1671,1672],{"class":328},"  avif",[293,1674,332],{"class":321},[293,1676,365],{"class":364},[293,1678,1679],{"class":368},"50% smaller than JPEG",[293,1681,443],{"class":364},[293,1683,458],{"class":321},[293,1685,1084],{"class":317},[293,1687,1688,1691,1693,1695,1698,1700],{"class":295,"line":381},[293,1689,1690],{"class":328},"  lazy",[293,1692,332],{"class":321},[293,1694,365],{"class":364},[293,1696,1697],{"class":368},"Load only visible images",[293,1699,443],{"class":364},[293,1701,471],{"class":321},[293,1703,1704,1707,1709,1711,1714],{"class":295,"line":387},[293,1705,1706],{"class":328},"  responsive",[293,1708,332],{"class":321},[293,1710,365],{"class":364},[293,1712,1713],{"class":368},"Multiple sizes for different screens",[293,1715,372],{"class":364},[293,1717,1718],{"class":295,"line":397},[293,1719,1720],{"class":321},"}\n",[213,1722,1724],{"id":1723},"_4-cache-strategy-inteligente","🔧 4. Cache Strategy Inteligente",[218,1726,1728],{"id":1727},"cache-em-múltiplas-camadas","Cache em Múltiplas Camadas",[283,1730,1732],{"className":285,"code":1731,"language":287,"meta":288,"style":288},"\u002F\u002F server\u002Fapi\u002Fcached-data.ts\nexport default defineCachedEventHandler(async (event) => {\n  const data = await $fetch('\u002Fexternal-api\u002Fdata')\n  \n  return {\n    data,\n    cached: true,\n    timestamp: Date.now()\n  }\n}, {\n  maxAge: 60 * 60 * 24, \u002F\u002F 24 horas\n  swr: true, \u002F\u002F Stale-While-Revalidate\n  getKey: (event) => `cached-data-${event.context.params.id}`\n})\n",[290,1733,1734,1739,1765,1792,1796,1803,1810,1823,1841,1845,1852,1878,1892,1934],{"__ignoreMap":288},[293,1735,1736],{"class":295,"line":296},[293,1737,1738],{"class":299},"\u002F\u002F server\u002Fapi\u002Fcached-data.ts\n",[293,1740,1741,1743,1745,1748,1750,1752,1755,1759,1761,1763],{"class":295,"line":303},[293,1742,307],{"class":306},[293,1744,310],{"class":306},[293,1746,1747],{"class":313}," defineCachedEventHandler",[293,1749,318],{"class":317},[293,1751,1249],{"class":1311},[293,1753,1754],{"class":321}," (",[293,1756,1758],{"class":1757},"s99_P","event",[293,1760,1483],{"class":321},[293,1762,1413],{"class":1311},[293,1764,335],{"class":321},[293,1766,1767,1770,1773,1775,1778,1781,1783,1785,1788,1790],{"class":295,"line":325},[293,1768,1769],{"class":1311},"  const",[293,1771,1772],{"class":356}," data",[293,1774,1318],{"class":360},[293,1776,1777],{"class":306}," await",[293,1779,1780],{"class":313}," $fetch",[293,1782,318],{"class":328},[293,1784,443],{"class":364},[293,1786,1787],{"class":368},"\u002Fexternal-api\u002Fdata",[293,1789,443],{"class":364},[293,1791,605],{"class":328},[293,1793,1794],{"class":295,"line":338},[293,1795,384],{"class":328},[293,1797,1798,1801],{"class":295,"line":375},[293,1799,1800],{"class":306},"  return",[293,1802,335],{"class":321},[293,1804,1805,1808],{"class":295,"line":381},[293,1806,1807],{"class":317},"    data",[293,1809,471],{"class":321},[293,1811,1812,1815,1817,1821],{"class":295,"line":387},[293,1813,1814],{"class":328},"    cached",[293,1816,332],{"class":321},[293,1818,1820],{"class":1819},"syTEX"," true",[293,1822,471],{"class":321},[293,1824,1825,1828,1830,1833,1835,1838],{"class":295,"line":397},[293,1826,1827],{"class":328},"    timestamp",[293,1829,332],{"class":321},[293,1831,1832],{"class":317}," Date",[293,1834,211],{"class":321},[293,1836,1837],{"class":313},"now",[293,1839,1840],{"class":328},"()\n",[293,1842,1843],{"class":295,"line":407},[293,1844,596],{"class":321},[293,1846,1847,1850],{"class":295,"line":417},[293,1848,1849],{"class":321},"},",[293,1851,335],{"class":321},[293,1853,1854,1857,1859,1863,1866,1868,1870,1873,1875],{"class":295,"line":427},[293,1855,1856],{"class":328},"  maxAge",[293,1858,332],{"class":321},[293,1860,1862],{"class":1861},"srdBf"," 60",[293,1864,1865],{"class":360}," *",[293,1867,1862],{"class":1861},[293,1869,1865],{"class":360},[293,1871,1872],{"class":1861}," 24",[293,1874,458],{"class":321},[293,1876,1877],{"class":299}," \u002F\u002F 24 horas\n",[293,1879,1880,1883,1885,1887,1889],{"class":295,"line":433},[293,1881,1882],{"class":328},"  swr",[293,1884,332],{"class":321},[293,1886,1820],{"class":1819},[293,1888,458],{"class":321},[293,1890,1891],{"class":299}," \u002F\u002F Stale-While-Revalidate\n",[293,1893,1894,1897,1899,1901,1903,1905,1907,1910,1913,1915,1917,1919,1922,1924,1927,1929,1932],{"class":295,"line":474},[293,1895,1896],{"class":313},"  getKey",[293,1898,332],{"class":321},[293,1900,1754],{"class":321},[293,1902,1758],{"class":1757},[293,1904,1483],{"class":321},[293,1906,1413],{"class":1311},[293,1908,1909],{"class":364}," `",[293,1911,1912],{"class":368},"cached-data-",[293,1914,1427],{"class":364},[293,1916,1758],{"class":317},[293,1918,211],{"class":364},[293,1920,1921],{"class":317},"context",[293,1923,211],{"class":364},[293,1925,1926],{"class":317},"params",[293,1928,211],{"class":364},[293,1930,1931],{"class":317},"id",[293,1933,1486],{"class":364},[293,1935,1936,1938],{"class":295,"line":508},[293,1937,602],{"class":321},[293,1939,605],{"class":317},[218,1941,1943],{"id":1942},"cache-de-componentes","Cache de Componentes",[283,1945,1947],{"className":733,"code":1946,"language":453,"meta":288,"style":288},"\u003C!-- components\u002FCachedComponent.vue -->\n\u003Ctemplate>\n  \u003Cdiv v-if=\"data\">\n    {{ data }}\n  \u003C\u002Fdiv>\n  \u003Cdiv v-else>\n    Loading...\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup>\n\u002F\u002F Cache automático por 1 hora\nconst { data } = await useFetch('\u002Fapi\u002Fexpensive-data', {\n  key: 'expensive-data',\n  default: () => null,\n  server: false, \u002F\u002F Client-side apenas\n  transform: (data) => data.result\n})\n\u003C\u002Fscript>\n",[290,1948,1949,1954,1962,1982,1987,1995,2006,2011,2019,2027,2031,2041,2046,2078,2094,2111,2126,2148,2154],{"__ignoreMap":288},[293,1950,1951],{"class":295,"line":296},[293,1952,1953],{"class":299},"\u003C!-- components\u002FCachedComponent.vue -->\n",[293,1955,1956,1958,1960],{"class":295,"line":303},[293,1957,746],{"class":321},[293,1959,750],{"class":749},[293,1961,753],{"class":321},[293,1963,1964,1966,1968,1971,1973,1975,1978,1980],{"class":295,"line":325},[293,1965,758],{"class":321},[293,1967,761],{"class":749},[293,1969,1970],{"class":935}," v-if",[293,1972,982],{"class":321},[293,1974,985],{"class":364},[293,1976,1977],{"class":368},"data",[293,1979,985],{"class":364},[293,1981,753],{"class":321},[293,1983,1984],{"class":295,"line":338},[293,1985,1986],{"class":317},"    {{ data }}\n",[293,1988,1989,1991,1993],{"class":295,"line":375},[293,1990,802],{"class":321},[293,1992,761],{"class":749},[293,1994,753],{"class":321},[293,1996,1997,1999,2001,2004],{"class":295,"line":381},[293,1998,758],{"class":321},[293,2000,761],{"class":749},[293,2002,2003],{"class":935}," v-else",[293,2005,753],{"class":321},[293,2007,2008],{"class":295,"line":387},[293,2009,2010],{"class":317},"    Loading...\n",[293,2012,2013,2015,2017],{"class":295,"line":397},[293,2014,802],{"class":321},[293,2016,761],{"class":749},[293,2018,753],{"class":321},[293,2020,2021,2023,2025],{"class":295,"line":407},[293,2022,811],{"class":321},[293,2024,750],{"class":749},[293,2026,753],{"class":321},[293,2028,2029],{"class":295,"line":417},[293,2030,664],{"emptyLinePlaceholder":11},[293,2032,2033,2035,2037,2039],{"class":295,"line":427},[293,2034,746],{"class":321},[293,2036,1300],{"class":749},[293,2038,1303],{"class":935},[293,2040,753],{"class":321},[293,2042,2043],{"class":295,"line":433},[293,2044,2045],{"class":299},"\u002F\u002F Cache automático por 1 hora\n",[293,2047,2048,2050,2053,2055,2058,2060,2062,2065,2067,2069,2072,2074,2076],{"class":295,"line":474},[293,2049,1312],{"class":1311},[293,2051,2052],{"class":321}," {",[293,2054,1772],{"class":356},[293,2056,2057],{"class":321}," }",[293,2059,1318],{"class":360},[293,2061,1777],{"class":306},[293,2063,2064],{"class":313}," useFetch",[293,2066,318],{"class":317},[293,2068,443],{"class":364},[293,2070,2071],{"class":368},"\u002Fapi\u002Fexpensive-data",[293,2073,443],{"class":364},[293,2075,458],{"class":321},[293,2077,335],{"class":321},[293,2079,2080,2083,2085,2087,2090,2092],{"class":295,"line":508},[293,2081,2082],{"class":328},"  key",[293,2084,332],{"class":321},[293,2086,365],{"class":364},[293,2088,2089],{"class":368},"expensive-data",[293,2091,443],{"class":364},[293,2093,471],{"class":321},[293,2095,2096,2099,2101,2104,2106,2109],{"class":295,"line":542},[293,2097,2098],{"class":313},"  default",[293,2100,332],{"class":321},[293,2102,2103],{"class":321}," ()",[293,2105,1413],{"class":1311},[293,2107,2108],{"class":1453}," null",[293,2110,471],{"class":321},[293,2112,2113,2116,2118,2121,2123],{"class":295,"line":575},[293,2114,2115],{"class":328},"  server",[293,2117,332],{"class":321},[293,2119,2120],{"class":1819}," false",[293,2122,458],{"class":321},[293,2124,2125],{"class":299}," \u002F\u002F Client-side apenas\n",[293,2127,2128,2131,2133,2135,2137,2139,2141,2143,2145],{"class":295,"line":581},[293,2129,2130],{"class":313},"  transform",[293,2132,332],{"class":321},[293,2134,1754],{"class":321},[293,2136,1977],{"class":1757},[293,2138,1483],{"class":321},[293,2140,1413],{"class":1311},[293,2142,1772],{"class":317},[293,2144,211],{"class":321},[293,2146,2147],{"class":317},"result\n",[293,2149,2150,2152],{"class":295,"line":587},[293,2151,602],{"class":321},[293,2153,605],{"class":317},[293,2155,2156,2158,2160],{"class":295,"line":593},[293,2157,811],{"class":321},[293,2159,1300],{"class":749},[293,2161,753],{"class":321},[213,2163,2165],{"id":2164},"_5-pwa-e-service-worker-otimizado","📱 5. PWA e Service Worker Otimizado",[218,2167,2169],{"id":2168},"service-worker-inteligente","Service Worker Inteligente",[283,2171,2173],{"className":285,"code":2172,"language":287,"meta":288,"style":288},"\u002F\u002F public\u002Fsw.js\nconst CACHE_NAME = 'nuxt-app-v1'\nconst STATIC_ASSETS = [\n  '\u002F',\n  '\u002Fmanifest.json',\n  '\u002Ffavicon.ico'\n]\n\n\u002F\u002F Cache estratégico\nself.addEventListener('fetch', (event) => {\n  if (event.request.destination === 'image') {\n    event.respondWith(\n      caches.match(event.request).then(response => {\n        return response || fetch(event.request).then(fetchResponse => {\n          return caches.open(CACHE_NAME).then(cache => {\n            cache.put(event.request, fetchResponse.clone())\n            return fetchResponse\n          })\n        })\n      })\n    )\n  }\n})\n",[290,2174,2175,2180,2196,2208,2219,2230,2239,2243,2247,2252,2283,2316,2329,2363,2400,2433,2464,2472,2479,2486,2493,2498,2502],{"__ignoreMap":288},[293,2176,2177],{"class":295,"line":296},[293,2178,2179],{"class":299},"\u002F\u002F public\u002Fsw.js\n",[293,2181,2182,2184,2187,2189,2191,2194],{"class":295,"line":303},[293,2183,1312],{"class":1311},[293,2185,2186],{"class":356}," CACHE_NAME",[293,2188,1318],{"class":360},[293,2190,365],{"class":364},[293,2192,2193],{"class":368},"nuxt-app-v1",[293,2195,372],{"class":364},[293,2197,2198,2200,2203,2205],{"class":295,"line":325},[293,2199,1312],{"class":1311},[293,2201,2202],{"class":356}," STATIC_ASSETS",[293,2204,1318],{"class":360},[293,2206,2207],{"class":317}," [\n",[293,2209,2210,2213,2215,2217],{"class":295,"line":338},[293,2211,2212],{"class":364},"  '",[293,2214,1446],{"class":368},[293,2216,443],{"class":364},[293,2218,471],{"class":321},[293,2220,2221,2223,2226,2228],{"class":295,"line":375},[293,2222,2212],{"class":364},[293,2224,2225],{"class":368},"\u002Fmanifest.json",[293,2227,443],{"class":364},[293,2229,471],{"class":321},[293,2231,2232,2234,2237],{"class":295,"line":381},[293,2233,2212],{"class":364},[293,2235,2236],{"class":368},"\u002Ffavicon.ico",[293,2238,372],{"class":364},[293,2240,2241],{"class":295,"line":387},[293,2242,572],{"class":317},[293,2244,2245],{"class":295,"line":397},[293,2246,664],{"emptyLinePlaceholder":11},[293,2248,2249],{"class":295,"line":407},[293,2250,2251],{"class":299},"\u002F\u002F Cache estratégico\n",[293,2253,2254,2257,2259,2262,2264,2266,2269,2271,2273,2275,2277,2279,2281],{"class":295,"line":417},[293,2255,2256],{"class":317},"self",[293,2258,211],{"class":321},[293,2260,2261],{"class":313},"addEventListener",[293,2263,318],{"class":317},[293,2265,443],{"class":364},[293,2267,2268],{"class":368},"fetch",[293,2270,443],{"class":364},[293,2272,458],{"class":321},[293,2274,1754],{"class":321},[293,2276,1758],{"class":1757},[293,2278,1483],{"class":321},[293,2280,1413],{"class":1311},[293,2282,335],{"class":321},[293,2284,2285,2288,2290,2292,2294,2297,2299,2302,2304,2306,2309,2311,2314],{"class":295,"line":427},[293,2286,2287],{"class":306},"  if",[293,2289,1754],{"class":328},[293,2291,1758],{"class":317},[293,2293,211],{"class":321},[293,2295,2296],{"class":317},"request",[293,2298,211],{"class":321},[293,2300,2301],{"class":317},"destination",[293,2303,361],{"class":360},[293,2305,365],{"class":364},[293,2307,2308],{"class":368},"image",[293,2310,443],{"class":364},[293,2312,2313],{"class":328},") ",[293,2315,322],{"class":321},[293,2317,2318,2321,2323,2326],{"class":295,"line":433},[293,2319,2320],{"class":317},"    event",[293,2322,211],{"class":321},[293,2324,2325],{"class":313},"respondWith",[293,2327,2328],{"class":328},"(\n",[293,2330,2331,2334,2336,2339,2341,2343,2345,2347,2349,2351,2354,2356,2359,2361],{"class":295,"line":474},[293,2332,2333],{"class":317},"      caches",[293,2335,211],{"class":321},[293,2337,2338],{"class":313},"match",[293,2340,318],{"class":328},[293,2342,1758],{"class":317},[293,2344,211],{"class":321},[293,2346,2296],{"class":317},[293,2348,1483],{"class":328},[293,2350,211],{"class":321},[293,2352,2353],{"class":313},"then",[293,2355,318],{"class":328},[293,2357,2358],{"class":1757},"response",[293,2360,1413],{"class":1311},[293,2362,335],{"class":321},[293,2364,2365,2368,2371,2374,2377,2379,2381,2383,2385,2387,2389,2391,2393,2396,2398],{"class":295,"line":508},[293,2366,2367],{"class":306},"        return",[293,2369,2370],{"class":317}," response",[293,2372,2373],{"class":360}," ||",[293,2375,2376],{"class":313}," fetch",[293,2378,318],{"class":328},[293,2380,1758],{"class":317},[293,2382,211],{"class":321},[293,2384,2296],{"class":317},[293,2386,1483],{"class":328},[293,2388,211],{"class":321},[293,2390,2353],{"class":313},[293,2392,318],{"class":328},[293,2394,2395],{"class":1757},"fetchResponse",[293,2397,1413],{"class":1311},[293,2399,335],{"class":321},[293,2401,2402,2405,2408,2410,2413,2415,2418,2420,2422,2424,2426,2429,2431],{"class":295,"line":542},[293,2403,2404],{"class":306},"          return",[293,2406,2407],{"class":317}," caches",[293,2409,211],{"class":321},[293,2411,2412],{"class":313},"open",[293,2414,318],{"class":328},[293,2416,2417],{"class":356},"CACHE_NAME",[293,2419,1483],{"class":328},[293,2421,211],{"class":321},[293,2423,2353],{"class":313},[293,2425,318],{"class":328},[293,2427,2428],{"class":1757},"cache",[293,2430,1413],{"class":1311},[293,2432,335],{"class":321},[293,2434,2435,2438,2440,2443,2445,2447,2449,2451,2453,2456,2458,2461],{"class":295,"line":575},[293,2436,2437],{"class":317},"            cache",[293,2439,211],{"class":321},[293,2441,2442],{"class":313},"put",[293,2444,318],{"class":328},[293,2446,1758],{"class":317},[293,2448,211],{"class":321},[293,2450,2296],{"class":317},[293,2452,458],{"class":321},[293,2454,2455],{"class":317}," fetchResponse",[293,2457,211],{"class":321},[293,2459,2460],{"class":313},"clone",[293,2462,2463],{"class":328},"())\n",[293,2465,2466,2469],{"class":295,"line":581},[293,2467,2468],{"class":306},"            return",[293,2470,2471],{"class":317}," fetchResponse\n",[293,2473,2474,2477],{"class":295,"line":587},[293,2475,2476],{"class":321},"          }",[293,2478,605],{"class":328},[293,2480,2481,2484],{"class":295,"line":593},[293,2482,2483],{"class":321},"        }",[293,2485,605],{"class":328},[293,2487,2488,2491],{"class":295,"line":599},[293,2489,2490],{"class":321},"      }",[293,2492,605],{"class":328},[293,2494,2495],{"class":295,"line":1272},[293,2496,2497],{"class":328},"    )\n",[293,2499,2500],{"class":295,"line":1281},[293,2501,596],{"class":321},[293,2503,2504,2506],{"class":295,"line":1290},[293,2505,602],{"class":321},[293,2507,605],{"class":317},[218,2509,2511],{"id":2510},"resultado-pwa","Resultado PWA",[283,2513,2517],{"className":2514,"code":2515,"language":2516,"meta":288,"style":288},"language-json shiki shiki-themes material-theme-lighter github-light github-dark","\u002F\u002F Lighthouse PWA Score: 95+\n{\n  \"installable\": true,\n  \"offline\": true,\n  \"fast\": true,\n  \"responsive\": true\n}\n","json",[290,2518,2519,2524,2528,2545,2560,2575,2589],{"__ignoreMap":288},[293,2520,2521],{"class":295,"line":296},[293,2522,2523],{"class":299},"\u002F\u002F Lighthouse PWA Score: 95+\n",[293,2525,2526],{"class":295,"line":303},[293,2527,322],{"class":321},[293,2529,2530,2533,2537,2539,2541,2543],{"class":295,"line":325},[293,2531,2532],{"class":1453},"  \"",[293,2534,2536],{"class":2535},"sseR_","installable",[293,2538,985],{"class":1453},[293,2540,332],{"class":321},[293,2542,1820],{"class":1453},[293,2544,471],{"class":321},[293,2546,2547,2549,2552,2554,2556,2558],{"class":295,"line":338},[293,2548,2532],{"class":1453},[293,2550,2551],{"class":2535},"offline",[293,2553,985],{"class":1453},[293,2555,332],{"class":321},[293,2557,1820],{"class":1453},[293,2559,471],{"class":321},[293,2561,2562,2564,2567,2569,2571,2573],{"class":295,"line":375},[293,2563,2532],{"class":1453},[293,2565,2566],{"class":2535},"fast",[293,2568,985],{"class":1453},[293,2570,332],{"class":321},[293,2572,1820],{"class":1453},[293,2574,471],{"class":321},[293,2576,2577,2579,2582,2584,2586],{"class":295,"line":381},[293,2578,2532],{"class":1453},[293,2580,2581],{"class":2535},"responsive",[293,2583,985],{"class":1453},[293,2585,332],{"class":321},[293,2587,2588],{"class":1453}," true\n",[293,2590,2591],{"class":295,"line":387},[293,2592,1720],{"class":321},[213,2594,2596],{"id":2595},"_6-css-e-styling-otimizado","🎨 6. CSS e Styling Otimizado",[218,2598,2600],{"id":2599},"critical-css-inline","Critical CSS Inline",[283,2602,2604],{"className":733,"code":2603,"language":453,"meta":288,"style":288},"\u003C!-- layouts\u002Fdefault.vue -->\n\u003Ctemplate>\n  \u003CHtml>\n    \u003CHead>\n      \u003C!-- Critical CSS inline -->\n      \u003Cstyle v-html=\"criticalCSS\">\u003C\u002Fstyle>\n    \u003C\u002FHead>\n    \u003CBody>\n      \u003CNuxtPage \u002F>\n    \u003C\u002FBody>\n  \u003C\u002FHtml>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup>\n\u002F\u002F Critical CSS para above-the-fold\nconst criticalCSS = `\n  .header { \u002F* estilos críticos *\u002F }\n  .hero { \u002F* estilos críticos *\u002F }\n  .navigation { \u002F* estilos críticos *\u002F }\n`\n\u003C\u002Fscript>\n",[290,2605,2606,2611,2619,2628,2637,2642,2668,2676,2685,2694,2702,2710,2718,2722,2732,2737,2749,2754,2759,2764,2769],{"__ignoreMap":288},[293,2607,2608],{"class":295,"line":296},[293,2609,2610],{"class":299},"\u003C!-- layouts\u002Fdefault.vue -->\n",[293,2612,2613,2615,2617],{"class":295,"line":303},[293,2614,746],{"class":321},[293,2616,750],{"class":749},[293,2618,753],{"class":321},[293,2620,2621,2623,2626],{"class":295,"line":325},[293,2622,758],{"class":321},[293,2624,2625],{"class":749},"Html",[293,2627,753],{"class":321},[293,2629,2630,2632,2635],{"class":295,"line":338},[293,2631,773],{"class":321},[293,2633,2634],{"class":749},"Head",[293,2636,753],{"class":321},[293,2638,2639],{"class":295,"line":375},[293,2640,2641],{"class":299},"      \u003C!-- Critical CSS inline -->\n",[293,2643,2644,2646,2649,2652,2654,2656,2659,2661,2664,2666],{"class":295,"line":381},[293,2645,927],{"class":321},[293,2647,2648],{"class":749},"style",[293,2650,2651],{"class":935}," v-html",[293,2653,982],{"class":321},[293,2655,985],{"class":364},[293,2657,2658],{"class":368},"criticalCSS",[293,2660,985],{"class":364},[293,2662,2663],{"class":321},">\u003C\u002F",[293,2665,2648],{"class":749},[293,2667,753],{"class":321},[293,2669,2670,2672,2674],{"class":295,"line":387},[293,2671,1019],{"class":321},[293,2673,2634],{"class":749},[293,2675,753],{"class":321},[293,2677,2678,2680,2683],{"class":295,"line":397},[293,2679,773],{"class":321},[293,2681,2682],{"class":749},"Body",[293,2684,753],{"class":321},[293,2686,2687,2689,2692],{"class":295,"line":407},[293,2688,927],{"class":321},[293,2690,2691],{"class":749},"NuxtPage",[293,2693,779],{"class":321},[293,2695,2696,2698,2700],{"class":295,"line":417},[293,2697,1019],{"class":321},[293,2699,2682],{"class":749},[293,2701,753],{"class":321},[293,2703,2704,2706,2708],{"class":295,"line":427},[293,2705,802],{"class":321},[293,2707,2625],{"class":749},[293,2709,753],{"class":321},[293,2711,2712,2714,2716],{"class":295,"line":433},[293,2713,811],{"class":321},[293,2715,750],{"class":749},[293,2717,753],{"class":321},[293,2719,2720],{"class":295,"line":474},[293,2721,664],{"emptyLinePlaceholder":11},[293,2723,2724,2726,2728,2730],{"class":295,"line":508},[293,2725,746],{"class":321},[293,2727,1300],{"class":749},[293,2729,1303],{"class":935},[293,2731,753],{"class":321},[293,2733,2734],{"class":295,"line":542},[293,2735,2736],{"class":299},"\u002F\u002F Critical CSS para above-the-fold\n",[293,2738,2739,2741,2744,2746],{"class":295,"line":575},[293,2740,1312],{"class":1311},[293,2742,2743],{"class":356}," criticalCSS",[293,2745,1318],{"class":360},[293,2747,2748],{"class":364}," `\n",[293,2750,2751],{"class":295,"line":581},[293,2752,2753],{"class":368},"  .header { \u002F* estilos críticos *\u002F }\n",[293,2755,2756],{"class":295,"line":587},[293,2757,2758],{"class":368},"  .hero { \u002F* estilos críticos *\u002F }\n",[293,2760,2761],{"class":295,"line":593},[293,2762,2763],{"class":368},"  .navigation { \u002F* estilos críticos *\u002F }\n",[293,2765,2766],{"class":295,"line":599},[293,2767,2768],{"class":364},"`\n",[293,2770,2771,2773,2775],{"class":295,"line":1272},[293,2772,811],{"class":321},[293,2774,1300],{"class":749},[293,2776,753],{"class":321},[218,2778,2780],{"id":2779},"css-purging-inteligente","CSS Purging Inteligente",[283,2782,2784],{"className":285,"code":2783,"language":287,"meta":288,"style":288},"\u002F\u002F nuxt.config.ts\nexport default defineNuxtConfig({\n  css: ['~\u002Fassets\u002Fcss\u002Fmain.css'],\n  \n  postcss: {\n    plugins: {\n      tailwindcss: {},\n      autoprefixer: {},\n      cssnano: {\n        preset: ['default', {\n          discardComments: { removeAll: true },\n          normalizeWhitespace: true\n        }]\n      }\n    }\n  }\n})\n",[290,2785,2786,2790,2802,2822,2826,2835,2844,2854,2863,2872,2891,2910,2919,2925,2929,2933,2937],{"__ignoreMap":288},[293,2787,2788],{"class":295,"line":296},[293,2789,300],{"class":299},[293,2791,2792,2794,2796,2798,2800],{"class":295,"line":303},[293,2793,307],{"class":306},[293,2795,310],{"class":306},[293,2797,314],{"class":313},[293,2799,318],{"class":317},[293,2801,322],{"class":321},[293,2803,2804,2807,2809,2811,2813,2816,2818,2820],{"class":295,"line":325},[293,2805,2806],{"class":328},"  css",[293,2808,332],{"class":321},[293,2810,448],{"class":317},[293,2812,443],{"class":364},[293,2814,2815],{"class":368},"~\u002Fassets\u002Fcss\u002Fmain.css",[293,2817,443],{"class":364},[293,2819,468],{"class":317},[293,2821,471],{"class":321},[293,2823,2824],{"class":295,"line":338},[293,2825,384],{"class":317},[293,2827,2828,2831,2833],{"class":295,"line":375},[293,2829,2830],{"class":328},"  postcss",[293,2832,332],{"class":321},[293,2834,335],{"class":321},[293,2836,2837,2840,2842],{"class":295,"line":381},[293,2838,2839],{"class":328},"    plugins",[293,2841,332],{"class":321},[293,2843,335],{"class":321},[293,2845,2846,2849,2851],{"class":295,"line":387},[293,2847,2848],{"class":328},"      tailwindcss",[293,2850,332],{"class":321},[293,2852,2853],{"class":321}," {},\n",[293,2855,2856,2859,2861],{"class":295,"line":397},[293,2857,2858],{"class":328},"      autoprefixer",[293,2860,332],{"class":321},[293,2862,2853],{"class":321},[293,2864,2865,2868,2870],{"class":295,"line":407},[293,2866,2867],{"class":328},"      cssnano",[293,2869,332],{"class":321},[293,2871,335],{"class":321},[293,2873,2874,2877,2879,2881,2883,2885,2887,2889],{"class":295,"line":417},[293,2875,2876],{"class":328},"        preset",[293,2878,332],{"class":321},[293,2880,448],{"class":317},[293,2882,443],{"class":364},[293,2884,936],{"class":368},[293,2886,443],{"class":364},[293,2888,458],{"class":321},[293,2890,335],{"class":321},[293,2892,2893,2896,2898,2900,2903,2905,2907],{"class":295,"line":427},[293,2894,2895],{"class":328},"          discardComments",[293,2897,332],{"class":321},[293,2899,2052],{"class":321},[293,2901,2902],{"class":328}," removeAll",[293,2904,332],{"class":321},[293,2906,1820],{"class":1819},[293,2908,2909],{"class":321}," },\n",[293,2911,2912,2915,2917],{"class":295,"line":433},[293,2913,2914],{"class":328},"          normalizeWhitespace",[293,2916,332],{"class":321},[293,2918,2588],{"class":1819},[293,2920,2921,2923],{"class":295,"line":474},[293,2922,2483],{"class":321},[293,2924,572],{"class":317},[293,2926,2927],{"class":295,"line":508},[293,2928,584],{"class":321},[293,2930,2931],{"class":295,"line":542},[293,2932,590],{"class":321},[293,2934,2935],{"class":295,"line":575},[293,2936,596],{"class":321},[293,2938,2939,2941],{"class":295,"line":581},[293,2940,602],{"class":321},[293,2942,605],{"class":317},[213,2944,2946],{"id":2945},"_7-monitoring-e-analytics","🔍 7. Monitoring e Analytics",[218,2948,2950],{"id":2949},"web-vitals-tracking","Web Vitals Tracking",[283,2952,2954],{"className":285,"code":2953,"language":287,"meta":288,"style":288},"\u002F\u002F plugins\u002Fweb-vitals.client.ts\nexport default defineNuxtPlugin(() => {\n  if (process.client) {\n    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n      getCLS(console.log)\n      getFID(console.log)\n      getFCP(console.log)\n      getLCP(console.log)\n      getTTFB(console.log)\n    })\n  }\n})\n",[290,2955,2956,2961,2978,2996,3051,3068,3083,3098,3113,3128,3135,3139],{"__ignoreMap":288},[293,2957,2958],{"class":295,"line":296},[293,2959,2960],{"class":299},"\u002F\u002F plugins\u002Fweb-vitals.client.ts\n",[293,2962,2963,2965,2967,2970,2972,2974,2976],{"class":295,"line":303},[293,2964,307],{"class":306},[293,2966,310],{"class":306},[293,2968,2969],{"class":313}," defineNuxtPlugin",[293,2971,318],{"class":317},[293,2973,1410],{"class":321},[293,2975,1413],{"class":1311},[293,2977,335],{"class":321},[293,2979,2980,2982,2984,2987,2989,2992,2994],{"class":295,"line":325},[293,2981,2287],{"class":306},[293,2983,1754],{"class":328},[293,2985,2986],{"class":317},"process",[293,2988,211],{"class":321},[293,2990,2991],{"class":317},"client",[293,2993,2313],{"class":328},[293,2995,322],{"class":321},[293,2997,2998,3001,3003,3005,3008,3010,3012,3014,3016,3018,3021,3024,3026,3029,3031,3034,3036,3039,3041,3044,3047,3049],{"class":295,"line":338},[293,2999,3000],{"class":360},"    import",[293,3002,318],{"class":328},[293,3004,443],{"class":364},[293,3006,3007],{"class":368},"web-vitals",[293,3009,443],{"class":364},[293,3011,1483],{"class":328},[293,3013,211],{"class":321},[293,3015,2353],{"class":313},[293,3017,318],{"class":328},[293,3019,3020],{"class":321},"({",[293,3022,3023],{"class":1757}," getCLS",[293,3025,458],{"class":321},[293,3027,3028],{"class":1757}," getFID",[293,3030,458],{"class":321},[293,3032,3033],{"class":1757}," getFCP",[293,3035,458],{"class":321},[293,3037,3038],{"class":1757}," getLCP",[293,3040,458],{"class":321},[293,3042,3043],{"class":1757}," getTTFB",[293,3045,3046],{"class":321}," })",[293,3048,1413],{"class":1311},[293,3050,335],{"class":321},[293,3052,3053,3056,3058,3061,3063,3066],{"class":295,"line":375},[293,3054,3055],{"class":313},"      getCLS",[293,3057,318],{"class":328},[293,3059,3060],{"class":317},"console",[293,3062,211],{"class":321},[293,3064,3065],{"class":317},"log",[293,3067,605],{"class":328},[293,3069,3070,3073,3075,3077,3079,3081],{"class":295,"line":381},[293,3071,3072],{"class":313},"      getFID",[293,3074,318],{"class":328},[293,3076,3060],{"class":317},[293,3078,211],{"class":321},[293,3080,3065],{"class":317},[293,3082,605],{"class":328},[293,3084,3085,3088,3090,3092,3094,3096],{"class":295,"line":387},[293,3086,3087],{"class":313},"      getFCP",[293,3089,318],{"class":328},[293,3091,3060],{"class":317},[293,3093,211],{"class":321},[293,3095,3065],{"class":317},[293,3097,605],{"class":328},[293,3099,3100,3103,3105,3107,3109,3111],{"class":295,"line":397},[293,3101,3102],{"class":313},"      getLCP",[293,3104,318],{"class":328},[293,3106,3060],{"class":317},[293,3108,211],{"class":321},[293,3110,3065],{"class":317},[293,3112,605],{"class":328},[293,3114,3115,3118,3120,3122,3124,3126],{"class":295,"line":407},[293,3116,3117],{"class":313},"      getTTFB",[293,3119,318],{"class":328},[293,3121,3060],{"class":317},[293,3123,211],{"class":321},[293,3125,3065],{"class":317},[293,3127,605],{"class":328},[293,3129,3130,3133],{"class":295,"line":417},[293,3131,3132],{"class":321},"    }",[293,3134,605],{"class":328},[293,3136,3137],{"class":295,"line":427},[293,3138,596],{"class":321},[293,3140,3141,3143],{"class":295,"line":433},[293,3142,602],{"class":321},[293,3144,605],{"class":317},[218,3146,3148],{"id":3147},"performance-budget","Performance Budget",[283,3150,3152],{"className":285,"code":3151,"language":287,"meta":288,"style":288},"\u002F\u002F nuxt.config.ts\nexport default defineNuxtConfig({\n  nitro: {\n    experimental: {\n      wasm: true\n    }\n  },\n  \n  \u002F\u002F Performance budget\n  build: {\n    analyze: {\n      analyzerMode: 'static',\n      openAnalyzer: false,\n      generateStatsFile: true\n    }\n  }\n})\n",[290,3153,3154,3158,3170,3178,3187,3196,3200,3204,3208,3213,3221,3229,3245,3256,3265,3269,3273],{"__ignoreMap":288},[293,3155,3156],{"class":295,"line":296},[293,3157,300],{"class":299},[293,3159,3160,3162,3164,3166,3168],{"class":295,"line":303},[293,3161,307],{"class":306},[293,3163,310],{"class":306},[293,3165,314],{"class":313},[293,3167,318],{"class":317},[293,3169,322],{"class":321},[293,3171,3172,3174,3176],{"class":295,"line":325},[293,3173,390],{"class":328},[293,3175,332],{"class":321},[293,3177,335],{"class":321},[293,3179,3180,3183,3185],{"class":295,"line":338},[293,3181,3182],{"class":328},"    experimental",[293,3184,332],{"class":321},[293,3186,335],{"class":321},[293,3188,3189,3192,3194],{"class":295,"line":375},[293,3190,3191],{"class":328},"      wasm",[293,3193,332],{"class":321},[293,3195,2588],{"class":1819},[293,3197,3198],{"class":295,"line":381},[293,3199,590],{"class":321},[293,3201,3202],{"class":295,"line":387},[293,3203,378],{"class":321},[293,3205,3206],{"class":295,"line":397},[293,3207,384],{"class":317},[293,3209,3210],{"class":295,"line":407},[293,3211,3212],{"class":299},"  \u002F\u002F Performance budget\n",[293,3214,3215,3217,3219],{"class":295,"line":417},[293,3216,329],{"class":328},[293,3218,332],{"class":321},[293,3220,335],{"class":321},[293,3222,3223,3225,3227],{"class":295,"line":427},[293,3224,341],{"class":328},[293,3226,332],{"class":321},[293,3228,335],{"class":321},[293,3230,3231,3234,3236,3238,3241,3243],{"class":295,"line":433},[293,3232,3233],{"class":328},"      analyzerMode",[293,3235,332],{"class":321},[293,3237,365],{"class":364},[293,3239,3240],{"class":368},"static",[293,3242,443],{"class":364},[293,3244,471],{"class":321},[293,3246,3247,3250,3252,3254],{"class":295,"line":474},[293,3248,3249],{"class":328},"      openAnalyzer",[293,3251,332],{"class":321},[293,3253,2120],{"class":1819},[293,3255,471],{"class":321},[293,3257,3258,3261,3263],{"class":295,"line":508},[293,3259,3260],{"class":328},"      generateStatsFile",[293,3262,332],{"class":321},[293,3264,2588],{"class":1819},[293,3266,3267],{"class":295,"line":542},[293,3268,590],{"class":321},[293,3270,3271],{"class":295,"line":575},[293,3272,596],{"class":321},[293,3274,3275,3277],{"class":295,"line":581},[293,3276,602],{"class":321},[293,3278,605],{"class":317},[213,3280,3282],{"id":3281},"_8-resultados-mensuráveis","📈 8. Resultados Mensuráveis",[218,3284,3286],{"id":3285},"lighthouse-scores","Lighthouse Scores",[283,3288,3290],{"className":285,"code":3289,"language":287,"meta":288,"style":288},"const lighthouseResults = {\n  performance: {\n    before: 72,\n    after: 94,\n    improvement: '+22 pontos'\n  },\n  accessibility: {\n    before: 85,\n    after: 98,\n    improvement: '+13 pontos'\n  },\n  bestPractices: {\n    before: 78,\n    after: 95,\n    improvement: '+17 pontos'\n  },\n  seo: {\n    before: 88,\n    after: 100,\n    improvement: '+12 pontos'\n  }\n}\n",[290,3291,3292,3303,3312,3324,3336,3350,3354,3363,3374,3385,3398,3402,3411,3422,3433,3446,3450,3459,3470,3481,3494,3498],{"__ignoreMap":288},[293,3293,3294,3296,3299,3301],{"class":295,"line":296},[293,3295,1312],{"class":1311},[293,3297,3298],{"class":356}," lighthouseResults",[293,3300,1318],{"class":360},[293,3302,335],{"class":321},[293,3304,3305,3308,3310],{"class":295,"line":303},[293,3306,3307],{"class":328},"  performance",[293,3309,332],{"class":321},[293,3311,335],{"class":321},[293,3313,3314,3317,3319,3322],{"class":295,"line":325},[293,3315,3316],{"class":328},"    before",[293,3318,332],{"class":321},[293,3320,3321],{"class":1861}," 72",[293,3323,471],{"class":321},[293,3325,3326,3329,3331,3334],{"class":295,"line":338},[293,3327,3328],{"class":328},"    after",[293,3330,332],{"class":321},[293,3332,3333],{"class":1861}," 94",[293,3335,471],{"class":321},[293,3337,3338,3341,3343,3345,3348],{"class":295,"line":375},[293,3339,3340],{"class":328},"    improvement",[293,3342,332],{"class":321},[293,3344,365],{"class":364},[293,3346,3347],{"class":368},"+22 pontos",[293,3349,372],{"class":364},[293,3351,3352],{"class":295,"line":381},[293,3353,378],{"class":321},[293,3355,3356,3359,3361],{"class":295,"line":387},[293,3357,3358],{"class":328},"  accessibility",[293,3360,332],{"class":321},[293,3362,335],{"class":321},[293,3364,3365,3367,3369,3372],{"class":295,"line":397},[293,3366,3316],{"class":328},[293,3368,332],{"class":321},[293,3370,3371],{"class":1861}," 85",[293,3373,471],{"class":321},[293,3375,3376,3378,3380,3383],{"class":295,"line":407},[293,3377,3328],{"class":328},[293,3379,332],{"class":321},[293,3381,3382],{"class":1861}," 98",[293,3384,471],{"class":321},[293,3386,3387,3389,3391,3393,3396],{"class":295,"line":417},[293,3388,3340],{"class":328},[293,3390,332],{"class":321},[293,3392,365],{"class":364},[293,3394,3395],{"class":368},"+13 pontos",[293,3397,372],{"class":364},[293,3399,3400],{"class":295,"line":427},[293,3401,378],{"class":321},[293,3403,3404,3407,3409],{"class":295,"line":433},[293,3405,3406],{"class":328},"  bestPractices",[293,3408,332],{"class":321},[293,3410,335],{"class":321},[293,3412,3413,3415,3417,3420],{"class":295,"line":474},[293,3414,3316],{"class":328},[293,3416,332],{"class":321},[293,3418,3419],{"class":1861}," 78",[293,3421,471],{"class":321},[293,3423,3424,3426,3428,3431],{"class":295,"line":508},[293,3425,3328],{"class":328},[293,3427,332],{"class":321},[293,3429,3430],{"class":1861}," 95",[293,3432,471],{"class":321},[293,3434,3435,3437,3439,3441,3444],{"class":295,"line":542},[293,3436,3340],{"class":328},[293,3438,332],{"class":321},[293,3440,365],{"class":364},[293,3442,3443],{"class":368},"+17 pontos",[293,3445,372],{"class":364},[293,3447,3448],{"class":295,"line":575},[293,3449,378],{"class":321},[293,3451,3452,3455,3457],{"class":295,"line":581},[293,3453,3454],{"class":328},"  seo",[293,3456,332],{"class":321},[293,3458,335],{"class":321},[293,3460,3461,3463,3465,3468],{"class":295,"line":587},[293,3462,3316],{"class":328},[293,3464,332],{"class":321},[293,3466,3467],{"class":1861}," 88",[293,3469,471],{"class":321},[293,3471,3472,3474,3476,3479],{"class":295,"line":593},[293,3473,3328],{"class":328},[293,3475,332],{"class":321},[293,3477,3478],{"class":1861}," 100",[293,3480,471],{"class":321},[293,3482,3483,3485,3487,3489,3492],{"class":295,"line":599},[293,3484,3340],{"class":328},[293,3486,332],{"class":321},[293,3488,365],{"class":364},[293,3490,3491],{"class":368},"+12 pontos",[293,3493,372],{"class":364},[293,3495,3496],{"class":295,"line":1272},[293,3497,596],{"class":321},[293,3499,3500],{"class":295,"line":1281},[293,3501,1720],{"class":321},[218,3503,3505],{"id":3504},"core-web-vitals","Core Web Vitals",[283,3507,3509],{"className":285,"code":3508,"language":287,"meta":288,"style":288},"const coreWebVitals = {\n  LCP: {\n    before: '3.8s',\n    after: '2.1s',\n    improvement: '-45%'\n  },\n  FID: {\n    before: '120ms',\n    after: '45ms',\n    improvement: '-63%'\n  },\n  CLS: {\n    before: '0.15',\n    after: '0.02',\n    improvement: '-87%'\n  }\n}\n",[290,3510,3511,3522,3531,3546,3561,3574,3578,3587,3602,3617,3630,3634,3643,3658,3673,3686,3690],{"__ignoreMap":288},[293,3512,3513,3515,3518,3520],{"class":295,"line":296},[293,3514,1312],{"class":1311},[293,3516,3517],{"class":356}," coreWebVitals",[293,3519,1318],{"class":360},[293,3521,335],{"class":321},[293,3523,3524,3527,3529],{"class":295,"line":303},[293,3525,3526],{"class":328},"  LCP",[293,3528,332],{"class":321},[293,3530,335],{"class":321},[293,3532,3533,3535,3537,3539,3542,3544],{"class":295,"line":325},[293,3534,3316],{"class":328},[293,3536,332],{"class":321},[293,3538,365],{"class":364},[293,3540,3541],{"class":368},"3.8s",[293,3543,443],{"class":364},[293,3545,471],{"class":321},[293,3547,3548,3550,3552,3554,3557,3559],{"class":295,"line":338},[293,3549,3328],{"class":328},[293,3551,332],{"class":321},[293,3553,365],{"class":364},[293,3555,3556],{"class":368},"2.1s",[293,3558,443],{"class":364},[293,3560,471],{"class":321},[293,3562,3563,3565,3567,3569,3572],{"class":295,"line":375},[293,3564,3340],{"class":328},[293,3566,332],{"class":321},[293,3568,365],{"class":364},[293,3570,3571],{"class":368},"-45%",[293,3573,372],{"class":364},[293,3575,3576],{"class":295,"line":381},[293,3577,378],{"class":321},[293,3579,3580,3583,3585],{"class":295,"line":387},[293,3581,3582],{"class":328},"  FID",[293,3584,332],{"class":321},[293,3586,335],{"class":321},[293,3588,3589,3591,3593,3595,3598,3600],{"class":295,"line":397},[293,3590,3316],{"class":328},[293,3592,332],{"class":321},[293,3594,365],{"class":364},[293,3596,3597],{"class":368},"120ms",[293,3599,443],{"class":364},[293,3601,471],{"class":321},[293,3603,3604,3606,3608,3610,3613,3615],{"class":295,"line":407},[293,3605,3328],{"class":328},[293,3607,332],{"class":321},[293,3609,365],{"class":364},[293,3611,3612],{"class":368},"45ms",[293,3614,443],{"class":364},[293,3616,471],{"class":321},[293,3618,3619,3621,3623,3625,3628],{"class":295,"line":417},[293,3620,3340],{"class":328},[293,3622,332],{"class":321},[293,3624,365],{"class":364},[293,3626,3627],{"class":368},"-63%",[293,3629,372],{"class":364},[293,3631,3632],{"class":295,"line":427},[293,3633,378],{"class":321},[293,3635,3636,3639,3641],{"class":295,"line":433},[293,3637,3638],{"class":328},"  CLS",[293,3640,332],{"class":321},[293,3642,335],{"class":321},[293,3644,3645,3647,3649,3651,3654,3656],{"class":295,"line":474},[293,3646,3316],{"class":328},[293,3648,332],{"class":321},[293,3650,365],{"class":364},[293,3652,3653],{"class":368},"0.15",[293,3655,443],{"class":364},[293,3657,471],{"class":321},[293,3659,3660,3662,3664,3666,3669,3671],{"class":295,"line":508},[293,3661,3328],{"class":328},[293,3663,332],{"class":321},[293,3665,365],{"class":364},[293,3667,3668],{"class":368},"0.02",[293,3670,443],{"class":364},[293,3672,471],{"class":321},[293,3674,3675,3677,3679,3681,3684],{"class":295,"line":542},[293,3676,3340],{"class":328},[293,3678,332],{"class":321},[293,3680,365],{"class":364},[293,3682,3683],{"class":368},"-87%",[293,3685,372],{"class":364},[293,3687,3688],{"class":295,"line":575},[293,3689,596],{"class":321},[293,3691,3692],{"class":295,"line":581},[293,3693,1720],{"class":321},[213,3695,3697],{"id":3696},"️-9-ferramentas-de-monitoramento","🛠️ 9. Ferramentas de Monitoramento",[218,3699,3701],{"id":3700},"bundle-analyzer","Bundle Analyzer",[283,3703,3705],{"className":612,"code":3704,"language":614,"meta":288,"style":288},"# Análise detalhada do bundle\nnpm run build:analyze\n\n# Resultado: gráfico interativo mostrando:\n# - Tamanho de cada chunk\n# - Dependências duplicadas\n# - Oportunidades de otimização\n",[290,3706,3707,3712,3723,3727,3732,3737,3742],{"__ignoreMap":288},[293,3708,3709],{"class":295,"line":296},[293,3710,3711],{"class":299},"# Análise detalhada do bundle\n",[293,3713,3714,3717,3720],{"class":295,"line":303},[293,3715,3716],{"class":626},"npm",[293,3718,3719],{"class":368}," run",[293,3721,3722],{"class":368}," build:analyze\n",[293,3724,3725],{"class":295,"line":325},[293,3726,664],{"emptyLinePlaceholder":11},[293,3728,3729],{"class":295,"line":338},[293,3730,3731],{"class":299},"# Resultado: gráfico interativo mostrando:\n",[293,3733,3734],{"class":295,"line":375},[293,3735,3736],{"class":299},"# - Tamanho de cada chunk\n",[293,3738,3739],{"class":295,"line":381},[293,3740,3741],{"class":299},"# - Dependências duplicadas\n",[293,3743,3744],{"class":295,"line":387},[293,3745,3746],{"class":299},"# - Oportunidades de otimização\n",[218,3748,3750],{"id":3749},"performance-monitoring","Performance Monitoring",[283,3752,3754],{"className":285,"code":3753,"language":287,"meta":288,"style":288},"\u002F\u002F utils\u002Fperformance.ts\nexport const measurePerformance = (name: string, fn: () => void) => {\n  const start = performance.now()\n  fn()\n  const end = performance.now()\n  \n  console.log(`${name}: ${end - start}ms`)\n  \n  \u002F\u002F Enviar para analytics\n  if (process.client) {\n    gtag('event', 'performance', {\n      event_category: 'timing',\n      event_label: name,\n      value: Math.round(end - start)\n    })\n  }\n}\n",[290,3755,3756,3761,3805,3823,3830,3847,3851,3892,3896,3901,3917,3943,3959,3971,3996,4002,4006],{"__ignoreMap":288},[293,3757,3758],{"class":295,"line":296},[293,3759,3760],{"class":299},"\u002F\u002F utils\u002Fperformance.ts\n",[293,3762,3763,3765,3768,3772,3774,3776,3779,3781,3785,3787,3790,3792,3794,3796,3799,3801,3803],{"class":295,"line":303},[293,3764,307],{"class":306},[293,3766,3767],{"class":1311}," const",[293,3769,3771],{"class":3770},"sfCm-"," measurePerformance",[293,3773,1318],{"class":360},[293,3775,1754],{"class":321},[293,3777,3778],{"class":1757},"name",[293,3780,332],{"class":360},[293,3782,3784],{"class":3783},"sZMiF"," string",[293,3786,458],{"class":321},[293,3788,3789],{"class":313}," fn",[293,3791,332],{"class":360},[293,3793,2103],{"class":321},[293,3795,1413],{"class":1311},[293,3797,3798],{"class":3783}," void",[293,3800,1483],{"class":321},[293,3802,1413],{"class":1311},[293,3804,335],{"class":321},[293,3806,3807,3809,3812,3814,3817,3819,3821],{"class":295,"line":325},[293,3808,1769],{"class":1311},[293,3810,3811],{"class":356}," start",[293,3813,1318],{"class":360},[293,3815,3816],{"class":317}," performance",[293,3818,211],{"class":321},[293,3820,1837],{"class":313},[293,3822,1840],{"class":328},[293,3824,3825,3828],{"class":295,"line":338},[293,3826,3827],{"class":313},"  fn",[293,3829,1840],{"class":328},[293,3831,3832,3834,3837,3839,3841,3843,3845],{"class":295,"line":375},[293,3833,1769],{"class":1311},[293,3835,3836],{"class":356}," end",[293,3838,1318],{"class":360},[293,3840,3816],{"class":317},[293,3842,211],{"class":321},[293,3844,1837],{"class":313},[293,3846,1840],{"class":328},[293,3848,3849],{"class":295,"line":381},[293,3850,384],{"class":328},[293,3852,3853,3856,3858,3860,3862,3865,3867,3869,3872,3874,3877,3880,3882,3884,3887,3890],{"class":295,"line":387},[293,3854,3855],{"class":317},"  console",[293,3857,211],{"class":321},[293,3859,3065],{"class":313},[293,3861,318],{"class":328},[293,3863,3864],{"class":364},"`${",[293,3866,3778],{"class":317},[293,3868,602],{"class":364},[293,3870,3871],{"class":368},": ",[293,3873,1427],{"class":364},[293,3875,3876],{"class":317},"end",[293,3878,3879],{"class":360}," -",[293,3881,3811],{"class":317},[293,3883,602],{"class":364},[293,3885,3886],{"class":368},"ms",[293,3888,3889],{"class":364},"`",[293,3891,605],{"class":328},[293,3893,3894],{"class":295,"line":397},[293,3895,384],{"class":328},[293,3897,3898],{"class":295,"line":407},[293,3899,3900],{"class":299},"  \u002F\u002F Enviar para analytics\n",[293,3902,3903,3905,3907,3909,3911,3913,3915],{"class":295,"line":417},[293,3904,2287],{"class":306},[293,3906,1754],{"class":328},[293,3908,2986],{"class":317},[293,3910,211],{"class":321},[293,3912,2991],{"class":317},[293,3914,2313],{"class":328},[293,3916,322],{"class":321},[293,3918,3919,3922,3924,3926,3928,3930,3932,3934,3937,3939,3941],{"class":295,"line":427},[293,3920,3921],{"class":313},"    gtag",[293,3923,318],{"class":328},[293,3925,443],{"class":364},[293,3927,1758],{"class":368},[293,3929,443],{"class":364},[293,3931,458],{"class":321},[293,3933,365],{"class":364},[293,3935,3936],{"class":368},"performance",[293,3938,443],{"class":364},[293,3940,458],{"class":321},[293,3942,335],{"class":321},[293,3944,3945,3948,3950,3952,3955,3957],{"class":295,"line":433},[293,3946,3947],{"class":328},"      event_category",[293,3949,332],{"class":321},[293,3951,365],{"class":364},[293,3953,3954],{"class":368},"timing",[293,3956,443],{"class":364},[293,3958,471],{"class":321},[293,3960,3961,3964,3966,3969],{"class":295,"line":474},[293,3962,3963],{"class":328},"      event_label",[293,3965,332],{"class":321},[293,3967,3968],{"class":317}," name",[293,3970,471],{"class":321},[293,3972,3973,3976,3978,3981,3983,3986,3988,3990,3992,3994],{"class":295,"line":508},[293,3974,3975],{"class":328},"      value",[293,3977,332],{"class":321},[293,3979,3980],{"class":317}," Math",[293,3982,211],{"class":321},[293,3984,3985],{"class":313},"round",[293,3987,318],{"class":328},[293,3989,3876],{"class":317},[293,3991,3879],{"class":360},[293,3993,3811],{"class":317},[293,3995,605],{"class":328},[293,3997,3998,4000],{"class":295,"line":542},[293,3999,3132],{"class":321},[293,4001,605],{"class":328},[293,4003,4004],{"class":295,"line":575},[293,4005,596],{"class":321},[293,4007,4008],{"class":295,"line":581},[293,4009,1720],{"class":321},[213,4011,4013],{"id":4012},"_10-checklist-de-otimização","🎯 10. Checklist de Otimização",[218,4015,4017],{"id":4016},"checklist-completo","✅ Checklist Completo",[283,4019,4023],{"className":4020,"code":4021,"language":4022,"meta":288,"style":288},"language-markdown shiki shiki-themes material-theme-lighter github-light github-dark","## Bundle Optimization\n- [ ] Code splitting implementado\n- [ ] Tree shaking ativo\n- [ ] Bundle analyzer configurado\n- [ ] Dependências duplicadas removidas\n\n## Image Optimization  \n- [ ] WebP\u002FAVIF implementado\n- [ ] Lazy loading ativo\n- [ ] Responsive images\n- [ ] Sizes otimizados\n\n## Caching Strategy\n- [ ] Service Worker configurado\n- [ ] Cache headers otimizados\n- [ ] CDN configurado\n- [ ] Cache invalidation\n\n## Performance Monitoring\n- [ ] Web Vitals tracking\n- [ ] Performance budget\n- [ ] Real User Monitoring\n- [ ] Lighthouse CI\n","markdown",[290,4024,4025,4030,4035,4040,4045,4050,4054,4059,4064,4069,4074,4079,4083,4088,4093,4098,4103,4108,4112,4117,4122,4127,4132],{"__ignoreMap":288},[293,4026,4027],{"class":295,"line":296},[293,4028,4029],{},"## Bundle Optimization\n",[293,4031,4032],{"class":295,"line":303},[293,4033,4034],{},"- [ ] Code splitting implementado\n",[293,4036,4037],{"class":295,"line":325},[293,4038,4039],{},"- [ ] Tree shaking ativo\n",[293,4041,4042],{"class":295,"line":338},[293,4043,4044],{},"- [ ] Bundle analyzer configurado\n",[293,4046,4047],{"class":295,"line":375},[293,4048,4049],{},"- [ ] Dependências duplicadas removidas\n",[293,4051,4052],{"class":295,"line":381},[293,4053,664],{"emptyLinePlaceholder":11},[293,4055,4056],{"class":295,"line":387},[293,4057,4058],{},"## Image Optimization  \n",[293,4060,4061],{"class":295,"line":397},[293,4062,4063],{},"- [ ] WebP\u002FAVIF implementado\n",[293,4065,4066],{"class":295,"line":407},[293,4067,4068],{},"- [ ] Lazy loading ativo\n",[293,4070,4071],{"class":295,"line":417},[293,4072,4073],{},"- [ ] Responsive images\n",[293,4075,4076],{"class":295,"line":427},[293,4077,4078],{},"- [ ] Sizes otimizados\n",[293,4080,4081],{"class":295,"line":433},[293,4082,664],{"emptyLinePlaceholder":11},[293,4084,4085],{"class":295,"line":474},[293,4086,4087],{},"## Caching Strategy\n",[293,4089,4090],{"class":295,"line":508},[293,4091,4092],{},"- [ ] Service Worker configurado\n",[293,4094,4095],{"class":295,"line":542},[293,4096,4097],{},"- [ ] Cache headers otimizados\n",[293,4099,4100],{"class":295,"line":575},[293,4101,4102],{},"- [ ] CDN configurado\n",[293,4104,4105],{"class":295,"line":581},[293,4106,4107],{},"- [ ] Cache invalidation\n",[293,4109,4110],{"class":295,"line":587},[293,4111,664],{"emptyLinePlaceholder":11},[293,4113,4114],{"class":295,"line":593},[293,4115,4116],{},"## Performance Monitoring\n",[293,4118,4119],{"class":295,"line":599},[293,4120,4121],{},"- [ ] Web Vitals tracking\n",[293,4123,4124],{"class":295,"line":1272},[293,4125,4126],{},"- [ ] Performance budget\n",[293,4128,4129],{"class":295,"line":1281},[293,4130,4131],{},"- [ ] Real User Monitoring\n",[293,4133,4134],{"class":295,"line":1290},[293,4135,4136],{},"- [ ] Lighthouse CI\n",[213,4138,4140],{"id":4139},"implementação-prática","🚀 Implementação Prática",[218,4142,4144],{"id":4143},"passo-a-passo","Passo a Passo",[283,4146,4148],{"className":612,"code":4147,"language":614,"meta":288,"style":288},"# 1. Análise inicial\nnpm run build:analyze\n\n# 2. Implementar otimizações\n# (seguir checklist acima)\n\n# 3. Medir resultados\nnpm run lighthouse\n\n# 4. Monitorar em produção\n# (configurar analytics)\n",[290,4149,4150,4155,4163,4167,4172,4177,4181,4186,4195,4199,4204],{"__ignoreMap":288},[293,4151,4152],{"class":295,"line":296},[293,4153,4154],{"class":299},"# 1. Análise inicial\n",[293,4156,4157,4159,4161],{"class":295,"line":303},[293,4158,3716],{"class":626},[293,4160,3719],{"class":368},[293,4162,3722],{"class":368},[293,4164,4165],{"class":295,"line":325},[293,4166,664],{"emptyLinePlaceholder":11},[293,4168,4169],{"class":295,"line":338},[293,4170,4171],{"class":299},"# 2. Implementar otimizações\n",[293,4173,4174],{"class":295,"line":375},[293,4175,4176],{"class":299},"# (seguir checklist acima)\n",[293,4178,4179],{"class":295,"line":381},[293,4180,664],{"emptyLinePlaceholder":11},[293,4182,4183],{"class":295,"line":387},[293,4184,4185],{"class":299},"# 3. Medir resultados\n",[293,4187,4188,4190,4192],{"class":295,"line":397},[293,4189,3716],{"class":626},[293,4191,3719],{"class":368},[293,4193,4194],{"class":368}," lighthouse\n",[293,4196,4197],{"class":295,"line":407},[293,4198,664],{"emptyLinePlaceholder":11},[293,4200,4201],{"class":295,"line":417},[293,4202,4203],{"class":299},"# 4. Monitorar em produção\n",[293,4205,4206],{"class":295,"line":427},[293,4207,4208],{"class":299},"# (configurar analytics)\n",[213,4210,4212],{"id":4211},"lições-aprendidas","💡 Lições Aprendidas",[218,4214,4216],{"id":4215},"_1-performance-é-processo","1. Performance é Processo",[200,4218,4219,4220,4223],{},"Não é uma tarefa única - é um ",[204,4221,4222],{},"processo contínuo"," de monitoramento e otimização.",[218,4225,4227],{"id":4226},"_2-medir-é-fundamental","2. Medir é Fundamental",[283,4229,4231],{"className":285,"code":4230,"language":287,"meta":288,"style":288},"\u002F\u002F Sempre meça antes e depois\nconst beforeOptimization = await measurePerformance()\n\u002F\u002F ... implementar otimizações ...\nconst afterOptimization = await measurePerformance()\n\nconsole.log(`Improvement: ${((before - after) \u002F before * 100).toFixed(1)}%`)\n",[290,4232,4233,4238,4253,4258,4273,4277],{"__ignoreMap":288},[293,4234,4235],{"class":295,"line":296},[293,4236,4237],{"class":299},"\u002F\u002F Sempre meça antes e depois\n",[293,4239,4240,4242,4245,4247,4249,4251],{"class":295,"line":303},[293,4241,1312],{"class":1311},[293,4243,4244],{"class":356}," beforeOptimization",[293,4246,1318],{"class":360},[293,4248,1777],{"class":306},[293,4250,3771],{"class":313},[293,4252,1840],{"class":317},[293,4254,4255],{"class":295,"line":325},[293,4256,4257],{"class":299},"\u002F\u002F ... implementar otimizações ...\n",[293,4259,4260,4262,4265,4267,4269,4271],{"class":295,"line":338},[293,4261,1312],{"class":1311},[293,4263,4264],{"class":356}," afterOptimization",[293,4266,1318],{"class":360},[293,4268,1777],{"class":306},[293,4270,3771],{"class":313},[293,4272,1840],{"class":317},[293,4274,4275],{"class":295,"line":375},[293,4276,664],{"emptyLinePlaceholder":11},[293,4278,4279,4281,4283,4285,4287,4289,4292,4294,4297,4300,4302,4305,4307,4309,4312,4314,4316,4318,4320,4323,4325,4328,4330,4332,4335,4337],{"class":295,"line":381},[293,4280,3060],{"class":317},[293,4282,211],{"class":321},[293,4284,3065],{"class":313},[293,4286,318],{"class":317},[293,4288,3889],{"class":364},[293,4290,4291],{"class":368},"Improvement: ",[293,4293,1427],{"class":364},[293,4295,4296],{"class":1443},"((",[293,4298,4299],{"class":317},"before",[293,4301,3879],{"class":360},[293,4303,4304],{"class":317}," after",[293,4306,2313],{"class":1443},[293,4308,1446],{"class":360},[293,4310,4311],{"class":317}," before",[293,4313,1865],{"class":360},[293,4315,3478],{"class":1861},[293,4317,1483],{"class":1443},[293,4319,211],{"class":364},[293,4321,4322],{"class":313},"toFixed",[293,4324,318],{"class":1443},[293,4326,4327],{"class":1861},"1",[293,4329,1483],{"class":1443},[293,4331,602],{"class":364},[293,4333,4334],{"class":368},"%",[293,4336,3889],{"class":364},[293,4338,605],{"class":317},[218,4340,4342],{"id":4341},"_3-usuário-final-é-prioridade","3. Usuário Final é Prioridade",[283,4344,4346],{"className":285,"code":4345,"language":287,"meta":288,"style":288},"\u002F\u002F Otimizações que realmente importam:\nconst userImpact = {\n  'LCP \u003C 2.5s': 'Perceived performance',\n  'FID \u003C 100ms': 'Interactivity', \n  'CLS \u003C 0.1': 'Visual stability'\n}\n",[290,4347,4348,4353,4364,4384,4406,4424],{"__ignoreMap":288},[293,4349,4350],{"class":295,"line":296},[293,4351,4352],{"class":299},"\u002F\u002F Otimizações que realmente importam:\n",[293,4354,4355,4357,4360,4362],{"class":295,"line":303},[293,4356,1312],{"class":1311},[293,4358,4359],{"class":356}," userImpact",[293,4361,1318],{"class":360},[293,4363,335],{"class":321},[293,4365,4366,4368,4371,4373,4375,4377,4380,4382],{"class":295,"line":325},[293,4367,2212],{"class":364},[293,4369,4370],{"class":439},"LCP \u003C 2.5s",[293,4372,443],{"class":364},[293,4374,332],{"class":321},[293,4376,365],{"class":364},[293,4378,4379],{"class":368},"Perceived performance",[293,4381,443],{"class":364},[293,4383,471],{"class":321},[293,4385,4386,4388,4391,4393,4395,4397,4400,4402,4404],{"class":295,"line":338},[293,4387,2212],{"class":364},[293,4389,4390],{"class":439},"FID \u003C 100ms",[293,4392,443],{"class":364},[293,4394,332],{"class":321},[293,4396,365],{"class":364},[293,4398,4399],{"class":368},"Interactivity",[293,4401,443],{"class":364},[293,4403,458],{"class":321},[293,4405,1084],{"class":317},[293,4407,4408,4410,4413,4415,4417,4419,4422],{"class":295,"line":375},[293,4409,2212],{"class":364},[293,4411,4412],{"class":439},"CLS \u003C 0.1",[293,4414,443],{"class":364},[293,4416,332],{"class":321},[293,4418,365],{"class":364},[293,4420,4421],{"class":368},"Visual stability",[293,4423,372],{"class":364},[293,4425,4426],{"class":295,"line":381},[293,4427,1720],{"class":321},[213,4429,4431],{"id":4430},"conclusão","🎉 Conclusão",[200,4433,4434,4435,4438],{},"Essas otimizações resultaram em ",[204,4436,4437],{},"melhorias reais e mensuráveis"," nos meus projetos:",[223,4440,4441,4446,4451,4456],{},[226,4442,4443],{},[204,4444,4445],{},"40%+ melhoria na performance",[226,4447,4448],{},[204,4449,4450],{},"Bundle 43% menor",[226,4452,4453],{},[204,4454,4455],{},"Build time 39% mais rápido",[226,4457,4458],{},[204,4459,4460],{},"Lighthouse score 95+",[200,4462,4463,4466,4467,4470],{},[204,4464,4465],{},"A chave",": Não otimize tudo de uma vez. ",[204,4468,4469],{},"Meça, implemente, meça novamente",". Performance é uma jornada, não um destino.",[4472,4473],"hr",{},[200,4475,4476],{},[4477,4478,4479,4480,4487],"em",{},"Quer implementar essas otimizações no seu projeto? Me siga no ",[4481,4482,4486],"a",{"href":4483,"rel":4484},"https:\u002F\u002Fgithub.com\u002FFelipeOl6",[4485],"nofollow","GitHub"," para mais dicas práticas de performance!",[200,4489,4490],{},[4477,4491,4492],{},"Tem alguma otimização específica que gostaria de ver? Deixe um comentário!",[2648,4494,4495],{},"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 .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 .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .skxfh, html code.shiki .skxfh{--shiki-light:#E53935;--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 .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 pre.shiki code .sZUrc, html code.shiki .sZUrc{--shiki-light:#E53935;--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 .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sQzsp, html code.shiki .sQzsp{--shiki-light:#E53935;--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .s9AJx, html code.shiki .s9AJx{--shiki-light:#9C3EDA;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sfo-9, html code.shiki .sfo-9{--shiki-light:#90A4AE;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sjYin, html code.shiki .sjYin{--shiki-light:#90A4AE;--shiki-light-font-weight:inherit;--shiki-default:#22863A;--shiki-default-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s99_P, html code.shiki .s99_P{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit}html pre.shiki code .syTEX, html code.shiki .syTEX{--shiki-light:#FF5370;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sseR_, html code.shiki .sseR_{--shiki-light:#9C3EDA;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sfCm-, html code.shiki .sfCm-{--shiki-light:#90A4AE;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":288,"searchDepth":303,"depth":303,"links":4497},[4498,4502,4506,4510,4514,4518,4522,4526,4530,4534,4538,4541,4544,4549],{"id":215,"depth":303,"text":216,"children":4499},[4500,4501],{"id":220,"depth":325,"text":221},{"id":252,"depth":325,"text":253},{"id":276,"depth":303,"text":277,"children":4503},[4504,4505],{"id":280,"depth":325,"text":281},{"id":608,"depth":325,"text":609},{"id":725,"depth":303,"text":726,"children":4507},[4508,4509],{"id":729,"depth":325,"text":730},{"id":891,"depth":325,"text":892},{"id":1042,"depth":303,"text":1043,"children":4511},[4512,4513],{"id":1046,"depth":325,"text":1047},{"id":1624,"depth":325,"text":1625},{"id":1723,"depth":303,"text":1724,"children":4515},[4516,4517],{"id":1727,"depth":325,"text":1728},{"id":1942,"depth":325,"text":1943},{"id":2164,"depth":303,"text":2165,"children":4519},[4520,4521],{"id":2168,"depth":325,"text":2169},{"id":2510,"depth":325,"text":2511},{"id":2595,"depth":303,"text":2596,"children":4523},[4524,4525],{"id":2599,"depth":325,"text":2600},{"id":2779,"depth":325,"text":2780},{"id":2945,"depth":303,"text":2946,"children":4527},[4528,4529],{"id":2949,"depth":325,"text":2950},{"id":3147,"depth":325,"text":3148},{"id":3281,"depth":303,"text":3282,"children":4531},[4532,4533],{"id":3285,"depth":325,"text":3286},{"id":3504,"depth":325,"text":3505},{"id":3696,"depth":303,"text":3697,"children":4535},[4536,4537],{"id":3700,"depth":325,"text":3701},{"id":3749,"depth":325,"text":3750},{"id":4012,"depth":303,"text":4013,"children":4539},[4540],{"id":4016,"depth":325,"text":4017},{"id":4139,"depth":303,"text":4140,"children":4542},[4543],{"id":4143,"depth":325,"text":4144},{"id":4211,"depth":303,"text":4212,"children":4545},[4546,4547,4548],{"id":4215,"depth":325,"text":4216},{"id":4226,"depth":325,"text":4227},{"id":4341,"depth":325,"text":4342},{"id":4430,"depth":303,"text":4431},"2024-12-17","md","https:\u002F\u002Fvueschool.io\u002F_ipx\u002Ff_webp&q_100&s_1200x1200\u002Fhttps:\u002F\u002Fvueschool.io\u002Fstorage\u002Fmedia\u002Fd83cfd96e2106a8f682e8093c595dc62\u002FThe-Ultimate-Guide-to-Vue-Performance.png",{"author":4554},{"name":4555,"avatar":4556,"bio":4558,"social":4559},"Felipe Oliveira",{"src":4557},"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":4483,"linkedin":4560},"https:\u002F\u002Flinkedin.com\u002Fin\u002Ffelipe-oliveira-dev",{"title":187,"description":189},"blog\u002Fnuxt-performance-otimizacoes-avancadas",[4564,3936,4565,4566,3007],"nuxt","otimizacao","lighthouse","TOswmaaeN8eFO4U-wAf3zuMT3OKg8g0Ffq-DHY_RuIY",[4569,4571],{"title":191,"path":192,"stem":4570,"description":193,"children":-1},"blog\u002Fnuxt-ecosystem-futuro-desenvolvimento",{"title":183,"path":184,"stem":4572,"description":185,"children":-1},"blog\u002Fpaper-ui-historia-criacao",1792609231898]