Archive

2021-05-27 TIL

|

2021-05-27 TIL


  • 오늘 한 것

    1. 짤해 프로젝트 Authentication - firebase를 이용한 google 로그인을 구현했다. 어디서부터 시작해야할지 막막하기만 했으나, 여러 자료들을 찾아보고 공식문서를 뜯어보면서 차차 이해가 가기 시작했다. react-firebase 관련 여러 패키지를 많이 보았으나, 그냥 심플하게 firebase 패키지 하나만 설치하고 구현했다. 로그인 후 redux store에 사용자 정보를 저장하고 state에 따라 로그인 유저와 비로그인 유저에게 보이는 UI를 구분했다. 새로고침 하면 다 날라가는 정보들이라 내일은 로그인 유지와 페이스북 유지에 대해 더 알아봐야겠다.

  • 내일 할 것
    1. 짤해 프로젝트 Authentication
    2. 짤해 프로젝트 Google Search API



  • 끝으로

정말 막막하기만 할때는 여러 자료들을 보고 와 이게 뭐지? 하면서 더 머리가 복잡해질 때가 있다.

그럴땐 그냥 단순하게 생각하고 내가 알고있는대로 로직을 짜는게 해결법인것 같다.

오늘의 한 줄 총평 : 클론 프로젝트의 도움이 크다


2021-05-26 TIL

|

2021-05-26 TIL


  • 오늘 한 것

    1. Prettier, ESLint 설정 - Prettier는 그렇다 치고 ESLint 설정 방법은 언젠가 해야지하고 미루고 미루다가 오늘에서야 공부를 했다. 직접 적용해보면서 옵션들을 하나하나 뜯어본 것은 아니지만 적어도 어떻게 설정해야하는가에 대해서는 감을 잡았다.

    2. React Shopping Mall with React, Node.js - 장바구니 비우기 기능과 Paypal 결제 기능을 추가했다. Paypal 자체는 컴포넌트를 paypal쪽에서 다 지원하기 때문에 react-paypal-express-checkout 패키지를 설치하여 별다른 어려움 없이 구현했다. 문제는 결제 후에 무엇을 해주는가였다. 결제 정보를 서버에 전달해서 DB를 업데이트 시키고 결제 정보를 저장하는 것이 조금 복잡했다. 이번 클론 프로젝트는 정말 유용하고 배울점이 많았다.


  • 내일 할 것
    1. Typescript 이론 정리
    2. 짤해 프로젝트 설계



  • 끝으로

기존에 이미 안드로이드 앱으로 출시되어있는 짤해 앱을 웹 버전으로 포팅하는 작업을 진행할 예정이다.

리액트를 활용한 첫번째 프로젝트여서 소요기간은 감이 잘 오지 않지만 이번 프로젝트를 통해 많은 것을 배울 수 있을듯하다.

시간이 더 나면 타입스크립트로 리팩토링까지 해볼 계획이다.

오늘의 한 줄 총평 : 새로운 프로젝트 화이팅..


JS Day 17 Prettier, ESLint

|

JS Day 17 Prettier, ESLint


Prettier

세미콜론, 탭 사이즈, 콤마 등 코드를 깔끔하게 해주는 유용한 툴이다.

VSCode에서 prettier 설치 후 사용.

프로젝트의 root path에 .prettierrc 파일 생성 후 사용하고자하는 옵션을 적는다.

{
    "trailingComma": "all",
    "tabWidth":  2,
    "semi": true,
    "singleQuote": true
}

옵션 사양은 공식문서를 참고하자

VSCode의 기본 설정에서 format on save를 찾아 파일 저장 시의 서식을 지정할 수 있다.

체크 시 저장할 때마다 prettier가 적용되는 것을 볼 수 있다.


ESLint

prettier가 기본적인 코드 컨벤션을 커버했다면 ESLint는 자바스크립트의 문법을 검사할 수 있는 툴이다.

변수 선언 후 사용하지 않았을 때, 함수의 매개변수 개수 제한, Camel Case 강제 적용 등 세세하게 적용할 수 있는 룰이 엄청 많다.

VSCode Extension에서 ESLint 설치 후 사용.

Create-React-App에는 기본적으로 ESLint가 탑재되어 있다.

파일 저장 시 auto fix 기능을 켜고 싶다면 기본 설정에서 Eslint 검색 후 auto fix 박스를 체크하거나,

auto fix 항목이 없다면 커맨드 입력창을 열고 setting json 검색 후 Default Settings에서 바꾼다.

"editor.codeActionOnSave": {
    "source.fixAll.eslint": true
},
"editor.formatOnSave": true,


eslint rule을 직접 커스터마이징해서 사용할 수도 있고 google, airbab 등에서 만들어서 배포한 패키지를 설치하여 적용시킬 수도 있다.

ex) eslint-config-airbnb 패키지 설치 후 package.json에서 "eslintConfig": { "extends": "airbnb" } 추가

CRA같은 경우에는 이미 “react-app”이라는 rule이 적용되어 있으므로 동시 적용을 원한다면 배열 형태로 넣어주면 된다.

