[원티드 프리온보딩] TIL - (6)

5월 8일

Todolist 팀 과제 리뷰

코드는 되도록이면 150줄이 넘지 않도록 한다.

코드가 너무 길어지면 가독성이 떨어지게 된다. 코드가 너무 길어지는 것 같으면 컴포넌트화 할 수 있는 부분은 컴포넌트화 하고, 반복 되는 부분은 변수나 함수로 처리하도록 한다.

프로젝트 예상 진행 기간

프로젝트 진행 중에 어떠한 불가피한 일이 일어날 지 모르므로 어느 정도 여유를 잡고 진행을 해야 한다. 또한 완성 후 테스트 과정에서 버그가 발견되는 경우도 많기 때문에 마감 전전날 ~ 전날은 테스트 기간으로 잡도록 한다.

린터 오류는 되도록이면 주석처리 하지 말고 직접 해결하도록 한다.

린터는 커뮤니티에서 자주 사용되는 컨벤션을 지키게 해주는 것은 물론 코드 작동 과정에서 발생할 수 있는 오류들을 미연에 방지해주는 역할을 한다. 그렇기 때문에 만약 린터 오류가 발생한다면 주석처리를 하는 한이 있더라도 원인은 확실하게 파악하는 것이 좋다.

store.js

localStorage에 쓰기 좋은 라이브러리이다. 원래라면 로컬스토리지 저장하고 불러올 때 JSON.stringify()나 JSON.parse() 등을 사용해야 하는 등 복잡한 과정을 거쳐야 하지만 store.js를 사용하면 이러한 수고를 덜어준다.

input이 enter로 submit되게 하려면?

버튼에 type=’submit’을 주거나 form을 활용한다.

html에서 제공하는 alert는 되도록이면 사용하지 않는다.

브라우저마다 나타나는 모양이나 기능도 조금씩 다르다.

Slick

Carousel을 구현할 때 유용한 라이브러리이다.

if문 내부를 길게 채우기 보단 밖으로 뺄 수 있다면 뺀다.

const itemElement = () => {
  if (array) {
    array.map((item) => {
      const key = `array-item-${key}`;
      return (
        <div key={key}>
          <span>{item.name}</span>
          <span>{item.category}</span>
        </div>
      );
    });
  }

  return null;
};

이렇게 if문 내부를 길게 작성하기 보단

const itemElement = () => {
  if (!array) return null;

  array.map((item) => {
    const key = `array-item-${key}`;
    return (
      <div key={key}>
        <span>{item.name}</span>
        <span>{item.category}</span>
      </div>
    );
  });
};

이런 식으로 작성하는 것이 더 직관적이고 좋다.

setTimeout은 항상 clearTimeout과 묶어써야 한다.

clearTimeout을 묶어서 사용하지 않으면 setTimeout이 진행 중일 때 페이지가 넘어가거나 다른 상호 작용이 발생하면 오류가 발생할 수 있다.

localStorage에는 initialState를 넣어줌으로써 시작시 오류를 방지할수있다.

localStorage에 있는 데이터를 가져올 때 만약 스토리지가 비어있다면 오류가 발생하기 떄문에 조건문으로 처리해줘야 하는 경우가 있다.
이럴 때 조건문으로 처리하기 보단 initialState를 활용하여 기본 정보를 넣어주면 더 깔끔하게 처리할 수 있다.

?? 연산자

const value = e.target.value ? e.target.value : 0;

와 같은 코드를

const value = e.target.value ?? 0;

로 작성할 수 있다.

Can I Use

Can I Use는 브라우저에 따른 호환성을 확인할 수 있는 사이트이다.

이미지 크기 최적화는 로딩 속도 향상에 필수

사이트에 렌더되는 이미지가 불필요하게 크면 로딩 속도 저하를 피할 수 없다. 그렇기 때문에 이미지를 삽입 하기 전에 여러 가지 조정을 해줘야 한다.
색이 많다면 jpeg로, 적으면 png로 해주는 것이 좋으며 svg의 경우 벡터로 처리가 제대로 되어 있어야 한다. 이를 쉽게 할 수 있도록 도와주는 사이트로는 Squoosh가 있다.

Date Picker

달력을 활용할 때 도움이 되는 라이브러리는 다양하게 존재한다.
예시로 React Date Picker가 있다.

JSON to TS

JSON 형식을 간단하게 TypeScript 타입 형식으로 변환해주는 extension이다.

Day.js vs Moment.js

Day.js는 Moment.js의 경량화 버전으로, 훨씬 가볍고 빠르다.