전체 글
-
클라이언트 빌드 및 배포Topic/Node.js | server 2022. 1. 11. 16:58
SSR / CSR ✔️ SSR ( Server Side Rendering ) 웹 페이지를 서버에서 렌더링하는 방식 브라우저가 서버의 URI로 GET 요청을 보내면, 서버는 정해진 HTML 파일을 브라우저로 전송한다. 이 HTML파일이 브라우저에 도착하면 유저가 바로 볼 수 있다. 서버에서 웹 페이지를 브라우저로 보내기 전에, 서버에서 완전히 렌더링했기 때문에 SSR이라 한다. 웹 페이지의 내용에 데이터베이스의 데이터가 필요한 경우, 서버는 데이터베이스의 데이터를 불러온 다음 웹 페이지를 완전히 렌더링 된 페이지로 변환한 후에 브라우저에 응답으로 보낸다. 유저가 브라우저의 다른 경로로 이동할 때마다 서버는 리렌더링을 한다. 장점 1. 웹 페이지 로딩이 빠르다. // view를 서버에서 렌더링해 가져오기 때..
-
Redux, React, action, reducer, storeTopic/React | Redux 2022. 1. 7. 22:14
Redux ✔️ Redux는 자바스크립트 앱에서 예측 가능한 상태 관리를 해주는 컨테이너다. 리액트에서 state와 props를 통해 상태 관리를 하고 상위 컴포넌트에서 하위 컴포넌트로 인자들을 넘겨주었는데, 만약 컴포넌트 중첩이 100만 개라면 디버깅에도 불리하고, 관리에 어려움이 따른다. 그래서 Redux가 출현하게 되었고, 세 가지 원칙을 가진다. Single source of truth 데이터를 한 곳에서만 관리한다. State is read-only 리액트에서 setState()를 통해서 state를 변경했지만, Redux에서는 action이라는 객체를 통해 state를 변경할 수 있다. Changes are made with pure functions 변경은 순수 함수로만 가능하다.(reduc..
-
React, 컴포넌트, Autocomplete 기능, ClickToEdit 기능 구현Topic/React | Redux 2022. 1. 5. 21:41
Autocomplete (자동완성) 구현 ✔️ 테스트 케이스들을 다 통과하지 못해 아쉬웠지만 구현된걸 보니 유용하게? 쓰일 것 같다 ! import { useState, useEffect } from 'react'; import styled from 'styled-components'; const deselectedOptions = [ 'rustic', 'antique', 'vinyl', 'vintage', 'refurbished', '신품', '빈티지', '중고A급', '중고B급', '골동품' ]; /* TODO : 아래 CSS를 자유롭게 수정하세요. */ const boxShadow = '0 4px 6px rgb(32 33 36 / 28%)'; const activeBorderRadius = '1r..
-
React, 컴포넌트 디자인, styled-component 적용Topic/React | Redux 2022. 1. 4. 22:17
리액트 컴포넌트 디자인 실습 ✔️ 리액트 모달 창 띄우기 ☑️ 삼항 연산자를 이용한 조건부 렌더링을 활용한다. alert창과 다르게 어두운 배경 태그 내부에 창 태그를 삽입해 구현한다. import { useState } from 'react'; import styled from 'styled-components'; export const ModalContainer = styled.div` // Modal을 구현하는데 전체적으로 필요한 CSS를 구현합니다. display: flex; justify-content: center; align-items: center; height: 100%; position: relative; `; export const ModalBackdrop = styled.div`ㅁ ..
-
REACT 컴포넌트 디자인, CDD, Storybook, useRef, Styled-ComponentTopic/React | Redux 2022. 1. 3. 22:04
CDD(Component Driven Development) ✔️ 개발 방법 중의 하나로, 부품 단위로 UI 컴포넌트를 만들어 나가는 개발 방법이다. CDD가 트렌드가 되면서, 이를 지원하는 도구 중 하나인 Component Explorer(컴포넌트 탐색기)가 등장했다. Storybook ✔️ UI 개발 // Component Driven Development를 하기 위한 도구다. 각각의 컴포넌트들을 따로 볼 수 있어, 전체 UI를 한눈에 보고 개발할 수 있다. 재사용성을 확대하기 위해 컴포넌트를 문서화한다. 자동으로 컴포넌트를 시각화하여 시뮬레이션할 수 있는 다양한 테스트 상태를 확인할 수 있다. 사전에 버그를 방지하며 테스트 및 개발 속도를 향상한다. 기본적으로 독립적인 개발환경에서 실행되기 때문에 ..
-
[정리] REACT, 데이터 흐름의 이해와 비동기Topic/React | Redux 2021. 12. 31. 21:16
Lifting State Up ✔️ props로는 상위에서 하위 컴포넌트로밖에 전달되지 못하기 때문에 하위 컴포넌트에서 state를 통해 상위 컴포넌트의 내용을 변경할 수 있다. props는 상위 -> 하위 컴포넌트로 전달하는 값이고, 하위에서는 객체로 받는다. Effect Hook ✔️ 리액트에서 순수 함수(only 함수의 입력만이 함수의 결과에 영향을 주는 함수)만 있는 것이 아니기 때문에 side effect가 발생한다. 발생되는 경우는 fetch를 이용해 외부 데이터를 이용하거나, localStorage에서 데이터를 받거나 setTimeOut과 같은 타이머를 사용할 때 등 발생된다. useEffect를 사용하여 side effect를 처리할 수 있는데, 최상위에서만 Hook을 호출하고, React..
-
EXPRESS, 리팩토링, MiddlewareTopic/Node.js | server 2021. 12. 30. 22:20
Node.js Express ✔️ MERN Stack: MongoDB, Express, React, Node 프레임워크 Express 장점: 미들웨어 추가가 편리하다. 자체 라우터를 제공한다. 기본 라우팅 ☑️ 라우팅은 URI 및 특정한 HTTP 요청 메소드(GET, POST 등)인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것을 말한다. 각 라우트는 하나 이상의 핸들러 함수를 가질 수 있으며, 이러한 함수는 라우트가 일치할 때 실행된다. app.METHOD(PATH, HANDLER) app은 express의 인스턴스 METHOD는 HTTP 요청 메소드 PATH는 서버에서의 경로 HANDLER는 라우트가 일치할 때 실행되는 함수 간단한 라우트의 정의 // 홈페이지에..
-
Web Server 기초, CORS, Node.js, HTTP 트랜잭션 해부Topic/Node.js | server 2021. 12. 29. 15:36
CORS ✔️ 고도화된 최근의 웹으로 인해 여러 곳의 리소스를 활용할 필요성이 대두되었고, 선배 개발자분들의 노력으로 CORS가 생겨나게 되었다. 예전과 다르게 same origin이 아니라 cross origin 요청을 해야 한다. Cross Origin Resource Sharing: cross origin에서 리소스(서버자원)을 요청하여 사용한다. const defaultCorsHeaders = { 'access-control-allow-origin': '*', 'access-control-allow-methods': 'GET, POST, PUT, DELETE, OPTIONS', 'access-control-allow-headers': 'content-type, accept', 'access-con..