엔지니어링에서는 반드시 이유가 있어야 한다!!!!!!!!!!!
김민태님:타입스크립트의 타입은 런타입이 아닌 컴파일 타입을 작성하는 것이다. 런타임의 다른 속성이 들어온다고 해도 이미 타입스크립트가 아니기 때문에 걱정할 필요가 없다. any를 사용하면 이유가 없어진다.
Q. 두개 로그인의 차이점?
Q. react-google-login 오피셜 패키지인가?
https://www.npmjs.com/package/react-google-login
Q. 정상적으로 로그인 된 건 어떻게 확인?
Q. props 의 history ? 사용하고 있는 history 만 넣어놓으면 된다.
Q. 소셜 로그인으로 얻은 token은 서버에서도 관리하시나요?
→ 김민태님: 일반적으로 소셜 로그인으로 얻은 token은 저장을 해야 한다. 저장하지 않으면 매번 저장해야 하기 때문이다. 토크에도 다 유효기간이 있다. token 과 관련해서 복잡한 구성을 갖고 있는 게 많다. oauth 제공하는 것마나다 다르다. refresh token, access token .. 등 여러개 많다. 토큰이 너무 오랫동안 살아나면 문제가 있음!
직접 구현하면 passport 보다 더 간단할 수 있다. 추상화 층이 복잡하기 때문에 그 추상화 층을 따라가야 한다. 몇개의 콜백 url 과 관리하는 것? 특별하게 복잡하진 않을 것이다.
백엔드에서 인증, 클라이언트 인증 → 보안적 이슈도 있지만, 클라이언트 인증은 단점은 react-router 를 계속 들고다녀야 한다는 것이다. 백엔드 단에서 미리 작동하기 전에 url을 체크하고 있기 때문이다. 즉 클라이언트 앱을 훨씬 더 깔끔하게 만들 수 있을 것이다. 추가적으로 현재 방식이 팝업 방식이 아니다 보니까 사용자 경험이 나을 것 같다. 팝업이 떴을 때 막히는 경우도 있기 때문에 여러가지 측면에서 백엔드 단에서 oauth를 붙이는 게 장점이 많은 것 같다.
Q. 프론트에만 구글 로그인으로 구현하시는 분들은 시크릿키 어떻게 관리? 시크릿 키는 서비스 사용자들이나 다른 사람들에게 노출 되면 안되는데 어떻게 관리하고 있을까요?
→ 클라이언트에서는 secreat key 를 사용하지 않고, client_id와 scope 만 사용한다.
웬만한 서비스들은 네이버, 구글, 카카오 로그인 등을 많이 지원한다. 클라이언트 개발할 때는 oauth 개발은 필수적으로 거쳐가는 관문이다. (사용자 입장에서는 편하므로) oauth 관련해서는 필수적으로 지식을 갖고 있어야 한다!
Q. 클래스를 쓰는 게 익숙해보이는데 ..?
→ 하나의 모듈? 지금은 모듈이 여러가지로 나뉘게 되니까 클래스로 나눠서 어떤 클래스 이하에 무엇을 할지, 추상화를 해놓으면 편할까 싶어 활용하게 되었다.
→ 김민태님: 단독으로 패키지로 사용해서 그것을 끌어다가 사용하는 게 좋지 않을까? 모노레포의 형태? 깃의 서브 모듈과 같은 형태!
모노레포 : 다양한 모듈을 여러개의 레포지터리로 관리하지 않고, 하나의 레포지토리로 관리하는 것을 의미한다.
출처: https://geonlee.tistory.com/147 [빠리의 택시 운전사]
Q. index.ts, utils.ts ?????
→ 폴더를 만들어서 index.ts 를 하는 방식을 더 선호한다 그 이하에서 파일을 나누고 싶을 때/파일이었다가 폴더로 만들어야 하는 등의 번거로운 느낌이 들었다. 모듈 디렉토리 이하에서 추가해서 만들면 되므로 이런 구성을 선호한다.
김민태님: 순수 바닐라스크립트보다는 자연스럽게 코드들이 길어지는 경향이 늘어나긴 것 같다. 뭐가 좋을까? 너무 길어도 좋지만, 적정 수준의 디스크립션을 선호하는 게 좋지 않을까 싶다.
Q. import 와 같은 것을 사용할 때 이름의 클래스를 사용할 일이 생기면 앞에 패키지 명이 길게 붙어야 해서 최대한 유니크한 이름을 지으려고 해요 ...
→ good...
Q. 클래스 잘 쓰고 싶은데 그런 사고 방식 어떻게 기를 수 있을까?
→ 인터페이스를 매우 중요하게 생각한다. 외부에서 이 클래스를 어떻게 활용할지 고민한다.
→ 김민태님: 많이 해보는 게 답이다.
Q. async, await 구문이 아닌 then 을 사용하는 이유가 있으신가요?
→ 상황에 따라서 다르다. 구조에 따라
→ promise 구문이 시각적으로 논리가 구분돼서 더 읽기 편하다.
→ then 구문으로도 충분히 가능할 것 같다.
김민태님: 프론트 엔드 개발자들이 클래스를 안쓰는 경향성이 짙다. 클래스를 아예 하나도 사용하지 않고도 개발이 가능한데, 그게 옳은지는 잘 모르겠다. 클래스를 이용해서 모델링, 추상화를 잘할 수 있다. UI 자체를 클래스로 레고 블록처럼 조립하는 시도를 할 수도 있다. 사실 리액트로 개발하면 인스턴스를 만들 일이 거의 없다. 인스턴스 객체를 본적이 없는데 클래스를 어떻게..? 하지만 소프트웨어 엔지니어라면 언제까지나 리액트만 사용할 수는 없다!
기본적으로 같이 시작해도 된다, 공부가 끝나서 다음 것을 한다는 것은 학습의 속도만 늦추는 것이다. 동시에 하고 꾸준히 연마해야 한다. 기본적으로 공부만 한다고 해서 자바스크립트 학습은 완성시킬 수 없다. 그 다음 챕터로 넘어가는 건 말이 안된다. 자바스크립트가 어렵다고 생각해도 같이 동시에 하면서 뛰어들면 좋을 것 같다.