[React] Webpack - Plugin 사용
·
React/실험실
1. Plugin? Webpack의 Plugin은 로더보다 강력한 기능을 가지고 있다. 로더는 특정 모듈에 대한 처리만 담당하지만 Plugin은 Webpack이 실행되는 전체 과정에 개입할 수 있다. 2. 프로젝트 준비 npm install webpack webpack-cli react react-dom import React from "react"; import ReactDom from "react-dom"; const App = () => { return ( Webpack Plugin ); }; ReactDom.render(, document.getElementById("root")); 테스트를 위해서 간단한 React 프로그램 코드를 작성하였다. npm install @babel/core @babe..
[React] import React from 'react'는 어디에 쓰일까?
·
React/이론
1. import React from 'react' JSX 문법을 사용하면 우리는 import React from 'react'를 항상 사용한다. 하지만 실제로 해당 모듈을 우리가 사용한다는 느낌은 들지 않는다. Babel이 JSX 문법을 React.createElement 코드로 변환하기 때문에 우리가 실제로 사용을 하지 않지만 컴파일된 후 코드에는 React가 쓰이고 있다. 그렇기 때문에 우리가 사용한다고는 느끼지 못하지만 Babel을 통해서 React 모듈을 사용하고 있던 것이다.
[TypeScript] React에서 TypeScript 사용하기
·
TypeScript/기초
1. 이미 있는 React 프로젝트에 설치하기 npm install --save typescript @types/node @types/react @types/react-dom @types/jest 패키지를 설치하고 .js 파일을 .ts로 바꿔서 사용하면 된다. 2. React 프로젝트를 새로 만들 경우 npx create-react-app my-app --template typescript 명령어를 통해서 프로젝트를 만들면 TypeScript가 적용되어 있다.
[React] Webpack
·
React/실험실
0. Webpack? 웹팩은 모듈 번들러이다. 여기서 모듈은 각 리소스 파일을 말하고, 번들은 Webpack 실행 후 나오는 결과 파일이다. 하나의 번들 파일은 여러 모듈로 만들어진다. 즉, Webpack을 이용하면 우리가 제작한 여러 가지 리소스(js, css, ... )를 사용자에게 전달하기 좋은 형태로 만들 수 있다. 필요 이유? 초기 웹 페이지는 페이지가 바뀔 때마다 새로운 HTML을 요청해서 화면을 그리는 방식이었다. 자바스크립트는 돔을 간단하게 조작하는 역할만 했고, Ajax가 유행했을 때는 자바스크립트의 비중이 더 커졌지만 페이지당 자바스크립트 파일 몇 개면 충분했다. 하지만 SPA가 나오면서 하나의 HTML에 수십, 수백 개의 자바스크립트 파일을 포함하기 때문에 기존 방식이 통하지 않았다...
[React] gh-pages로 배포한 페이지가 새로고침 시 404 에러가 떠요!
·
React/버그
0. 사건의 발단 평화로운 어느날... 내가 만든 프로젝트를 Github에 배포를 해서 테스트를 진행했는데, 지난번 경로를 인식 못하는 문제 외 페이지에서 새로고침 시 404 에러가 나왔다.... 1. 문제 이유 github pages는 SPA를 지원하지 않기 때문에, URL이 https://도메인 으로 지정되어있다. 그래서 https://도메인/프로젝트명/라우터명 에서 새로고침을 할 경우 Github는 /프로젝트명/라우터명을 모르기 때문에 404 에러와 함께 404.html 페이지를 리턴한다. 2. 해결 방법 편법이지만, 404.html을 사용한다. 빌드를 하고 결과물의 index.html 파일을 404.html 파일로 복사해서 같이 빌드해주면 된다. "scripts": { ... "deploy": "..
[React] gh-pages로 배포한 페이지가 router를 제대로 인식 못해요!
·
React/버그
0. 사건의 발단 평화로운 어느 날... 나는 내가 만든 프로젝트를 Github에 배포하기 위해서 작업을 진행했다. 분명 로컬에서는 문제없던 프로젝트인데 배포분에서는 원하던 페이지가 나오는 것이 아닌 메인 페이지가 나왔다... 1. 문제 이유 Github는 도메인/페이지 방식이 아닌 도메인/프로젝트명/페이지 방식이어서 라우터를 이동했을 경우 도메인/페이지로 이동되어서 이상한 페이지로 이동된 것이다. ex) https://seojaewan.github.io/react-sns-login/ React Project! seojaewan.github.io = 구글 페이지 이동 => https://seojaewan.github.io/Google?type=Setting/ seojaewan.github.io 뒤에 있던..
[React] Webpack 프로젝트가 페이지 이동 시 404 에러가 뜬다!
·
카테고리 없음
0. 사건의 발단 평화로운 어느날.... cra(create-react-app)이 아닌 webpack으로 만든 프로젝트에서 react-router-dom을 사용하니 이동한 페이지에서 새로고침을 했을 때 404 에러가 나타났다... 1. 문제 이유 브라우저가 React 서버에게 "/경로"에 GET을 보내지만 실제 서버에서는 "/경로"에 대한 정보가 없기 때문이다. 이런 오류를 connect-history-api-fallback 현상이라고 한다. SPA는 보통 웹 브라우저에서 액세스할 수 있는 하나의 색인 파일(index.html)만 사용한다. 그래서 특정 경로에서 새로고침 등을 했을 경우 서버가 해당 파일을 찾을 수 없어 발생한 문제이다. 2. 해결 방법 historyApiFallback: true 추가하..
[React] Babel과 Polyfill
·
React/실험실
1. Polyfill? 자바스크립트의 최신 기능을 모두 사용하면서 오래된 브라우저를 지원하려면 Babel로 코드 문법을 변환함과 동시에 Polyfill도 사용해야 한다. Polyfill은 런타임에 기능을 주입하는 것을 말한다. 런타임에 기능이 존재하는지 검사해서 기능이 없는 경우 주입한다. Babel을 사용하면 최신 자바스크립트 표준에 추가된 모든 기능을 사용할 수 있다고 생각하겠지만 Polyfill에 대한 설정은 별도로 해야 한다. 예를 들어 ES8에 추가된 String.padStart 메서드는 폴리필을 통해서 추가할 수 있다. if (!String.prototype.padStart) { String.prototype.padStart = func; } func는 padStart 폴리필 함수이다. 2. ..