{"id":122,"date":"2026-08-27T20:41:27","date_gmt":"2026-08-27T23:41:27","guid":{"rendered":"https:\/\/aqgoes.com\/blog\/?p=122"},"modified":"2026-09-04T16:04:18","modified_gmt":"2026-09-04T19:04:18","slug":"arquitetura-front-end-estrutura-projeto-aqgoes","status":"publish","type":"post","link":"https:\/\/aqgoes.com\/blog\/arquitetura-front-end-estrutura-projeto-aqgoes\/","title":{"rendered":"Arquitetura Front-End: Como Estruturei o Projeto aqgoes_blog"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Intradu\u00e7\u00e3o<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Quando tomamos a iniciativa de tirar um projeto do papel e coloc\u00e1-lo em pr\u00e1tica, a empolga\u00e7\u00e3o inicial muitas vezes nos faz pular etapas cruciais. Mas para mim, a primeira e mais importante preocupa\u00e7\u00e3o foi estabelecer uma base s\u00f3lida: a <strong>estrutura do meu projeto<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Neste artigo, vou abrir o cap\u00f4 do <strong><a href=\"https:\/\/aqgoes.com\/blog\/\" target=\"_blank\" rel=\"noopener\">aqgoes_blog<\/a><\/strong> e mostrar, de desenvolvedor para desenvolvedor, como organizei a arquitetura front-end, quais arquivos comp\u00f5em o sistema e os motivos t\u00e9cnicos por tr\u00e1s das minhas escolhas de organiza\u00e7\u00e3o e carregamento.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">O Desafio da Organiza\u00e7\u00e3o Inicial<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Misturar arquivos <a href=\"https:\/\/www.w3schools.com\/html\/default.asp\" target=\"_blank\" rel=\"noopener\">HTML <\/a>de conte\u00fado com estilos <a href=\"https:\/\/www.w3schools.com\/css\/default.asp\" target=\"_blank\" rel=\"noopener\">CSS <\/a>e scripts <a href=\"https:\/\/www.w3schools.com\/js\/default.asp\" target=\"_blank\" rel=\"noopener\">JavaScript <\/a>na mesma pasta \u00e9 uma receita para o desastre. O c\u00f3digo se torna dif\u00edcil de ler, a manuten\u00e7\u00e3o vira um pesadelo e escalar o projeto fica imposs\u00edvel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Minha prioridade foi criar uma estrutura que fosse, ao mesmo tempo, simples e did\u00e1tica. Eu precisava saber exatamente onde encontrar cada componente visual, regra de neg\u00f3cio ou arquivo de conte\u00fado do blog.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Minha Arquitetura de Pastas e Arquivos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O n\u00facleo do <strong>aqgoes_blog<\/strong> segue uma hierarquia clara. Decidi centralizar os arquivos de estilo e interatividade para manter a raiz do projeto limpa, contendo apenas as p\u00e1ginas HTML que o usu\u00e1rio final acessa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esta \u00e9 a estrutura final que implementei:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Raiz do Projeto: aqgoes_blog\n|\n\u251c\u2500\u2500 index.html       # P\u00e1gina Inicial (Home)\n\u251c\u2500\u2500 contato.html     # P\u00e1gina de Formul\u00e1rio de Contato\n\u251c\u2500\u2500 sobre.html       # P\u00e1gina 'Sobre Mim' ou o Projeto\n\u251c\u2500\u2500 artigos.html     # P\u00e1gina de Listagem (\u00cdndice) de todos os posts\n\u251c\u2500\u2500 posts.html       # O template do corpo de um artigo individual\n\u2502\n\u2514\u2500\u2500 assets\/          # Pasta Principal de Ativos (Estilos, Scripts, etc.)\n    |\n    \u251c\u2500\u2500 css\/         # Subpasta de Estilos\n    \u2502   \u2514\u2500\u2500 style.css # Arquivo principal de regras CSS\n    \u2502\n    \u2514\u2500\u2500 js\/          # Subpasta de Scripts\n        \u2514\u2500\u2500 script.js # Arquivo principal de interatividade JS<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Detalhando as P\u00e1ginas e Ativos<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Como voc\u00ea pode ver na tabela abaixo, cada arquivo tem uma responsabilidade bem definida dentro do sistema:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Arquivo\/Pasta<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Tipo<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Responsabilidade Principal<\/strong><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><code>index.html<\/code><\/td><td class=\"has-text-align-center\" data-align=\"center\">Conte\u00fado<\/td><td class=\"has-text-align-center\" data-align=\"center\">Porta de entrada, apresenta o blog e as \u00faltimas novidades.<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><code>artigos.html<\/code><\/td><td class=\"has-text-align-center\" data-align=\"center\">Conte\u00fado<\/td><td class=\"has-text-align-center\" data-align=\"center\">Funciona como o \u00edndice centralizado de todas as publica\u00e7\u00f5es.<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><code>posts.html<\/code><\/td><td class=\"has-text-align-center\" data-align=\"center\">Conte\u00fado<\/td><td class=\"has-text-align-center\" data-align=\"center\">Fornece a estrutura onde o conte\u00fado espec\u00edfico de cada post \u00e9 carregado.<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><code>assets\/css\/<\/code><\/td><td class=\"has-text-align-center\" data-align=\"center\">Estilo<\/td><td class=\"has-text-align-center\" data-align=\"center\">Armazena a identidade visual (<code>style.css<\/code>), garantindo consist\u00eancia.<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><code>assets\/js\/<\/code><\/td><td class=\"has-text-align-center\" data-align=\"center\">Interatividade<\/td><td class=\"has-text-align-center\" data-align=\"center\">Cont\u00e9m a l\u00f3gica (<code>script.js<\/code>) para elementos din\u00e2micos da interface.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Escolhas T\u00e9cnicas de Performance e SEO<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para manter o blog leve e r\u00e1pido, adotei uma <em>stack<\/em> t\u00e9cnica moderna e sem\u00e2ntica. A estrutura HTML utiliza o que h\u00e1 de mais atual no HTML5 para garantir que o site seja acess\u00edvel e bem compreendido pelos motores de busca.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Dica de Ouro:<\/strong> CDNs vs. Arquivos Locais. Se voc\u00ea est\u00e1 preocupado com o SEO e o Core Web Vitals, considere carregar bibliotecas externas (como Google Fonts ou FontAwesome) via CDN (Content Delivery Network). Os navegadores muitas vezes j\u00e1 t\u00eam essas bibliotecas em <em>cache<\/em> de outros sites, o que acelera o carregamento da sua p\u00e1gina e evita penaliza\u00e7\u00f5es nos mecanismos de busca por lentid\u00e3o.<\/p>\n<\/blockquote>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">L\u00f3gica de Interatividade Din\u00e2mica<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O arquivo <code>script.js<\/code>, localizado na pasta <code>assets\/js\/<\/code>, foi projetado para lidar com a interatividade de forma eficiente. Ele escuta os eventos da DOM e manipula a interface dinamicamente, permitindo, por exemplo, que eu mantenha um \u00fanico arquivo <code>posts.html<\/code> que carrega conte\u00fados diferentes com base no artigo selecionado.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Exemplo conceitual simples em assets\/js\/script.js\ndocument.addEventListener('DOMContentLoaded', () =&gt; {\n  \/\/ Captura o ID do post a partir da URL\n  const postId = new URLSearchParams(window.location.search).get('id');\n  \n  if (postId) {\n    \/\/ Busca o conte\u00fado espec\u00edfico e o insere no posts.html\n    loadPostContent(postId);\n  }\n});<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Conclus\u00e3o<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A arquitetura do <strong>aqgoes_blog<\/strong> n\u00e3o foi criada por acaso. Cada pasta, arquivo e escolha t\u00e9cnica \u2014 desde a separa\u00e7\u00e3o de ativos em <code>assets\/<\/code> at\u00e9 o carregamento via CDN \u2014 reflete uma preocupa\u00e7\u00e3o com a performance, manutenibilidade e SEO. Uma base s\u00f3lida \u00e9 o primeiro passo para um projeto bem-sucedido.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Como desenvolvedor, qual \u00e9 o seu principal ponto de aten\u00e7\u00e3o ao iniciar a estrutura de pastas de um novo projeto front-end? Voc\u00ea prefere uma estrutura mais plana ou mais aninhada? Deixe seu coment\u00e1rio abaixo!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intradu\u00e7\u00e3o Quando tomamos a iniciativa de tirar um projeto do papel e coloc\u00e1-lo em pr\u00e1tica, a empolga\u00e7\u00e3o inicial muitas vezes nos faz pular etapas cruciais. Mas para mim, a primeira e mais importante preocupa\u00e7\u00e3o foi estabelecer uma base s\u00f3lida: a estrutura do meu projeto. Neste artigo, vou abrir o cap\u00f4 do aqgoes_blog e mostrar, de [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":123,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[65,67,60,66,19,59,18,68],"class_list":["post-122","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-html-css","tag-arquitetura","tag-cdn","tag-css3","tag-estrutura-de-projeto","tag-front-end","tag-html5","tag-javascript","tag-performance"],"_links":{"self":[{"href":"https:\/\/aqgoes.com\/blog\/wp-json\/wp\/v2\/posts\/122","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aqgoes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aqgoes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aqgoes.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/aqgoes.com\/blog\/wp-json\/wp\/v2\/comments?post=122"}],"version-history":[{"count":3,"href":"https:\/\/aqgoes.com\/blog\/wp-json\/wp\/v2\/posts\/122\/revisions"}],"predecessor-version":[{"id":158,"href":"https:\/\/aqgoes.com\/blog\/wp-json\/wp\/v2\/posts\/122\/revisions\/158"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aqgoes.com\/blog\/wp-json\/wp\/v2\/media\/123"}],"wp:attachment":[{"href":"https:\/\/aqgoes.com\/blog\/wp-json\/wp\/v2\/media?parent=122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aqgoes.com\/blog\/wp-json\/wp\/v2\/categories?post=122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aqgoes.com\/blog\/wp-json\/wp\/v2\/tags?post=122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}