์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- sql
- https://youtube.com/playlist?list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&si=FTaYv8m21EhO-A2K
- Project
- Porject
- addEventListener
- eport
- https://m.blog.naver.com/tt2t2am1118/221010125300
- json
- callback
- js
- ํผํ
- async
- ๋๊ธฐ
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ
- Import
- database
- setTimeout()
- ๊ฒ์
- slow and steady
- object
- promise
- mysql
- ๋น๋๊ธฐ
- ajax
- webpack
- JS #ํ๋ก์ ํธ
- await
- execCommand
- prj
- db
- Today
- Total
๋ชฉ๋กโ๏ธReact/๐งFront-Dev-Environment (13)
C-log

์ด๋ฒ ํฌ์คํ ์์๋ ์ง๋ ์๊ฐ์ ์ด์ด์ ์์ฃผ ์ฌ์ฉ๋๋ Preset์ ์ค์นํด๋ณด๊ณ ์ค์ตํด๋ณผ ๊ฒ์ด๋ค. Babel์ ๋ณดํต ์ค๋ฌด์์ Preset์ ์ ์ฌ์ฉํ๋ค. ๋ฐ๋ผ์ preset-env, preset-flow, preset-react, preset-typescript ์ด๋ ๊ฒ ๋ค๊ฐ์ง๋ฅผ ์ค์ ์ผ๋ก ์ดํด ๋ณผ ๊ฒ์ด๋ค.preset-env์ค์น๋ ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์๋ค.:: CMDyarn add @babel/preset-env์ดํ babel.configํ์ผ์์ ๊ธฐ์กด์ ์ฌ์ฉํ๊ณ ์๋ ์ปค์คํ babel์ ์ฃผ์์ฒ๋ฆฌํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐ๋ฅผ ํด์ฃผ๋ฉด ๋๋ค.//babel.confing.jsconst myBabelPreset = require('./my-babel-preset');module.exports = { presets: [ ..

์ด๋ฒ ํฌ์คํ ์์๋ Babel์ ๊ดํด์ ๋ค๋ฃจ์ด ๋ณผ ๊ฒ์ด๋ค. Babel์ ๋ฌด์์ด๊ณ Babel์ด ์ด๋ป๊ฒ ํ์์ด ๋์๋์ง ์์ ๋ณผ ๊ฒ์ด๋ค. ์ฐ์ Babel์ด๋ผ๋ ์ด์์ ๊ณ ๋ ํ๋ธ๋ฆฌ ์ ํ์์ ๋ค๋ฃจ๊ณ ์๋ Babelํ ์ด์ผ๊ธฐ์ Babel๋ก ๋ถํฐ ๊ฐ์ง๊ณ ์จ ๊ฒ์ด๋ค. ์ด์ผ๊ธฐ์ ๊ฐ๋จํ ๋ด์ฉ์ ์ด๋ ๋ค. ์ฌ๋๋ค์ด ํ๋ ๋์ด ์ฌ๋ผ๊ฐ๊ธฐ ์ํ ํ์ ์์ ์ฌ๋ ธ๋๋ฐ ์ ์ด ์ด๊ฒ์ ๋ง๊ธฐ์ํด ์ธ๊ฐ๋ค์ ์ธ์ด๋ฅผ ๋ชจ๋ ๋ฐ๊ฟ ๋๊ฒ ๋๋ ์ด์ผ๊ธฐ๋ค. ์ง๊ธ ์ํํธ์จ์ด, ๋ธ๋ผ์ฐ์ ์ ์ํ๊ณ๋ฅผ ๋ณด๋ฉด ์๋์ฐ, ๋ฆฌ๋ ์ค, ๋งฅ, ํฌ๋กฌ, ์ฃ์ง, ์ฌํ๋ฆฌ, ์จ์ผ ๋ฑ ๋ค์ํ ์ํํธ์จ์ด๊ฐ ์กด์ฌํ๊ณ ์ด๊ฒ๋ค์ด ์ฌ์ฉ๋๋ ํ๋ก๊ทธ๋๋ฐ์ ์ธ์ด๊ฐ ๊ฐ๊ธฐ ๋ค๋ฅด๋ค. ๊ณผ๊ฑฐ ์ฌํ๋ฆฌ์์๋ Promise.prototype.finaly ๋ฉ์๋๋ ์ฌ์ฉํ ์ ์์๋ค. ๊ทธ์ผ ๋ง๋ก ํผ๋์ ์๋์ด๋ค. ์ฐธ๊ณ ..

