--- title: Архитектура фасцикли info: Детаљан преглед наше архитектуре фасцикли image: /images/user-guide/fields/field.png --- Header У овом водичу ћете истражити детаље структуре пројектног директоријума и како она доприноси организацији и одрживости Twenty. Пратећи ову конвенцију архитектуре фасцикли, лакше је пронаћи датотеке везане за специфичне карактеристике и обезбедити да је апликација скалабилна и одржива. ``` front └───modules │ └───module1 │ │ └───submodule1 │ └───module2 │ └───ui │ │ └───display │ │ └───inputs │ │ │ └───buttons │ │ └───... └───pages └───... ``` ## Странице Includes the top-level components defined by the application routes. They import more low-level components from the modules folder (more details below). ## Модули Сваки модул представља функционалност или групу функционалности, састављен од специфичних компоненти, стања и оперативне логике. Сви би требало да прате наведену структуру. Можете угнездити модуле унутар модула (названи подмодули) и исте ће се применити правила. ``` module1 └───components │ └───component1 │ └───component2 └───constants └───contexts └───graphql │ └───fragments │ └───queries │ └───mutations └───hooks │ └───internal └───states │ └───selectors └───types └───utils ``` ### Контексти Контекст је начин преношења података кроз дрво компоненти без потребе за ручним преносом пропса на сваком нивоу. Погледајте [React Context](https://react.dev/reference/react#context-hooks) за више детаља. ### ГрафКуЕл Обухвата фрагменте, упите и мутације. Погледајте [GraphQL](https://graphql.org/learn/) за више детаља. - Фрагменти Фрагмент је поново употребљив део упита, који можете користити на различитим местима. Коришћењем фрагмената, избегава се дуплирање кода. Погледајте [GraphQL Fragments](https://graphql.org/learn/queries/#fragments) за више детаља. - Упити Погледајте [GraphQL Queries](https://graphql.org/learn/queries/) за више детаља. - Мутације Погледајте [GraphQL Mutations](https://graphql.org/learn/queries/#mutations) за више детаља. ### Хукови Погледајте [Hooks](https://react.dev/learn/reusing-logic-with-custom-hooks) за више детаља. ### Стања Садржи логику управљања стањем. [RecoilJS](https://recoiljs.org) се носи са овим. - Селектори: Погледајте [RecoilJS Selectors](https://recoiljs.org/docs/basic-tutorial/selectors) за више детаља. React-ово уграђено управљање стањем још увек обрађује стање унутар компоненте. ### Алатке Треба да садржи само поново употребљиве чисте функције. Otherwise, create custom hooks in the `hooks` folder. ## UI Садржи све поново употребљиве UI компоненте које се користе у апликацији. Ова фасцикла може садржати подфасцикле, као што су `data`, `display`, `feedback`, и `input` за специфичне типове компоненти. Свака компонента треба да буде самостална и поново употребљива, тако да је можете користити у различитим деловима апликације. By separating the UI components from the other components in the `modules` folder, it's easier to maintain a consistent design and to make changes to the UI without affecting other parts (business logic) of the codebase. ## Интерфејс и зависности Можете увезти други модулски код из било ког модула осим `ui` фасцикле. Ово ће задржати његов код лак за тестирање. ### Интерно Сваки део (хукови, стања, ...) модула може имати `internal` фасциклу, која садржи делове који се користе само унутар модула.