--- title: Mappearkitektur info: En detaljeret gennemgang af vores mappearkitektur image: /images/user-guide/fields/field.png --- Header I denne guide vil du udforske detaljerne i projektmappe-strukturen og hvordan det bidrager til organiseringen og vedligeholdelsen af Twenty. Ved at følge denne mappearkitekturkonvention, er det lettere at finde de filer, der er relateret til specifikke funktioner og sikre, at applikationen er skalerbar og vedligeholdelig. ``` front └───modules │ └───module1 │ │ └───submodule1 │ └───module2 │ └───ui │ │ └───display │ │ └───inputs │ │ │ └───buttons │ │ └───... └───pages └───... ``` ## Sider Includes the top-level components defined by the application routes. They import more low-level components from the modules folder (more details below). ## Moduler Hvert modul repræsenterer en funktion eller en gruppe af funktioner, der omfatter deres specifikke komponenter, tilstande, og driftslogik. De bør alle følge strukturen nedenfor. Du kan indlejre moduler inden i moduler (kaldet undermoduler) og de samme regler vil gælde. ``` module1 └───components │ └───component1 │ └───component2 └───constants └───contexts └───graphql │ └───fragments │ └───queries │ └───mutations └───hooks │ └───internal └───states │ └───selectors └───types └───utils ``` ### Kontekster En kontekst er en måde at sende data gennem komponenttræet uden at skulle videregive rekvisitter manuelt ved hvert niveau. Se [React Context](https://react.dev/reference/react#context-hooks) for flere detaljer. ### GraphQL Indeholder fragmenter, forespørgsler og mutationer. Se [GraphQL](https://graphql.org/learn/) for flere detaljer. - Fragmenter Et fragment er en genanvendelig del af en forespørgsel, som du kan bruge forskellige steder. Ved at bruge fragmenter er det lettere at undgå duplikering af kode. Se [GraphQL Fragments](https://graphql.org/learn/queries/#fragments) for flere detaljer. - Forespørgsler Se [GraphQL Forespørgsler](https://graphql.org/learn/queries/) for flere detaljer. - Mutationer Se [GraphQL Mutationer](https://graphql.org/learn/queries/#mutations) for flere detaljer. ### Hooks Se [Hooks](https://react.dev/learn/reusing-logic-with-custom-hooks) for flere detaljer. ### Tilstande Indeholder tilstandsstyringslogikken. [RecoilJS](https://recoiljs.org) håndterer dette. - Vælgere: Se [RecoilJS Vælgere](https://recoiljs.org/docs/basic-tutorial/selectors) for flere detaljer. React's indbyggede tilstandsstyring håndterer stadig tilstand inden for en komponent. ### Værktøjer Bør kun indeholde genanvendelige rene funktioner. Ellers skal der oprettes brugerdefinerede hooks i `hooks`-mappen. ## UI Indeholder alle de genanvendelige UI-komponenter, der bruges i applikationen. Denne mappe kan indeholde undermapper som `data`, `display`, `feedback`, og `input` for specifikke typer af komponenter. Hver komponent bør være selvstændig og genanvendelig, så du kan bruge den i forskellige dele af applikationen. Ved at adskille UI-komponenterne fra de andre komponenter i `modules`-mappen, er det lettere at opretholde et konsistent design og foretage ændringer i UI uden at påvirke andre dele (forretningslogik) af kodebasen. ## Grænseflade og afhængigheder Du kan importere anden modul-kode fra ethvert modul undtagen `ui`-mappen. Dette vil holde dens kode let at teste. ### Intern Hver del (hooks, tilstande, ...) af et modul kan have en `intern` mappe, som indeholder dele, der blot bruges inden for modulet.