프로젝트 디렉토리 구조
- 프런트앤드 프로젝트에 적용하기 위한 폴더 구조이다.
- 컴포넌트 디렉토리는 아토믹 디자인 패턴
Atomic Design Pattern을 따른다. - 각 디렉토리에는 index.ts 파일을 두어 컴포넌트에서 디렉토리명으로 참조할 수 있도록 한다.
- index.ts 샘플
index.ts export * from './atoms'export * from './molecules' - 컴포넌트 임포트
import {Button, ChatbotInput, Modal} from '@/components'
- index.ts 샘플
- 위에서처럼 사용하기 위해서는 컴포넌트 정의시 default export 구문을 사용하지 않고 각각의 컴포넌트 앞에 export 구문을 달아 주어야 한다.
- 옳은 사용 예
export const PageChatbot = () => {const navigate = useNavigate()const [statusDisplay, setStatusDisplay] = useState<boolean>(true)...}
- 옳은 사용 예
- index.ts 파일에 타입이나 컴포넌트 및 비지니스 로직과 관련된 코드를 선언해서 사용할 수 없다.
디렉토리 구조
Section titled “디렉토리 구조”Directorysrc
Directoryassets/
- …
Directorycomponents/
Directoryatoms/
- index.ts
Directorymolecules/
- index.ts
Directoryorganisms/
- index.ts
Directorytemplates/
- index.ts
- index.ts
Directoryhooks/
Directoryapi/
- index.ts
Directorystore/
- index.ts
- index.ts
Directorypages/
Directory(menu)/
Directory(sub_menu)/
Directorycomponents/
- index.ts
- index.ts
- index.ts
- index.ts
Directoryroutes/
- index.ts
Directorytypes/
Directoryapi/
- index.ts
- index.ts
Directoryutils/
- index.ts
-
어셋 디렉토리 (src/assets)
- 프로젝트에서 사용되는 이미지, 폰트, JSON 등과 같은 정적 파일들이 위치하는 공간
-
컴포넌트 디렉토리 (src/components)
- components/atoms (원자)
- 최소 단위 컴포넌트
- components/molecules (분자)
- atoms 컴포넌트의 조합으로 구성된 컴포넌트
- components/organisms (유기체)
- atoms 컴포넌트와 molecules 컴포넌트의 조합으로 구성된 컴포넌트
- components/templates (템플릿)
- 레이아웃/메뉴 컴포넌트가 위치하는 공간
- 데모 페이지가 위치하는 공간
- components/atoms (원자)
-
커스텀 훅 디렉토리 (src/hooks)
- hooks
- 커스텀 훅 파일이 위치하는 공간
- hooks/api
- 백앤드 연계를 위한 커스텀 훅 파일이 위치하는 공간
- 하위 디렉토리는 프로젝트의 메뉴 구분과 동일하게 구성된다.
- hooks/store
- 스토어 용도의 커스텀 훅 파일이 위치하는 공간
- hooks
-
페이지 디렉토리 (src/pages)
- pages
- 페이지 컴포넌트가 위치하는 공간
- 하위 디렉토리는 프로젝트의 메뉴 구분과 동일하게 구성된다.
- pages/
(menu)- 메뉴ID 또는 메뉴명을 디렉토리명으로 가진다.
- 메뉴 단위의 페이지 컴포넌트가 위치하는 공간
- 서브 메뉴가 있는 경우 서브 메뉴에 대한 디렉토리를 가질 수 있다.
- pages/
(menu)/(submenu)- 서브 메뉴ID 또는 서브 메뉴명을 디렉토리명으로 가진다.
- 서브 메뉴 단위의 페이지 컴포넌트가 위치하는 공간
- 서브 메뉴가 없는 경우 정의하지 않아도 된다.
- pages/
(menu)/(submenu)/components- 페이지 컴포넌트가 여러개의 하위 컴포넌트로 구성된 경우 하위 컴포넌트가 위치하는 공간
- pages
-
라우트 디렉토리 (src/routes)
- SPA
Single Page Application에서 사용되는 URL 기반의 라우팅 설정이 위치하는 공간.
- SPA
-
타입 정의 디렉토리 (src/types)
- types
- 공통 타입 설정이 위치하는 공간
- types/api
- 백앤드 연계를 위한 타입 설정이 위치하는 공간
- 하위 디렉토리는 프로젝트의 메뉴 구분과 동일하게 구성된다.
- types
-
함수 디렉토리 (src/utils)
- 공통으로 사용되는 함수가 위치하는 공간