๋ง๋งํ ์ง๋ก ๊ณ ๋ฏผ์ ํด๊ฒฐํด ์ค ์ ๋ฐฐ์์ ํน๋ณํ ์ฝ์
๊ฐ์ ๊ณ์ด '์ '๋ฐฐ์์ ์ง๋ก ์๋ด '์ฝ'์, ์ ์ฝ
ใด ๊ฐ์ ๊ฒฝํ์ ๊ฐ์ง ์ ๋ฐฐ์์ ์ง๋ก ์๋ด์ ํตํด ๋ ๋ง์ถคํ๋ ์กฐ์ธ์ ๋ฐ์ ์ ์๋๋ก
ใด ๊ฐ์ ๊ณ์ด/์ํ๋ ์ง๋ฌด์ ์ ๋ฐฐ๋ฅผ ํฐ์น ํ๋ฒ์ผ๋ก ๋ ์ฝ๊ฒ ์ฐพ์ ์ ์๋๋ก
| ํ์ | ์ค์์ง |
์ด์ง |
์ด์ง์ |
์ด์๋ฆผ |
์กฐ์นํฌ |
|---|---|---|---|---|---|
| ํ์ ์๊ฐ | |||||
| ์ญํ |
WEB FRONTEND |
WEB FRONTEND |
WEB FRONTEND |
WEB FRONTEND |
WEB FRONTEND |
| ์ญํ | ์ข ๋ฅ |
|---|---|
| Library | |
| Programming Language | |
| Styling | |
| Data Fetching | |
| Formatting | |
| Package Manager | |
| Version Control |
"@emotion/react": "^11.11.4""@tanstack/react-query": "^5.48.0""react-calendar": "^5.0.0
|-- ๐ node_modules
|-- ๐ public
|-- ๐ src
|-- ๐ assets
| |--๐images
| |--๐svgs
| | - index.tsx
|-- ๐ components
| |--๐commons
- Header.tsx
- Footer.tsx
|-- ๐ hooks
| - useClickOutside.tsx
|-- ๐ pages
| |--๐APage
| | |--๐apis
| | |--๐components
| | | - LikeBtn.tsx
| | | - APageItems.tsx
| | | - Comment.tsx
| | |--๐constants
| | |--๐utils
| | | - modalPreventScroll.ts
| | |--๐types
| | | - APageItemType.ts
| | |
| | |-APage.tsx
| |--๐BPage
| |--๐CPage
|-- ๐ styles
| - GlobalStyle.tsx
| - theme.ts
| - style.d.ts
|-- ๐ utils
| |--๐apis
| -client.ts
|-- App.tsx
|-- main.tsx
|-- Router.tsx
|-- .eslintrc.json
|-- .prettierrc
|-- .stylelintrc1๏ธโฃ Branch Convention
Branch Naming Rule
prefix/#์ด์๋ฒํธ/์์
๋ด์ฉ
feat/#12/mainViewPrefix convention
| prefix types | ์๋ฏธ |
|---|---|
| โ๏ธ init | ํ๋ก์ ํธ ์ด๊ธฐ ์ธํ |
| โจย feat | ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ |
| ๐ ๏ธย fix | ๋ฒ๊ทธ, ์ค๋ฅ ๋ฑ์ ์์ |
| ๐ย design | ์คํ์ผ ์์ |
| ๐งฉย chore | ํ์ผ ์ญ์ , ํ์ผ๋ช ์์ , ์ฃผ์ ์ ๊ฑฐ, ์๋์ ์ฅ ์ ์ฉํด์ ๊ฐํ ๋ฐ๋ ๋ถ๋ถ, ๋น๋ํ ์คํธ ์ ๋ฐ์ดํธ, ํจํค์ง๋งค๋์ ๋ณ๊ฒฝ ๋ฑ๋ฑ ์ฃผ ํ๋ก์ฐ์ ๊ด๋ จ ์๋ ๊ฒฝ์ฐ |
| ๐ย docs | README๋ WIKI ๋ฑ์ ๋ฌธ์ ์์ |
| โป๏ธย refactor | ์ฝ๋ ๋ฆฌํฉํ ๋ง |
| ๐กย test | ํ ์คํธ ์ฝ๋, ๋ฆฌํฉํ ๋ง ํ ์คํธ ์ฝ๋ ์์ฑ |
| ๐ฅย !hotfix | ์น๋ช ์ ์ธ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ์ฌ ๊ธํ๊ฒ ์์ |
2๏ธโฃ Commit Convention
`prefix: ์ปค๋ฐ ๋ด์ฉ` โ `type`๊ณผ ์ฝ๋ก ํ ํ์นธ ๋๊ณ `์ปค๋ฐ๋ด์ฉ` ์์ฑ
- ex) feat: ๋ฉ์ธ ํค๋ ๋ทฐ ๊ตฌํ
- design: ๋ง์ง ๊ฐ๊ฒฉ ์กฐ์
prefix์ข ๋ฅ๋ ์์ ์ฐธ๊ณ !- ์ต๋ํ ์์ ๋จ์์ commit ์งํฅ
3๏ธโฃ Coding Convention
๐ ์ปดํฌ๋ํธ
rafce- ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ง
PascalCase์ฌ์ฉ :PostPage.tsx - ๊ทธ ์ธ์๋
camelCaseex) type, d.tsํ์ผ, tsํ์ผ :useClickOutside.ts - prop ํ์
Interface ์ ์ธ์
์ปดํฌ๋ํธ๋ช ~PropTypes
// PostPage.tsx
interface PostPagePropTypes {
title: string | undefined;
setTitle: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;
tempContent: string;
editContent: string;
setEditorContent: (content: string) => void;
setContentWithoutTag: (content: string) => void;
}
const PostPage = (props: PostPagePropTypes) => {
const { title, setTitle, tempContent, editContent, setEditorContent, setContentWithoutTag } = props;
...
}๐ ํด๋๋ช
- ๋ฌด์กฐ๊ฑด ์๋ฌธ์๋ก ์์ํ๊ธฐ!
- ์นด๋ฉ์ผ์ด์ค!
๐ ๋ณ์
-
var๊ธ์ง - ๋ณ์๋ฅผ ์กฐํฉํ์ฌ ๋ฌธ์์ด ์์ฑ์
โโ + โโ๊ธ์ง โํฌํ๋ฆฟ ๋ฆฌํฐ๋ด์ฌ์ฉ(๋ฐฑํฑ${}) - ๋ง์ฝ ๋ณ์์ ํ ๋น๋๋ ๊ฐ์ด
boolean์ธ ๊ฒฝ์ฐ ์ ๋์ฌis๋ถ์ด๊ธฐ :isActive -
map์ฌ์ฉ์ ๋ณ๋๋๋ ๋ฆฌ์คํธ๋ผ๋ฉดkey๊ฐ์ ๊ณ ์ ํ๊ฒ ์ ์ค์ ํด์ฃผ๊ธฐindex์ฌ์ฉ๊ธ์ง
๐ ํจ์
- ์ค๋ณต๋๋ ํจ์๋
utilsํด๋์ ๋ชจ์์ ์ฌ์ฌ์ฉํ๋ค. (๋จ์ ๋ณํ ํจ์, ๋ ์ง ๋ณํ ํจ์ ๋ฑ) - ์ค๋ณต๋๋ ์ปค์คํ
ํ
์
hooksํด๋์ ๋ชจ์์ ์ฌ์ฌ์ฉํ๋ค. (๋ชจ๋ฌ ๋ฐ๊นฅ๋ถ๋ถ ํด๋ฆญ์ ๋ชจ๋ฌ ๋ซํ๋ ํจ์ ๋ฑ) - ๋๋๋ก ํ์ดํ ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
๐ style
- style ํ์ผ ๋ถ๋ฆฌํ์ง ์์, ํด๋น ์ปดํฌ๋ํธ ํ๋จ์ ๋ง๋ค์ด์ ์ฌ์ฉํ๊ธฐ
- s dot ๋ค์ด๋ฐ ์ฌ์ฉํ์ง ์๊ธฐ
- ์ปดํฌ๋ํธ ๋ค์ด๋ฐ ๊ท์น :
WrapperโLayoutโContainerโBox์์๋ก ๋ด๋ฆฌ๊ธฐ - ์๋ฉํฑ ํ๊ทธ ์๊ฐํ๋ฉด์ ๊ฐ๋ฐํ๊ธฐ
- svg ํ์ผ ์ฌ์ฉ์
-
svg ๋ค์ด๋ฐ์
ํผ๊ทธ๋ง์ ์ง์ ๋ ๋ค์ด๋ฐ + **Ic**๋ก ํด์ ์ฌ์ฉ - ๋ง์ฝ svg์ ๋ค๋ฅธ ์คํ์ผ์ ์ถ๊ฐ๋ก ์
ํ์ผ ํ ๊ฒฝ์ฐ, Ic๋ฅผ
Icon์ผ๋ก ๋ฐ๊ฟ์ ๋ค์ด๋ฐ ํด์ฃผ๊ธฐ- svg ํ์ผ ๋ค์ด๋ฐ์ผ๋ก style์ด ์ ์ฉ๋ svg์ธ์ง ์๋์ง ๊ตฌ๋ถ ๊ฐ๋ฅ
-
svg ๋ค์ด๋ฐ์
// src > assets > svgs > index.tsx
export { default as DefaultProfileIc } from './defaultProfileIc.svg?react';
// src > pages > PageName.tsx
import { DefaultProfileIc } from './../../assets/svgs';
const PageName = () => {
return (
<>
<DefaultProfileIcon />
</>
)
}
const DefaultProfileIcon = styled(DefaultProfileIc)`
cursor: pointer;
`- ์คํ์ผ๋ ์ปดํฌ๋ํธ์์ prop๋ฅผ ์ด์ฉํ ๋๋
transient prop์ฌ์ฉ :$๋ก ์์ํ๋props๋ก ๋ด๋ ค์ค. - ๋จ์๋ rem ์ฌ์ฉ, ๋ณ๊ฒฝ์ด ํ์์๋ (border ๊ด๋ จ) ์์ฑ๋ง px ์ฌ์ฉ
## ๐ฅ ์ ๋ฐฐ๋ค์ ํธ๋ฌ๋ธ ์ํ






