개발 공부를 시작하면서 처음 공부했던 JavaScript 라이브러리가 React 였는데, 이번 프로젝트에서 Vue js를 사용하게 될 것 같아서 공부를 시작했다. 새로운 언어나 프레임워크, 라이브러리 등을 처음 공부할 때 탄생 배경과 대표적인 특징 등을 알고 있으면 기본적인 틀을 잡는데 도움이 된다고 생각해서 이번에도 정리해보려 한다. 1. Vue js의 탄생배경AngularJS는 많은 기능들을 가지고 있는 강력한 프레임워크지만, 이러한 많은 기능들 때문에 사용하기 어렵고 프로젝트 구성이 복잡해지는 단점도 있었습니다. 이러한 복잡성으로 개발과 프로젝트 유지를 위해 많은 시간과 노력을 투자해야 하는 문제를 해결하고자 하는 의견들이 있었고, Google의 개발자 Evan You가 2014년에 Vue js를..
Immutability는 불변성이라는 의미이다.리덕스의 세 가지 원칙 중 State is read-only / Changes are made with pure functions가 있다. Redux의 데이터는 읽기 전용으로 마음대로 바꿀 수 없으며, state의 변화는 순수 함수를 통해 이루어져 한다는 것이다.여기에 불변성이 적용되는 것이다. 위 그림은 Reducer의 작동 방식을 나타낸 것인데, 이전 상태에 변화를 준 뒤에 다음 상태를 리턴하게 된다.입력으로 받은 이전 상태를 직접 변경하는 것이 아니라 새로운 생태 객체를 만들어서 리턴한다는 것이며, 또한 같은 입력에 대해서는 항상 같은 결과를 리턴한다는 것이다.입력으로 받은 이전 상태와 출력으로 받은 새로운 상태 모두 생성 이후는 변경할 수 없다는 점에..
개인 프로젝트가 끝나고 나서, 이번에는 상태 관리 라이브러리 중 압도적인 사용자를 보유한 Redux를 공부하고 있다. 포스팅을 통해 공부 내용들을 기록해보려 한다. 1. Redux의 탄생 배경SPA(Single Page Application)이 등장한 이후 다양한 요구사들을 적용하면서 웹사이트의 규모가 점점 커지게 되었다. 규모가 커진만큼 관리해야 state(상태)들이 많아지면서, 상태관리의 복잡도도 크게 증가하게 되었다.대표적으로 리액트의 관점에서 위 그림과 같이 수많은 컴포넌들과 그 안에 state들이 많아지면서 상태관리의 복잡도가 증가한 것이다. 이러한 결과로 가장 큰 문제는 언제 어디서 어떻게 상태가 업데이트 되는지 파악하기 힘들어 졌다는 것이었다. 개발자들이 이러한 과정을 파악하는데 어려움을..
이전에 리액트 관련 글을 작성하면서 단방향 데이터 방식이라는 것을 보면서 데이터 바인딩에서도 공부하고, 두 방식을 비교해두면 좋을 것 같았다. 1. 데이터 바인딩 (Data Binding)데이터 바인딩은 화면상에 보여지는 데이터(View) / 브라우저에 있는 메모리(Model)에 있는 데이터를 묶어서 서로 데이터를 동기하는 것을 의미한다. 요약하면, 두 데이터를 일치시키는 기법이다. 2. 단방향 데이터 바인딩먼저 이미지를 확인해보면 더 쉽게 이해가 가능하다.💡 컴포넌트 내에서는 Model(Javascript)에서 View(HTML)로 한 방향으로 데이터를 동기화=> 역으로 HTML에서 Javascript로의 직접적인 데이터 갱신은 불가능하고, 이벤트 함수를 호출해 Javascript에서 HTML로 ..
취업 준비를 하면서 2개의 프로젝트를 포트폴리오에 포함했는데 처음으로 혼자서 진행했던 프로젝트여서 그런지 코드를 다시 보니 고칠점들이 많이 보였다.또한, 더 공부한 지금 시점에서 리팩토링을 진행하면서 얼마나 성장 했는지 확인할 수 있을 것 같아 시간을 내서 리팩토링을 진행해보려 한다. 1. 문제점 => 목표1. 코드 가독성- Emotion을 사용하면서 스타일 컴포넌트들을 너무 무분별하게 사용했고, 컴포넌트명도 연관성이 떨어지는 등 이해하기 어려워 가독성이 떨어짐=> 컴포넌트명을 이해할 수 있도록 쉽게 변경하고, 불필요한 컴포넌트 수를 줄인다! - 같은 결과값을 가지는 로직을 컴포넌트 별로 중복해서 사용한 함수들이 있어 코드의 길이가 길어짐=> 훅을 통해 같은 결과값을 가지는 로직들을 간결하게 사용할 수..
이전 게시물에도 있지만 부트캠프 과정 중에 React를 활용해 CINEBANK라는 영화 정보 검색 및 리뷰 커뮤니티 서비스를 개인 프로젝트 과제로 진행한 적이 있었다.CINEBANK 프로젝트를 제출했을 때는 부족한 부분들도 많았고, 매우 만족스럽지 못했다.그런데 이번에 Next.js와 Sanity를 공부하면서 배운 내용을 적용해 개인 프로젝트를 진행해보고 싶었고, 부족했던 이전 영화 커뮤니티 서비스를 기획했던 것을 토대로 새로 만들어 보고자 했다. * 기술스택: Next.js, Typescript, Tailwind CSS, Sanity, SWR 1. 기능이전 프로젝트와 기능적인 부분에서는 큰 차이는 없다. 1. 로그인/회원가입- 구글 계정을 통해 로그인/회원가입 (회원가입 시 유저 데이터베이스 생성) ..
React를 강의로 처음 배웠을 때 조금 정리해두었던 내용인데 개념들을 몇 가지 더 추가해서 기록해보려한다. 어떤 기술을 배울 때 그 기술이 왜 생겼는지 알면, 조금 더 깊이 있게 이해하는데 도움이 된다는 강사님의 말씀을 듣고 정리해두었던 것이다. 1. 리액트의 탄생배경요약해서 순서대로 나열해보면, 1. 라이브러리/프레임워크 없이 HTML, CSS, Javascript로 DOM을 조작하고 이벤트를 발생시키는 등 웹 개발이 가능했음2. 웹이 발전하면서 웹 어플리케이션의 규모가 커지고, 관리해야 하는 Javscript 파일들이 많아지면서 코드가 복잡해짐4. 이후 이를 관리하기 위한 Backbone.js / Angular.js 등의 프레임워크가 만들어지고, Javascript의 특정 값이 바뀌면 특정 DOM..