1. emotion
- 자동 정렬
- 모질라에서 제안한 CSS 속성 기술 순서 따르기
- 코드 하단에 작성
- 컴포넌트 안에 같이 작성하기
- px 단위 대신 rem 단위 사용 (10px === 1rem)
- 스타일 컴포넌트라는 것을 알릴 네이밍
- Styled[컴포넌트명]
- 최상단 태그 이름은
Styled[컴포넌트명]
function Home() { return ( <StyledHome> ... </StyledHome> ); }
- (자율) container와 wrapper 구분해서 사용하기
container
는 주로 여러 개의 요소를 감싸는 div이고,wrapper
는 단일 요소의 레이아웃을 위한 div를 말한다.- (자율) 가독성과 추후 확장을 고려하여 css 속성 간 개행을 생활화
- (자율) 네이밍 참고
- div : '컴포넌트명'Box
- section : '컴포넌트명'Section
- ul : '컴포넌트명'List
- li : '컴포넌트명'Item
- p : '컴포넌트명'Paragraph
- span : '컴포넌트명'Span
2. 폴더명
- components 폴더 아래에서 소문자 폴더명 사용
- (base, template, domain) → 그 밑 컴포넌트는 대문자로 시작
- 폴더 안에 index.js가 존재하는 컴포넌트 같은 경우는 폴더 자체가 컴포넌트라고 취급하여 대문자로 시작
3. Event handler
- Function Names
on~~ = {handle~~}
<MyComponent onClick={this.handleClick} />
- 좀 더 복잡한 네이밍
on특징~~ = {handle특징~~}
<MyComponent onAlertClick={this.handleAlertClick} onFormSubmit={this.handleFormSubmit} />
- 상황에 맞게 2가지 방식 혼용
4. 변수
- Camel case 사용 (ex. camelCase)
- 변수는 var 사용 금지
- 예외 : 상수는 무조건 대문자, 언더바 조합 → EXAMPLE_NAME
- 배열과 관련된 변수명은 List / s
- boolean 타입의 변수는 가급적 is로 시작
- 변수 네이밍 아래 참고
buttonSearch searchButton ✅ btnSearch searchBtn
5. 함수
- Camel case 사용 (ex. camelCase)
- 함수명은 동사로 시작
- 화살표 함수 사용
const 함수명 = () => {}
6. 컴포넌트
- Pascal case 사용 (ex. PascalCase)
- 아래 형식대로 사용
interface 컴포넌트명Props function 컴포넌트명(props: 컴포넌트명Props) { const { 변수1, 변수2, 변수3 } = props; return ( ) } export default 컴포넌트명; // styled-components
7. 이미지
src/assets/icons
/ src/assets/images
src/assets/icons/index.ts
와 src/assets/images/index.ts
에 아래처럼 추가하여 사용// 아이콘 예시 export { default as icSample } from './icons/ic_sample.svg'; export { ReactComponent as IcSetting } from './ic_setting.svg'; // 이미지 예시 export { default as imgSample } from './images/img_sample.svg'; export { ReactComponent as ImgNewLink } from './img_new_link.svg';
8. 주석
리뷰어가 중점적으로 봐줬으면 하는 부분에 주석 달고 merge할 때 제거
코드 바로 위에 주석 달기
// 한 줄짜리
/* 여러 줄 */