์ด๋ฒ ํฌ์คํ ์์๋ ์์ฃผ ์ฌ์ฉ๋๋ ํ๋ฌ๊ทธ์ธ์ ๊ดํด ์ดํด ๋ณผ ๊ฒ์ด๋ค. ์์ฃผ ์ฌ์ฉ๋๋ ๋ํ์ ํ๋ฌ๊ทธ์ธ 5๊ฐ์ง๋ฅผ ์ดํด ๋ณผ ๊ฒ์ด๋ค. BannerPlugin์ด์ ํฌ์คํ ์์ ์ฐ๋ฆฌ๊ฐ BannerPlugin์ ๋ชจ์ฌํ๋ค. ์ด ํ๋ฌ๊ทธ์ธ์ webpack์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต์ ํด์ฃผ๋ ํ๋ฌ๊ทธ์ธ์ด๋ค. BannerPlugin์ ๊ฒฐ๊ณผ๋ฌผ์ ๋น๋ ์ ๋ณด๋ ์ปค๋ฐ ๋ฒ์ ๊ฐ์ ๊ฒ์ ์ถ๊ฐ ํ ์ ์๋ค. ์ด๋ฅผ webpack.config์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ๋ค.//webpack.config.jsconst path = require('path');const MyWebpackPlugin = require('./my-webpack-plugin');const webpack = require('webpack');const { CleanWebpackPlu..

ํ๋ฌ๊ทธ์ธ์ ๋ฒ๋ค๋ ๊ฒฐ๊ณผ ํ๋๋ง์ ์ฒ๋ฆฌํ๋ค. ๋ฒ๋ค๋ js๋ฅผ ๋๋ ํ ํ๋ค๊ฑฐ๋ ํน์ ํ ์คํธ๋ฅผ ์ถ์ถํ๋ ์ฉ๋๋ก ์ฌ์ฉํ๋ค. My-Webpack-Pluginclass MyWebpackPlugin { apply(compiler) { compiler.hooks.done.tap('MyWebpackPlugin', stats => { console.log('MyPlugin: done'); }) }}module.exports = MyWebpackPlugin;์์ ๊ฐ์ด ํ๋ฌ๊ทธ์ธ์ ์ปค์คํ ํ ์ ์๋ค.1. class MyWebpackPlugin : Webpack ํ๋ฌ๊ทธ์ธ์ ์ผ๋ฐ์ ์ผ๋ก ํด๋์ค ํํ๋ก ์ ์ํด์ผ ๋๋ค.2. apply(compiler) { ... } : Webpack ํ๋ฌ๊ทธ์ธ์ apply ๋ฉ์๋๋ฅผ..

url-loader์ ์ญํ ์ ์ด๋ฏธ์ง๋ฅผ base-64๋ก ์ธ์ฝ๋ฉํด์ ๋ฌธ์์ด ํํ๋ก ์ด๋ฏธ์ง ์์ค์ ๋ฃ๋ ์ญํ ์ ํ๋ค. ์ด๋ฌํ ์ฒ๋ฆฌ๋ฅผ url-loader๊ฐ ์๋์ผ๋ก ์ฒ๋ฆฌ๋ฅผ ํด์ค๋ค. ์ฌ์ฉํ๋ ์ด๋ฏธ์ง๊ฐ ๋ง์์ง ๋ ๋คํธ์ํฌ์์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ๋ถ๋ด์ด ์๊ณ ์๋น์ค ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ฐธ๊ณ ๋ก ์์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ค๋ฉด Data URI Scheme์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๋ซ๋ค.file-loader : 2 ํ์ฌ ์์ฑ์์ webpack ํ๊ฒฝ์ ์๋ค์ํผ webpack 5์ด๋ค. ์ด์ ๋ฐ๋ผ file-loader๋ url-loader๋ ์ด๋ฏธ assets/resource์ ๋ด์ฅ์ด ๋์ด ์์ด์ ์์ ์์ ์ฒ๋ผ ๋ฐ๋ก ์ค์ ํ ํ์๋ ์๋ค. ๋ค๋ง webpack.config์ ์ง๋๋ฒ๊ณผ ๊ฐ์ ํ์๊ณผ ํํ๋ฅผ ์ ์งํ์ง๋ง png๋ฅผ ์ ..

