

Um guia sobre estruturação de pastas para projetos em Next.js
source link: https://dev.to/trybe/um-guia-sobre-estruturacao-de-pastas-para-projetos-em-nextjs-5b6j
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.


Um guia sobre estruturação de pastas para projetos em Next.js
Sempre que vou iniciar um novo projeto usando Next.js a primeira coisa que vem na cabeça é: como eu mantenho as coisas organizadas em um padrão de Developer Experience semelhante ao que o time do Next já criou?
É realmente impressionante a forma como é simples, fácil de entender e prático. Toda nova atualização mais facilidades são adicionadas ao framework e ele fica cada vez mais maravilhoso (ok, sou fã, como descobriu?).
Aqui na Trybe, começamos recentemente o trabalho de migração do site institucional para Next.js, e tivemos que pesquisar um bocado para entender a melhor forma de organizar as pastas do projeto. Não existe uma unanimidade, algumas pessoas gostam de usar um padrão semelhante ao que usam em projetos em React, outras criam seus próprios padrões. Que foi o nosso caso.
Decidimos primeiro entender qual seria a estrutura de um site, para depois pensarmos na estrutura das pastas, sempre tentando entender o que seria mais fácil de compreender somente olhando para o projeto... e ficou assim:
- site-trybe
> __tests__
index.test.tsx
primeiros-passos.test.tsx
> components
> _ui
> Button
Button.tsx
Button.module.scss
Button.test.tsx
index.tsx
> Navbar
> home
> Hero
constants.ts
Hero.tsx
Hero.module.scss
Hero.test.tsx
index.tsx
> first-steps
> Video
> Form
> hooks
> pages
> primeiros-passos
confirmacao.tsx
index.tsx
_app.tsx
index.tsx
> public
> images
> fonts
> icons
> styles
theme.scss
global.scss
> utils
> constants
navigation.ts
Enter fullscreen mode
Exit fullscreen mode
Agora, vamos entender melhor o que temos em cada pasta.
Testes de snapshot para cada página
> __tests__
index.test.tsx
primeiros-passos.test.tsx
Enter fullscreen mode
Exit fullscreen mode
Para manter a consistência do site, e evitar, ou melhor, avisar, quando alterações sejam feitas em conteúdos ou ordem de componentes, decidimos criar testes simples para cada página do site, apenas para manter o snapshot.
Pasta de componentes separados por páginas
> components
> _ui
> Button
Button.tsx
Button.module.scss
Button.test.tsx
index.tsx
> Navbar
> home
> Hero
constants.ts
Hero.tsx
Hero.module.scss
Hero.test.tsx
index.tsx
> first-steps
> Video
> Form
Enter fullscreen mode
Exit fullscreen mode
A pasta _ui
é onde ficam todos os componentes em comum entre várias páginas do site, quase que como se fosse o nosso Design System.
Além disso, cada página do site possui uma pasta dentro da pasta de componentes. Dentro dessa pasta, então, são adicionados todos os componentes, com seus arquivos de estilo, constantes que são usadas apenas ali e seu arquivo de teste (caso seja necessário).
Dessa forma, podemos ter dois componentes <Hero />
, porém, eles estarão em suas pastas relacionadas a cada página/contexto. Nós também focamos em manter os textos e organização do layout em cada componente, dessa forma, uma página apenas importa os componentes que formam ela.
/* /pages/empresas-parceiras/index.tsx */
/* ... aqui vão todos os imports */
const ParnerCompanies: NextPage = () => (
<>
<Page
title="Contrate programadores e desenvolvedores pela Trybe"
description="Empresas inovadoras contratam talentos de tecnologia na Trybe. E o melhor: elas não pagam nada por isso. Contrate agora!"
>
<Hero />
<CompleteTraining />
<WhyHireTrybers />
<WhatCompaniesSays />
<OurTraining />
<WorldOfPossibility />
<Benefits />
<HowItWorks />
<NoCosts />
</Page>
</>
);
export default ParnerCompanies;
Enter fullscreen mode
Exit fullscreen mode
Outras pastas complementares
> hooks
> public
> images
> fonts
> icons
> styles
> utils
> constants
Enter fullscreen mode
Exit fullscreen mode
Fora a pasta pages
que é padrão dos projetos Next.js, também criamos pastas para deixar organizados os estilos, os hooks e os utils, como as constantes globais do projeto.
Também separamos a pasta public
em outras três: images, fonts e icons.
Organização é tudo para uma pessoa desenvolvedora feliz
Sim, meu amigo e minha amiga. Ter um projeto organizado é o que nos dá vontade de trabalhar todo dia.
Acredito que este artigo pode ajudar você, que estava perdido em qual arquitetura utilizar na hora de deixar o seu projeto Next.js mais arrumadinho.
Recommend
-
8
Files Permalink Latest commit message Commit time
-
1
Guia Básico sobre Princípios de Programação e SOLID Estudando um pouco sobre Clean Code e boas práticas no desenvolvimento de softwa...
-
2
🔥 Este é um Guia não oficial e você pode opinar através do repositório de GitHub para juntos chegarmos a melhor definição do Ideal! Vamos colaborar? 💪 👉 Navegação por tópico facilitada! ...
-
10
Vida de Gerente de Projetos: Metodologia SAP Activate Como vai TIME quanto tempo, mas afinal o que é a metodologia SAP Activate? Resumidamente o SAP Activate Methodology é composta, basicamente, por 4 f...
-
7
Gilberto Jr Disessa April 5, 2022 7 minute read ...
-
7
Anderson Marques April 5, 2022 2 minute read ...
-
6
Contribua Se você quiser adicionar mais algum tópico deixe seu comentário, o objetico é facilitar para os iniciantes ou aqueles que buscam dominar JavaScript, quais tópicos são importantes para dominar JavaScript. São tópicos para...
-
3
proposta de estrutura de diretórios para projetos frontend, sem ou com GruntJS (para executar o GruntJS é necessário ter o Node.js)
-
6
Juan Valderrama January 11, 2024 1 minute read...
-
5
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK