Ajax๋ js๋ฅผ ์ด์ฉํ ๋น๋๊ธฐ ํต์ ์ผ๋ก, ํด๋ผ์ด์ธํธ ์๋ฒ ๊ฐ์ xml(Extensible Markup Language)๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ธฐ์ ์ด๋ค. ์ ์ฒด ํ์ด์ง๋ฅผ ๋ฆฌ๋ก๋ํ์ง ์๊ณ ํ์ํ ๋ฐ์ดํฐ๋ง ๋ก๋ํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค. Ajax ๋ฐฉ์์ ์ด์ฉํ ์น API๋ XMLHttpRequest ๋ถํฐ ์์ํ์ฌ fetch๋ฅผ ๊ฑฐ์ณ axios๊น์ง ๋ค์ํ๋ค. XMLHttpRequest๋ ๋ณต์กํ๊ณ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๊ธฐ ๋๋ฌธ์ fetch api๊ฐ ES6์์๋ถํฐ ํ์ค์ด ๋์๋๋ฐ, ๋ฐ๋ผ์ ํ์ฌ fetch api๋ ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ฐ๋ก ์ค์นํ์ง ์๊ณ ์ฌ์ฉํด๋ ๋๋ค. axios๋ Node.js์์ XMLHttpRequests๋ฅผ ์ฌ์ฉํ๊ธฐ ์ข๊ฒ ๋ง๋ค์ด๋ api์ด๋ฉฐ ๋ฐ๋ก ์ค์นํด์ฃผ์ด์ผ ๋์ํ๋ค. TOP Ajax API๋ฅผ ์ฐธ๊ณ ํ๋ฉด ๋ ๋ง์..
ECMAScript ๊ณต๋ถ ES5 ์ด์ ES3 (1999) : ์ ๊ทํํ์, try/catch๋ฌธ string string.length : ๊ธธ์ด ์์ฑ string.indexOf(string, [start]) : ํด๋น ๊ธ์์ ์์ index ์์น ๋ฐํ string.lastIndexOf(string, [start]) : ํด๋น ๊ธ์์ ๋ง์ง๋ง ์์ index ์์น ๋ฐํ string.search(string) : indexOf์ ๋น์ทํ์ง๋ง ์ ๊ทํํ์ ์ฌ์ฉ x string.slice(index, index2) : index๋ถํฐ index2-1๊น์ง ์๋ฅด๊ธฐ ์์ index๋ ๋ค์์๋ถํฐ ์ string.substring(index, index2) : slice์ ๋น์ทํ์ง๋ง, ์์ ๋ถ๊ฐ string.substr(index, l..
html2canvas + ์ด๋ฏธ์ง ํธ์คํ *์์ ๋ React Hook ํ๊ฒฝ์์ ์งํ๋์์ต๋๋ค. ๊ฒฐ๊ณผ table์ ์ด๋ฏธ์ง๋ก ๋ง๋ค์ด ๊ณต์ ํด์ผํ๋ ์๊ตฌ์ฌํญ์ด ์์๋ค. ์๊ตฌ์ฌํญ์ ์ํํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ๋ฅผ ์์ฐจ์ ์ผ๋ก ํด๋ด์ผํ๋ค. html table์ ์ด๋ฏธ์ง๋ก ๋ง๋ค๊ธฐ ๋ง๋ค์ด์ง ์ด๋ฏธ์ง๋ฅผ ํธ์คํ ํ๊ธฐ ํธ์คํ ๋ ์ด๋ฏธ์ง๋ฅผ ์นด์นด์คํก api๋ฅผ ์ด์ฉํ์ฌ ๊ณต์ ํ๊ธฐ ์ฐจ๋ก๋๋ก ํด๋ณด์. html table์ ์ด๋ฏธ์ง๋ก ๋ง๋ค๊ธฐ DOM์์๋ฅผ ์ด๋ฏธ์ง๋ก ๋ง๋ค ๋, html2canvas๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ฃผ๋ก ์ฐ์ธ๋ค. import html2canvas from 'html2canvas'; const copyDOM = async () => { window.scrollTo(0, 0); let url = ""; await html2canvas(..
module.exports = { 'parser': '@typescript-eslint/parser', 'plugins': ['@typescript-eslint'], 'env': { 'commonjs': true, 'browser': true, 'es2021': true, 'node' : true }, 'extends': [ 'airbnb', 'airbnb/hooks', 'plugin:@typescript-eslint/recommended' ], 'parserOptions': { 'project': './tsconfig.json', 'ecmaFeatures': { 'jsx': true, }, 'ecmaVersion': 12, 'sourceType': 'module', }, 'rules': { 'inden..
Typescript ์ฐธ๊ณ : https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html (Typescript ๊ณต์ ์ฌ์ดํธ) ๋ฐฐ์ฐ๋ ์ด์ JS์์๋ Type์ด ๊ณ์ ์ฒดํฌ๋์ง ์๋๋ค. 1. ์ด๋ ์๋ฌต์ ํ๋ณํ, hoisting, ๋ณต์ก์ฑ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๋ค. ์ด๋ฌํ ์ฝ๋ ์์ ์์์น ๋ชปํ ๋ฒ๊ทธ๋ฅผ ์์ ๊ธฐ ์ํด typescript๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ค. hoisting : ๋์ด์ฌ๋ฆฐ๋ค๋ ๋ป. javascript์์ ์ ์ธ๋ฌธ์ ๋์ด์ฌ๋ ค ์ฝ๋์์ ์ฌ์ฉํ ๋ ์์์ ์๊ด์์ด ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ํ๋ ๊ธฐ์ . typescript๋ ๋ณต์กํ ์์ธ์ฒ๋ฆฌ ์ฝ๋ ์์ด ์ด๋ฅผ ์ํํ๋ค. 2. ํ์ ์์๋ ์ถํ์ ๋ณธ์ธ์ด ์ง ์ฝ๋๋ฅผ ๋ณด์์ ๋ ํ์ ์ด ์ ์๋์ด ์์ง ์๋ค๋ฉด ํ๋..
[2021-03-04 ์ต์ข ์์ ] ๋ฐ๋จ KOS ํ๋ก์ ํธ ์งํ ์ค์ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Redux, Mobx)๋ฅผ ์ถํ ๋์ ํ๊ธฐ๋ก ํ๊ณ , ๋จผ์ MVVM ํจํด๋ง ์ฌ์ฉํ๊ธฐ๋ก ํ์๋ค. ํ์ง๋ง ๊ธฐ์กด์ ๋์์๋ ํด๋ ๊ตฌ์กฐ๋ค์ ๋ชจ๋ react์ Redux / Mobx ๋ฅผ ์ฐ๋ํ์ฌ ๋ง๋ค์ด๋ธ ๊ตฌ์กฐ๋ค์ด์๋ค. ๋ค์์ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ MVVM ํจํด์ ๊ตฌํํ ์ฌ์ดํธ์ด๋ค. https://github.com/davinci2015/react-mvvm-pokemon ( Class ์ด์ฉ ) https://velog.io/@dlrmsghks7/whatismvvmpattern ( Hook ์ด์ฉ ) ์์ ์ฌ์ดํธ๋ค์์ ์ ์ํ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ณด์. View, View Controller, View Model, Model..
๊ฐ์ YAML : YAML Ain't Markup Language ์ฌ๊ท๋ฅผ ํตํด ์ด๋ฆ์ง๊ธฐ ์ฟ ์ฟ ๊ธฐ์กด์๋ ํ๋ก๊ทธ๋จ์ ์ค์ ์ ์ ์ฅํ๊ณ ์ฝ๋๋ฐ์ xml ํ์์ ์จ์๋ค. ํ์ง๋ง ์์ฑ์ด ๋๋ฌด ๊ท์ฐฎ์์ ๋ค๋ฅธ ๋ฐฉ์์ ๊ฐ๊ตฌํ๊ฒ ๋์๋ค. ์ ๋ณด๋ฅผ ์ ์ฅํ ์๋ง ์๋ค๋ฉด ๋ค๋ฅธ ๋ฐฉ์๋ ๊ฐ๋ฅํ๋ค. ๊ทธ๋์ ๋์จ๊ฒ json ํ์ผ ํ์์ด๋ค. json์ ๊ฐ์ฒด ํ์์ผ๋ก xml๋ณด๋ค๋ ๊ฐํธํ ์์ฑ์ด ๊ฐ๋ฅํ๋ค. ํ๋ ๋ ์ฝ๊ฒ ์์ฑํ ์ ์๋ ํ์์ด ๋ฐ๋ก YAML ํ์์ด๋ค. YAML์ ๊ฐ๋ ์ฑ์ด ์ข์์ JSON์ ๋นํด ๊ตฌ์กฐ๊ฐ ๋ณต์กํ์ง๋ง ์ฌ๋์ด ๋ณด๊ธฐ์๋ ์์ฐ์ค๋ฌ์ด ํํ์ด๋ค. ์ด์ ๋ฐ๋ผ YAML์ ์ค์ ํ์ผ์ ๋ชฉ์ ์ผ๋ก ๋ง์ด ์ฐ์ด๊ณ , JSON์ ์ค์ ํ์ผ์ ์ ์ธํ ๋ถ์ผ์์ ๋ชจ๋ ๋๋ฆฌ ์ฐ์ด๊ณ ์๋ค. ์ด๋ฌํ ํ์ผ ํ์๋ค์ ์ํฉ๋ง๋ค ํ์์ ๋ฐ๋ผ์ ์ฌ์ฉํ๋ฉด ๋๋ค..
React Hook React ๊ณต์์ฌ์ดํธ ์ฐธ์กฐ : https://ko.reactjs.org/docs/hooks-intro.html Hook ์๊ฐ Hook์ ์ด๋ค ๊ฒ์ด๊ณ ์ ๋์ค๊ฒ ๋์์๊น? Hook์ด๋? ์ฐ์ Hook์ React 16.8 ๋ฒ์ ์ ์๋ก ์ถ๊ฐ๋ ์ต์ ๊ธฐ๋ฅ์ผ๋ก, ํด๋์คํ ์ปดํฌ๋ํธ์ ๋จ์ ์ ๊ทน๋ณตํ๊ณ ์ ๋์จ ํจ์ํ ์ปดํฌ๋ํธ์ ๋ํ ๊ธฐ๋ฅ์ด๋ค. Hook์ ํจ์ํ ์ปดํฌ๋ํธ๋ก๋ ํด๋์คํ ์ปดํฌ๋ํธ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋๋ก ํด์ค๋ค. ํจ์ํ ์ปดํฌ๋ํธ๋? // ํด๋์คํ ์ปดํฌ๋ํธ import React, { Component } from 'react'; class App extends Component { render(){ return ( //jsx ); } } export default App; // ํจ์ํ..
Comment