์ฐ์ ์ด๋ฏธ์ง๋ฅผ importํ๊ธฐ ์ํด์ ์๋์ ๊ฐ์ด css๋ฅผ ๋ณ๊ฒฝํด์ผํ๋ค.body { background-image: url(git-logo-icon.png);} ์ฐ์ yarn์ pnp๋ก ๋์์ ์ค์ ํ ๋์ ํ๋ก์ ํธ ํ์ผ์์ ์ค๋ฅ๊ฐ ์คํ๋์ง ์๊ณ ์ ์์ ์ผ๋ก ๋น๋๊ฐ ๋์๋ค๊ณ ๋์ค๊ณ ์๋ค. ๊ฑฐ๊ธฐ๋ค ๋ธ๋ผ์ฐ์ ์์๋ ๋ด๊ฐ ์ค์ ํ image๊ฐ ์ ๋๋ก ๋์ํ๊ณ ์๋ค. ์๊ทธ๋ฐ๊ฐ ์๊ฐํด๋ณด๋ ๋ด๊ฐ ์ด๋ฏธ node_modules๋ฅผ pnp๋ก ์ ํํด์ yarn-berry์ ํน์ง์ธ cache ํด๋์์์ ์ด๋ฏธ file-loader๊ฐ ์กด์ฌํด์ ํด๊ฒฐ์ด ๋๊ณ ์๋ ๊ฒ์ด๋ผ๊ณ ์ง์์ ํ๋ค. ํ์ง๋ง ๋์ ์ถ์ธก๊ณผ๋ ์ ํ ๋ฌด๊ดํ๋ค. file-loader๋ฅผ ๋ฌด์ํ๊ณ ๋ฐ๋ก webpack.configํ์ผ์ ์ค์ ํ๋ ๊ทธ์ ์์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค. ๋ฐ..

์ด๋ฒ ํฌ์คํ ์์๋ ์์ฃผ ์ฌ์ฉ๋๋ loader์ ๊ดํด์ ๋ค๋ฃจ์ด ๋ณผ ๊ฒ์ด๋ค. ๋จผ์ css-loader์ style-loader๋ฅผ ๋ค๋ฃจ์ด ๋ณผ๊ฒ์ด๋ค. ๊ฐ์๋ ์งง์ง๋ง ๋ค๋ฃจ๊ณ ์๋ ๋ด์ฉ์ด ๋ง์์ ๋๋ฒ์ ๋๋์ด์ ํฌ์คํ ์ ํ ๊ฒ์ด๋ค.//app.jsimport * as math from './math.js'import './app.css';// import { sum } from './math.js';console.log(math.sum(1, 2));// console.log(sum(1,2));//app.cssbody { background-color: green;}์์ ๊ฐ์ด cssํ์ผ์ ์ถ๊ฐํ๊ณ app.js์ importํ๊ณ build๋ฅผ ํด๋ณด๋ฉด ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธ ํ ์ ์๋ค.D:\myclass\0_Progr..

์ด๋ฒ ํฌ์คํ ์์๋ ๋ก๋์ ๊ดํด์ ๋ค๋ฃฐ ๊ฒ์ด๋ค. ์นํฉ์ ๋ชจ๋ ํ์ผ๋ค์ ๋ชจ๋๋ก ๋ฐ๋ผ๋ณธ๋ค. ๋ฐ๋ผ์ import ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋ ์์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์๋ค. ์ฆ, import ๊ตฌ๋ฌธ์ ์ฌ์ฉํด์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋กค ์ฌ์ฉํ ์ ์๋ ์ด์ ๋ ๋ฐ๋ก ๋ก๋ ๋๋ฌธ์ด๋ค. ๋ก๋๋ ํ์ ์คํฌ๋ฆฝํธ์ ๊ฐ์ ๋ค๋ฅธ ์ธ์ด๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ผ๋ก ๋ณํํด ์ฃผ๊ฑฐ๋ ์ด๋ฏธ์ง๋ฅผ data URL ํ์์ ๋ฌธ์์ด๋ก ๋ณํํ๋ค. ๋ฟ๋ง์๋๋ผ CSS ํ์ผ์ ์๋ฐ์คํฌ๋ฆฝ์์ ์ง์ ๋ก๋ฉํ ์ ์๋๋ก ํด์ค๋ค.๋ก๋์ ๋์ ์๋ฆฌ์ฐ์ ์๋์ ๊ฐ์ด ๋ก๋๋ฅผ ๊ด๋ฆฌํ๋ js ํจ์ํ ํ์ผ์ ํ๋ ๋ง๋ค์ด์ผ ํ๋ค.// my-webpack-loader.jsmodule.exports = function myWebpackLoader(content) { console.log('..