ex) "eslintConfig": { "extends": ["react-app", "airbnb" ] }

config 라이브러리 사용 시 주의할 점은 prettier로 관리할 수 있는 rule은 eslint에서 제외시키는 것이다.

안그러면 eslint 설정을 바꿔야할게 엄청 많아진다.

이를 위해서 eslint-config-prettier 패키지 설치 후 extends 뒤에 prettier를 추가하면 된다.

rules 커스터마이징은 package.json에서 eslingConfig 항목에 rules를 추가하여 이 곳에 옵션을 넣어주면 된다.

"eslintConfig": {
    "extends": [
        "react-app",
        "airbnb",
        "prettier"
    ],
    "rules": {
        "no-unused-vars": 1,
        "no-console": 0
    }
}

옵션의 가지수는 상당하므로 자세한 것은 공식문서를 참고하자.


특정 파일에 대하여 eslint 적용을 해제하려면 해당 파일의 최상단에 /* eslint-disable */ 주석을 삽입하면 된다.



참고 자료


Prettier DOC

Kakao Tech - ESLint

ESLint DOC

2021-05-25 TIL

|

2021-05-25 TIL


  • 오늘 한 것

    1. Typescript / typesafe-actions 패키지 - 액션과 리듀서를 정의할 때 코드를 간결하게 해주는 typesafe-actions 패키지의 사용법에 대해 배웠다. 강의 시점보다 패키지가 업데이트 되어서 사용법이 조금 바뀌어 혼란이 있었지만, 확실히 이 패키지를 사용하니 코드량이 줄긴 줄어들었다. 그래도 형태 자체가 눈에 익지않아서 프로젝트 적용은 고민좀 해봐야겠다.

    2. React Shopping Mall with React, Node.js - 상세 페이지와 장바구니 페이지를 구현했다. react-image-gallery 패키지와 antd 패키지와의 dependency 충돌이 일어나서 초반에 고생좀 했다. npm 에서 알려준 충돌 해결법 대로 패키지 설치 시 –legacy-peer-deps 옵션을 주어서 해결했지만 알아보니 충돌을 무시하고 가는 형태라 무조건적으로 사용하면 안될것같다. 장바구니 페이지는 다른건 둘째치고 몽고DB에서 제공하는 특별한 기능을 하는 키워드가 어려웠는데 이 부분은 따로 공부한적도 없고 내쪽 전문이 아니니 ..


  • 내일 할 것
    1. React에서의 Typescript 적용
    2. Typescript 이론 정리
    3. React Shopping Mall with React, Node.js 완성



  • 끝으로

이제 클론 코딩은 어느정도 끝이 났고 실전 차례이다.

오늘의 한 줄 총평 : 무섭지만 재밌겠다😂😂


2021-05-24 TIL

|

2021-05-24 TIL


  • 오늘 한 것

    1. Typescript 투두리스트 만들기 - 리액트에서의 타입스크립트 연습겸 투두리스트를 만들었다. 타입스크립트 이론을 알아도 react와 redux에서 어느 시점에 타입을 명시해야하는가가 어려웠다. 순전히 사용법의 문제인데 이 부분은 많이 만들어보고 연습을 하면 나아질듯하다. 그것보단 리액트 자체의 프로젝트 설계적인 부분이 문제가 많다..그냥 막 만들면 편하겠지만 redux store의 state를 여기저기 컴포넌트에서 남용하다보면 자칫하다가 스파게티 코드가 될 수가 있기때문에 container component와 presentational component를 애시당초 확실히 나누어야할 필요가 있다.

    2. React Shopping Mall with React, Node.js - 지난 강의에 이어서 이번에는 업로드한 게시물을 서버에 요청하여 DB에 저장하고 메인 LandingPage에 Card Layout 형태로 출력하는 작업을 했다. ant design 라이브러리로 이미지 슬라이드도 꽤나 간단히 만들 수 있었다. ant design으로 스켈레톤 UI도 만들어봐야겠다. 또, 더보기 버튼과 체크박스, 라디오박스를 이용한 검색 필터 기능도 만들었다. 더보기 버튼은 지난 팀 프로젝트에서 바닐라 JS로 완전 날로 구현할 때는 정말 애를 많이 먹었었는데 몽고DB를 이용하니 백엔드 부분이 정말 간단히 끝났다. skip과 limit으로 데이터를 일정 부분 끊어오는 부분이 정말 편했다. 팀 프로젝트에서는 한 번에 전체 데이터를 받아서 저장해놓고 버튼을 누를적마다 끊어서 view에 출력을 했었다. 스켈레톤 UI와 더불어 다음번에는 무한 스크롤까지 만들어봐야지.


  • 내일 할 것
    1. React에서의 Typescript 적용
    2. Typescript 이론 정리
    3. React Shopping Mall with React, Node.js 강의



  • 끝으로

주말 놀았으니 다시 마음 잡고 공부하자,, 😑

오늘의 한 줄 총평 : また頑張ろう