--- title: Gidsargitektuur info: "'n Gedetailleerde kykie na ons vouerargitektuur" image: /images/user-guide/fields/field.png --- Header In hierdie gids sal jy die besonderhede van die projekgidsstruktuur ondersoek en hoe dit bydra tot die organisasie en onderhoudbaarbaarheid van Twenty. Deur hierdie vouerargitektuurkonvensie te volg, is dit makliker om die lêers wat verband hou met spesifieke funksies te vind en om te verseker dat die toepassing skaalbaar en onderhoudbaar is. ``` front └───modules │ └───module1 │ │ └───submodule1 │ └───module2 │ └───ui │ │ └───display │ │ └───inputs │ │ │ └───buttons │ │ └───... └───pages └───... ``` ## Bladsye Sluit die topvlakkomponente in wat deur die aansoekpaaie gedefinieer is. They import more low-level components from the modules folder (more details below). ## Modules Elke module verteenwoordig 'n funksie of 'n groep funksies, wat sy spesifieke komponente, toestande en operasionele logika insluit. Hulle moet almal die onderstaande struktuur volg. You can nest modules within modules (referred to as submodules) and the same rules will apply. ``` module1 └───components │ └───component1 │ └───component2 └───constants └───contexts └───graphql │ └───fragments │ └───queries │ └───mutations └───hooks │ └───internal └───states │ └───selectors └───types └───utils ``` ### Kontekste 'n Konteks is 'n manier om data deur die komponentboom te stuur sonder om props met die hand op elke vlak af te gee. Sien [React Konteks](https://react.dev/reference/react#context-hooks) vir meer besonderhede. ### GraphQL Sluit fragmente, navrae en mutasies in. Sien [GraphQL](https://graphql.org/learn/) vir meer besonderhede. - Fragmente 'n Fragment is 'n herbruikbare stuk van 'n navraag, wat jy op verskillende plekke kan gebruik. By using fragments, it's easier to avoid duplicating code. Sien [GraphQL Fragmente](https://graphql.org/learn/queries/#fragments) vir meer besonderhede. - Navrae Sien [GraphQL Navrae](https://graphql.org/learn/queries/) vir meer besonderhede. - Mutasies Sien [GraphQL Mutasies](https://graphql.org/learn/queries/#mutations) vir meer besonderhede. ### Hooks Sien [Hooks](https://react.dev/learn/reusing-logic-with-custom-hooks) vir meer besonderhede. ### States Bevat die staatbestuurslogika. [RecoilJS](https://recoiljs.org) hanteer dit. - Selektore: Sien [RecoilJS Selektore](https://recoiljs.org/docs/basic-tutorial/selectors) vir meer besonderhede. React se ingeboude staatbestuur hanteer steeds toestand binne 'n komponent. ### Gereedskap Moet net herbruikbare suiwer funksies bevat. Otherwise, create custom hooks in the `hooks` folder. ## UI Bevat al die herbruikbare UI-komponente wat in die toepassing gebruik word. Hierdie vouer kan sub-vouers bevat, soos `data`, `display`, `feedback`, en `input` vir spesifieke tipes komponente. Each component should be self-contained and reusable, so that you can use it in different parts of the application. Deur die UI-komponente van die ander komponente in die `modules` vouer te skei, word dit makliker om 'n konsekwente ontwerp te handhaaf en om veranderinge aan die UI te maak sonder om ander dele (sakelogika) van die kodebasis te beïnvloed. ## Koppelvlakke en afhanklikhede Jy kan ander module kode van enige module invoer behalwe vir die `ui` vouer. Dit sal sy kode maklik toetsbaar hou. ### Intern Elke deel (hooks, state, ...) van 'n module kan 'n `intern` vouer hê, wat dele bevat wat net binne die module gebruik word.