react
-
Yarn berry์์ React + Jest + Cypress + TypeScript + Github Actions CI/CD๋ฅผ ์ธํ ํด๋ณด์Unit Test & e2e Test & TDD 2021. 10. 11. 15:55
์ด ๊ธ์ Yarn berry package manager๋ฅผ ์ฌ์ฉํ์ฌ React ํ๋ก์ ํธ์์ ์ด๊ธฐ ์ธํ ํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃจ๊ณ ์์ผ๋ฉฐ, ์ฌ๋ฌ ์ํ์ฐฉ์ค๋ฅผ ๊ฒช์ด๊ฐ๋ฉฐ ๊ฒฝํํ ๊ฒ๋ค์ ํ ๋๋ก ์์ฑํ ๊ธ์ ๋๋ค.๐ ์ด ๊ธ์ ๋ชฉ์ ์ ๊ฒช์๋ ์ํ์ฐฉ์ค๋ค์ ํ ๋ฒ ๋ ๊ธฐ์ต์ ๋์๊ธฐ๊ธฐ ์ํด์ ์์ฑํ์์ต๋๋ค. ์ถ๊ฐ์ ์ผ๋ก TypeScript์ ํ๋ก ํธ์๋ e2e ํ ์คํธ ํ๋ ์์ํฌ Cypress, ํ๋ก ํธ์๋ unit ํ ์คํธ ํ๋ ์์ํฌ Jest ์ธํ ๊ณผ ๋๋ถ์ด Yarn berry์์ Github Actions์ ์ฌ์ฉํด CI/CD ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถ ํ Github Pages์ ๋ฐฐํฌํ๋ ๊ฒ๊น์ง ๋ด๊ณ ์์ต๋๋ค. ์ด ๋ด์ฉ์ ๊ฐ๊ฐ์ ๊ณต์ ๋ฌธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋์์ต๋๋ค. ํด๋น ์๋ฅผ ๋ด์ Github Repository๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์. ๐ Yarn ber..
-
์ฝ๋์จ 2๊ธฐ ๊ทธ 3๋ฌ๊ฐ์ ์ฌ์ !ํ๊ณ 2020. 12. 26. 15:13
๐ ์ด์ฉ๋ค๊ฐ ์ ์ฒญํ๊ฒ ๋์ด? ์ด์ง์ ๊ณํํ๊ณ ์์๋ค. 1์ ๋ง์ ํด์ฌํ๊ฒ ๋ค๊ณ ๋งํ๊ณ , ๋ค์ ์ฒ์์ผ๋ก ๋์๊ฐ๋ค๋ ์๊ฐ์ผ๋ก ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๊ฐ ๋๋ ๋ฐ ํ์ํ ๊ฒฐ์ ์ด์๋ค. ๋์๊ฒ ์์ด์ ๊ณต๋ถํ๋ ์ฆ๊ฑฐ์์ ์ฃผ๊ณ ์ฆ๊ธฐ๋ฉฐ ์ผํ ์ ์๊ฒ ๋ค๊ณ ํ์ ์ ์ค ํ๋ก ํธ์๋ ๋ ์…. ๊ทธ ๋ ์์ผ๋ก ์ธํด์ ๋๋ ์ง์ฒดํ ์ ์์๊ณ , ์ด์ง์ ์ํด์ ํ์ฌ์ ๋ค๋๋ ์์ค์ ํด๊ทผ ํ ๊ณต๋ถํ๊ธฐ๋ฅผ ๋งค์ผ ๋ฐ๋ณตํ์๋ค. ํ์ฌ๋ณด๋ค ํด๊ทผ ํ๊ฐ ๋์ ํ๋ฃจ ์์์ด๋ผ๊ณ ์๊ฐํ์ ๋งํผ ์ฆ๊ธฐ๋ฉฐ ๊ณต๋ถํ๋ ์์ค์ ํ์ฌ์ ๊ณผ์ฅ๋ ์ถ์ฒ์ผ๋ก ์ฝ๋์จ์ ์๊ฒ ๋์๋ค. ํผ์ ํ๋ก ํธ์๋๋ฅผ ๊ณต๋ถํ๋ฉด์ ์ด๋ ๊ฒ ํ๋ ๊ฒ ๋ง๋ ๊ฑธ๊น? ๋ผ๋ ์๋ฌธ์ด ๋ค์๊ณ , ๊ทธ ์๋ฌธ์ ํด๊ฒฐํด์ฃผ๊ธฐ ์ํด ๋๊ตฐ๊ฐ์ ๊ฐ์ด๋๊ฐ ํ์ํ๋ค ์๊ฐํ๊ณ , ํ์ฌ์ ๋ค๋๋ฉด์ ํ ์ ์๋ ์ ์ด ๊ฐ์ฅ ๋งค๋ฆฌํธ๋ฅผ ๋ง์ด ๋๊ผ๋ ๋ถ๋ถ..
-
โ ์ฐ์ํ ํ ํฌ๋ฌ๋ 3๊ธฐ: React & TypeScript 8ํ์ฐจ(๋ง์ง๋ง ํ์ฐจ)์ฐ์ํ ํ ํฌ๋ฌ๋ 3๊ธฐ 2020. 9. 26. 02:07
โ 9์24์ผ (๋ชฉ) ์ฐ์ํ ํ ํฌ๋ฌ๋ 3๊ธฐ 8ํ์ฐจ ๊ฐ์ ์ ๋ฆฌ ๐ 8ํ์ฐจ ๊ฐ์ ๋ชฉํ ๋ง์ง๋ง ์์ ์ดํด๋ณด๊ธฐ Mobx ์ดํด๋ณด๊ธฐ ๐ ์์ ์ดํด๋ณด๊ธฐ ๐ React-Router ์ด ์์ ๋ 1๋ ์ ์์ ๋ผ react-router ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ๋ฉฐ ๋ณด๊ธฐ๋ฅผ ๋ฐ๋๋ค. router์ ์งํ ๋์์ URL์ด ๋ฐ๋๋ ๊ฒ์ ๋ด๋ถ์ location์ path๋ฅผ ๊ฐ์งํด์ ํด๋น location์ ์ฃผ์์ ๋ง๋ ์ปดํฌ๋ํธ์ ์ฐ๊ฒฐ์์ผ์ฃผ๋ ๊ฐ๋จํ ๋์์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋ฒ ์ฌ์ด๋์์ ๋งํ๋ router์ ๋ค๋ฅด๋ค. ์๋ฒ ์ฌ์ด๋์์๋ ์์ฒญ URI end point path์ ๋ฐ๋ผ์ ๋ค๋ฅธ ๋น์ง๋์ค ๋ก์ง์ ์คํํ๋ ์ปดํฌ๋ํธ๋ฅผ ์ฐ๊ฒฐ์ํค๋ ๊ฒ์ด๊ณ ์ฌ๊ธฐ์์ router๋ URL์ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ๊ทธ๊ฒ๊ณผ mapping๋๋ ํ์ด์ง ์ปดํฌ๋ํธ๋ค์ ์ฐ๊ฒฐ์์ผ์ฃผ๋ ์ญ..
-
โ ์ฐ์ํ ํ ํฌ๋ฌ๋ 3๊ธฐ: React & TypeScript 6ํ์ฐจ์ฐ์ํ ํ ํฌ๋ฌ๋ 3๊ธฐ 2020. 9. 20. 20:45
โ 9์17์ผ (๋ชฉ) ์ฐ์ํ ํ ํฌ๋ฌ๋ 3๊ธฐ 6ํ์ฐจ ๊ฐ์ ์ ๋ฆฌ ๐ 6ํ์ฐจ ๊ฐ์ ๋ชฉํ webpack์ ๋ํ ํ๋ฆ ์ดํดํ๊ธฐ React & Typescript ์ดํด๋ณด๊ธฐ redux-saga ์ฌ์ฉํ๊ธฐ ๐ Webpack ํ๋ฆ ์ดํดํ๊ธฐ Webpack์ Webpack Cli๋ผ๊ณ ํ๋ ๋๊ตฌ๊ฐ ์กด์ฌํ๋ค. ๋จ์ง Hello world๋ฅผ ์ฐ๊ธฐ ์ํด์ ํ์ํ ์ค์ ๋ค์ด ์ด๋ ๊ฒ๋ ๋ง์ด ํ์ํ๋ค @babel/core๊ณผ ๊ฐ์ @๊ฐ ๋ถ์ฌ์ ธ ์๋ ๊ฒ๋ค์ ํธ๋์คํ์ผ๋ง ํ ๋ ์ฌ์ฉ๋๋ค. ์ผ์ข ์ ํ๋ก๊ทธ์ธ์ด๋ค. webpack์ webpack.config.js๋ผ๋ ์ด๋ฆ์ ๊ฐ๋ ์ค์ ํ์ผ์ ๊ฐ๋๋ค. ์ด๋ฆ ๋ณ๊ฒฝ๋ ์ ์์ง๋ง ๊ด๋ก์ ์ผ๋ก ์ฌ์ฉ๋๋ค. webpack์ webpack.config.js์ฝ์ด์ ์คํ์์ผ์ฃผ๋๋ฐ ์คํ์์ผ์ค ๋ config๊ฐ์ฒด๋ฅผ export..
-
โ ์ฐ์ํ ํ ํฌ๋ฌ๋ 3๊ธฐ: React & TypeScript 5ํ์ฐจ์ฐ์ํ ํ ํฌ๋ฌ๋ 3๊ธฐ 2020. 9. 19. 19:03
โ 9์15์ผ (ํ) ์ฐ์ํ ํ ํฌ๋ฌ๋ 3๊ธฐ 5ํ์ฐจ ๊ฐ์ ์ ๋ฆฌ ๐ 5ํ์ฐจ ๊ฐ์ ๋ชฉํ javascript๋ก ๋ง๋ Redux ๋ฆฌ๋ทฐ Redux์ ๋น๋๊ธฐ Redux ๋ฏธ๋ค์จ์ด ์์๋ณด๊ธฐ ๐ป Redux ๋ฆฌ๋ทฐ 2ํ์ฐจ๋ ๋ง๋ ๋ฆฌ๋์ค๋ฅผ ์ฌ์ฉํ์ฌ store์ reducer ์์ฑ ํด์ค๋ค. ์์ธํ ๋ด์ฉ์ ์ ๋งํฌ ์ฐธ์กฐ ๐ index.js import { createStore } from "./redux"; function reducer(state = { counter: 0 }, action) { switch (action.type) { case "inc": return { ...state, counter: state.counter + 1 }; default: return { ...state }; } } const store = ..
-
โ ์ฐ์ํ ํ ํฌ๋ฌ๋ 3๊ธฐ: React & TypeScript 4ํ์ฐจ์ฐ์ํ ํ ํฌ๋ฌ๋ 3๊ธฐ 2020. 9. 11. 23:26
โ 9์10์ผ (๋ชฉ) ์ฐ์ํ ํ ํฌ๋ฌ๋ 3๊ธฐ 4ํ์ฐจ ๊ฐ์ ์ ๋ฆฌ ๐ 4ํ์ฐจ ๊ฐ์ ๋ชฉํ ๐ป React ์ปดํฌ๋ํธ์ ์ํ์ ๊ด๋ฆฌ ๐ฏ ์ปค๋ฎค๋์ผ์ด์ !! ๐ค ๋น๋๊ธฐ์ ์ ๋๋ ์ดํฐ ํ์ ์คํฌ๋ฆฝํธ๋ ๋ค์์ฃผ๋ถํฐ! ๐คฉ ๐ React ์ปดํฌ๋ํธ์ ์ํ์ ๊ด๋ฆฌ React ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ ๋ค. index.jsimport React from "react"; import ReactDOM from "react-dom"; ReactDOM.render( , document.getElementById("root") ); App.jsimport React from "react"; const App = () => { return ( React and TypeScript 1ํ์ฐจ: Overview 2ํ์ฐจ: Redux ๋ง๋ค๊ธฐ 3ํ์ฐจ: React ๋ง๋ค๊ธฐ ..
-
โ ์ฐ์ํ ํ ํฌ๋ฌ๋ 3๊ธฐ: React & TypeScript 2ํ์ฐจ์ฐ์ํ ํ ํฌ๋ฌ๋ 3๊ธฐ 2020. 9. 7. 22:45
โ 9์ 3์ผ ์ฐ์ํ ํ ํฌ๋ฌ๋ 3๊ธฐ 2ํ์ฐจ ์ ๋ฆฌ ๐ 2ํ์ฐจ ๊ฐ์ ๋ชฉํ JavaScript์ ๋ํ ์ง์์ A~Z๊น์ง ํ ์ ์๋ ๋งํผ ํด๋ณด๊ธฐ! (70%) JavaScript์ ์์ฃผ ๊ธฐ์ด์ ์ธ ๋ด์ฉ๋ณด๋จ ์ ์ฒด์ ์ธ ํ๋ฆ์ ํ๋ฉด์ ์คํ๋ค์ ์ญ ํ์ด๋ณด๊ธฐ ์ํ๊ด๋ฆฌ์์ธ Redux๋ฅผ ์ง์ ๋ง๋ค์ด๋ณด๊ธฐ! ๋ง๋ค์ด๋ณด๋ฉด์ ์ด๋ค ๊ธฐ์ ๋ก ์ด๋ฃจ์ด์ ธ์๋์ง! (30%) ๐ JavaScript ํ์ด๋ณด๊ธฐ ๋ณ์์ ์ด ๊ฐ์ด๋ผ๋ ๊ฒ์ ๋ฃ์ ์ ์๋ค. var x = 10; //x: ๋ณ์ 10: ๊ฐ let y = 10; const z = 10; ๐ ๊ฐ์ ๋ํด์ ๐ ๊ฐ์ ๋ํด์ ๊ต์ฅํ ๊ฐ์กฐ๋ฅผ ํ์ จ๋ค. ์์ฃผ ๋ฐ๋ฅ์ ์ ๋๋ถ๋ณ์ ์์น๊ฐ์ ๊ฒ๋ค์ ์ธ์๋๊ณ (ex. 1=1, 1+1=2 ๋ถ๋ณ(๊ณต๋ฆฌ)) ์ด๋ฐ ์์น์ ์ถฉ๋ถํ ์ดํดํ๋ฉด ์๋ฌด๋ฆฌ ๋ณต์กํ ๊ฒ์ด๋ผ๋ ๊ทธ ์์น์ผ๋ก..
-
โ ์ฐ์ํ ํ ํฌ๋ฌ๋ 3๊ธฐ: React & TypeScript 1ํ์ฐจ์ฐ์ํ ํ ํฌ๋ฌ๋ 3๊ธฐ 2020. 9. 2. 23:10
๐ ์ฐ์ํ ํ ํฌ๋ฌ๋ 3๊ธฐ ๊ต์ก์ ์๋ ์คํ๋ผ์ธ์ผ๋ก 100๋ช ์ ๋ ๋ฝ์์ ํ๋ค๊ณ ํ๋๋ฐ, ์ด๋ฒ์๋ ์ฝ๋ก๋์ ์ํฅ์ผ๋ก ์จ๋ผ์ธ์ผ๋ก ์งํ๋์์ต๋๋ค. ๊ฑฐ๊ธฐ๋ค๊ฐ ์ด๋ฒ์๋ ์ฝ๋ก๋ ๋๋ฌธ์ ๋์ด ์์์ผํด์ ์ฝ 30๋ช ์ ๋ ๋ฝ์ ์๊ฐ์ด์๋ผ๊ณ ํ์ จ์ง๋ง, ์ฝ๋ก๋๊ฐ ์ฌํด์ ธ ์จ๋ผ์ธ์ผ๋ก ์งํ๋์ ์ฝ 400์ฌ๋ช ์ ๊ต์ก์์ผ๋ก ๋ฝ์๋ค๊ณ ํ์ จ์ต๋๋ค. ๊ทผ๋ฐ ์ด ๊ต์ก์ ๋ฃ๊ณ ์ถ์ด์ ์ง์ํ ์ฌ๋๋ง 1200์ฌ๋ช .. ๐ค ์ด์ ์ ์ธ ์ฌ๋์ด ๊ต์ฅํ ๋ง์ ๊ฑฐ ๊ฐ๋ค.. ์ด๋ฒ ๊ต์ก์ zoom์ ์ด์ฉํด์ ์จ๋ผ์ธ์ผ๋ก ์งํ๋์๊ณ , ๊ฐ์ฌ๋์ ์ฐ์ํํ์ ๋ค์ ๊น๋ฏผํ๋(์นํ๋ก ํธ์๋๊ฐ๋ฐ ๊ทธ๋ฃน์ฅ)์ด ์งํํ์ จ์ต๋๋ค. ๋ํ, 9์ ํ๋ฌ๋์ ํ, ๋ชฉ์ผ๋ก ์งํ๋๊ณ ์ด 8ํ์ฐจ๋ก ์งํ๋ ์์ ์ด๊ณ ์ ๋ ๊ณ์ ๋๋ ๋๋ง๋ค ๋ธ๋ก๊น ์ ํ ์์ ์ ๋๋ค. โ ๐ ์ฐ์ํ ํ ํฌ๋ฌ๋ 3๊ธฐ ๊ทธ ์ฒซ ์๊ฐ ์๊ฐ..