Průvodce strukturováním složek pro projekty v Next.js

Kdykoli začnu nový projekt pomocí Next.js, první věc, která mě napadne, je:jak udržím věci uspořádané podle vzoru Developer Experience podobnému tomu, co již vytvořil tým Next?

Je opravdu působivé, jak je to jednoduché, snadno pochopitelné a praktické. S každou novou aktualizací se do rámce přidávají další zařízení a je stále úžasnější (ok, jsem fanoušek, jak jsi to zjistil?).

Zde v Trybe jsme nedávno zahájili práci na migraci institucionálního webu na Next.js a museli jsme hodně zkoumat, abychom pochopili nejlepší způsob, jak organizovat složky projektu. Nepanuje zde jednota, někteří lidé rádi používají vzor podobný tomu, který používají v projektech React, jiní si vytvářejí vlastní vzory. Což byl náš případ.

Nejprve jsme se rozhodli pochopit, jaká bude struktura webu, a pak jsme přemýšleli o struktuře složek, vždy jsme se snažili pochopit, co by bylo snazší pochopit pouhým pohledem na projekt... a skončilo to takto:

- 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

Pojďme nyní lépe pochopit, co máme v každé složce.

Testy snímků pro každou stránku

    > __tests__
        index.test.tsx
        primeiros-passos.test.tsx

Abychom zachovali konzistenci webu a abychom se vyhnuli, nebo spíše varovali, při změnách obsahu nebo pořadí komponent, rozhodli jsme se vytvořit jednoduché testy pro každou stránku webu, abychom zachovali snímek.

Složka komponent oddělená stránkami

    > 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

Složka _ui je to místo, kde jsou umístěny všechny společné součásti mezi různými stránkami webu, téměř jako by to byl náš návrhářský systém.

Každá stránka na webu má navíc složku uvnitř složky komponent. Do této složky jsou pak přidány všechny komponenty s jejich soubory stylů, konstantami, které se používají pouze tam, a jejich testovacím souborem (pokud je to nutné).

Tímto způsobem můžeme mít dvě komponenty <Hero /> , budou však ve vašich složkách souvisejících s každou stránkou/kontextem. Zaměřujeme se také na zachování uspořádání textů a rozložení v každé komponentě, takže stránka importuje pouze komponenty, které ji tvoří.

/* /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;

Další doprovodné složky

    > hooks
    > public
        > images
        > fonts
        > icons
    > styles
    > utils
        > constants

Mimo složku pages což je standardní pro projekty Next.js, vytvořili jsme také složky pro uspořádání stylů, háčků a utilit, jako jsou globální konstanty projektu.

Oddělíme také složku public v dalších třech:obrázky, písma a ikony.

Pro šťastného vývojáře je organizace vším

Ano, můj přítel a můj přítel. Mít organizovaný projekt je to, co nás nutí pracovat každý den.

Věřím, že tento článek vám může pomoci, kdo nevěděl, jakou architekturu použít, když děláte ve svém projektu Next.js větší pořádek.