์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- Import
- ๋๊ธฐ
- callback
- Porject
- ๋น๋๊ธฐ
- database
- prj
- setTimeout()
- ๊ฒ์
- execCommand
- webpack
- slow and steady
- eport
- mysql
- ajax
- https://m.blog.naver.com/tt2t2am1118/221010125300
- object
- sql
- promise
- ํผํ
- JS #ํ๋ก์ ํธ
- json
- addEventListener
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ
- await
- js
- async
- https://youtube.com/playlist?list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&si=FTaYv8m21EhO-A2K
- Project
- db
- Today
- Total
C-log
๐งWebpack : module ๋ณธ๋ฌธ
์ด๋ฒ ์๊ฐ์๋ webpack๊ณผ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ์ ๊ดํด์ ์ด์ผ๊ธฐ ํด๋ณผ ๊ฒ์ด๋ค.
Webpack์ ๋ฑ์ฅ
๋จผ์ ๋ชจ๋์ ๋ํด ์ด์ผ๊ธฐ ํด๋ณด์. ๋ฌธ๋ฒ ์์ค์์ ๋ชจ๋์ ์ง์ํ๊ธฐ ์์ํ ๊ฒ์ ES6(ES2015)๋ถํฐ๋ค. import/export ๊ตฌ๋ฌธ์ด ์์๋ ๋ชจ๋ ์ด์ ์ํฉ์ ์ดํด๋ณด๋ ๊ฒ์ด ์นํฉ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ์ ์ค๋ช ํ๋๋ฐ ์์ํ ๊ฒ ๊ฐ๋ค. ('๊น์ ํ ๋ธ๋ก๊ทธ' ์ค..)
์์ ์๋ html์ ์๋ script ํ๊ทธ๋ฅผ ์ฌ์ฉํด์ jsํ์ผ๋ค์ ์ฐ๊ฒฐํ๊ณ html๋ก ๊ด๋ฆฌ ํ๋ค. ์์ ์ ์ฌ์ฉํ๋ ๋ฐฉ์์ ๊ตฌํ ํด๋ณธ ์ฝ๋๋ ์๋ ๋๋ณด๊ธฐ๋ฅผ ์ฐธ๊ณ ํ๋ผ
math.js
function sum(a,b){
return a+b;
}
app.js
console.log(sum(1,2));
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script src="src/math.js"></script>
<script src="src/app.js"></script>
</body>
</html>
command
::CMD
start index.html
์์ ๋ฐฉ์์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๋ฐ์ํ๋ ๋ฌธ์ ๊ฐ ์๋ค. ๊ด๋ฆฌ์ ์ด ์ฐจ์์ ๋ฌธ์ ๋ ์์ง๋ง ์ ์ญ ์ค์ฝํ๊ฐ ์ค์ผ์ด ๋๋ค๋ ๊ฒ์ด๋ค. math.js์ sumํจ์๋ math ๋ชจ๋์์๋ง ์ ํจํ ๊ฒ์ด ์๋๋ผ ์ฌ๋์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. ํ๋ฒ ๊ฐ๋ฐ์ ๋๊ตฌ์์ sum์ ์ ๊ทผํด๋ณด๋ฉด ์๋์ ๊ฐ์ด ์คํ๋๊ณ ์๋ index.html ๋ธ๋ผ์ฐ์ ์์ ํ์ธ์ด ๊ฐ๋ฅํ๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ฌธ์ ๊ฐ ๋๋ ์ ์ญ ์ค์ฝํ๊ฐ ์ค์ผ์ด ๋๋ค๋ ๊ฒ์ ๋ฌด์์ธ๊ฐ. ์ง์ sum์ ์ค์ผ ์์ผ ๋ณด์.
์ด๋ ๊ฒ ์ ์ญ ์ค์ฝํ๊ฐ ์ค์ผ์ด ๋๋ฉด type error๊ฐ ๋ฐ์ํ๊ฒ ๋๊ณ ์ดํ๋ฆฌ์ผ์ด์ ์ด ์์ธกํ ์ ์๊ฒ ๋๊ณ ๋ฌํ์ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ๋ฐ์ ์๋ค. ์ฌ๊ธฐ์ ES6 ๋ฌธ๋ฒ์ ๊ณต๋ถํ ์ฌ๋์ด๋ผ๋ฉด ์ด๋ฐ ์๊ฐ์ ํ๊ฒ ๋ ๊ฒ์ด๋ค. '์ ์ด๋ถํฐ sum ํจ์๋ฅผ ํ์ด ํ๊ธฐ๋ฒ์ผ๋ก ์์ฑํ๋ฉด ๋์ง ์์๊น?' ๊ทธ๋ ๋ค ํ์ด ํ๊ธฐ๋ฒ์ ์ ์ด์ ํค์๋(์ ์ธ์)๋ฅผ const๋ก ์ค์ฝํ์ ์์ญ์ ์ ํ์ ์ค ์ ์๋ค. ์ด์ ๋ง๊ฒ ํ๋ฒ ์ฝ๋๋ฅผ ์์ ํด์ ์ง์ ์คํ ํด๋ณด์.
ํ์ด ํ๊ธฐ๋ฒ
const sum = (a,b) => {
return a+b;
}
๊ธฐ๋ณธ sum ํจ์๋ฅผ ์์ ๊ฐ์ด ํ์ด ํ๊ธฐ๋ฒ์ผ๋ก ๋ณ๊ฒฝ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ๋ธ๋ผ์ฐ์ ์์ window.sum์ผ๋ก ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด undfiend๊ฐ ๋์จ๋ค. ์ผ๋ฐ์ ์ผ๋ก sum ํจ์๋ฅผ ์ฌ์ฉ ํ ์ ์์ง๋ง ์์ ๊ฐ์ด sum์ ์ ์ธํ๋ ค๊ณ ํ๋ฉด type error๊ฐ ๋ฐ์๋๋ฉด์ ์ ์ด์ sum์ ์๋ก์ด ๋ณ์๋ก ์ ์ธ์ด ๋ถ๊ฐ๋ฅ ํ๊ฒ ๋๋ค.
์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ ์ญ ์ค์ฝํ์ ์ค์ผ์ ๋ง์ ์๋ ์์ง๋ง ์ด ๋ฐฉ๋ฒ์ด ์๋ ๋ชจ๋ ๋ฐฉ์์ผ๋ก ๋ฐฉ์ง ๋ฐฉ๋ฒ๋ ์๋ค.
IIFE ๋ฐฉ์์ ๋ชจ๋(์ฆ์ ์คํ ํจ์ ํํ)
//math.js
var math = math || {};
(function(){
function sum(a,b){
return a + b;
}
math.sum = sum;
})()
//app.js
console.log(math.sum(1,2));
์ ์ญ ์ค์ฝํ ์ค์ผ์ ๋ฐฉ์งํ๊ธฐ ์ํด์ IIFE ๋ฐฉ์์ ์ฌ์ฉํ๋๋ฐ ์ฒ์ ๋ณด๋ ๋ฐฉ์์ด๋ผ ๋ง์ด ๋นํฉ์ค๋ฝ๋ค. ํ ์ค์ฉ ์ฐจ๊ทผ ์ฐจ๊ทผ ์ดํด๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
var math = math || {}; //true || false
math๋ผ๋ ๋ณ์๋ฅผ ์ด๊ธฐํํ๋ค. math๊ฐ ์ด๋ฏธ ์ ์๋์ด ์๊ณ ์ฐธ(true) ๊ฐ์ด๋ฉด math ๋ณ์๋ ๊ทธ ๊ฐ์ ์ ์งํ๋ค. ๋ง์ฝ math๊ฐ ์ ์๋์ง ์์๊ฑฐ๋ ๊ฑฐ์ง(false) ๊ฐ์ด๋ฉด math๋ ๋น ๊ฐ์ฒด {}๋ก ์ด๊ธฐํ๋๋ค.
(function(){
...
})()
์ด ํจํด์ IIFE์ด๋ค. IIFE๋ ์ ์๋์๋ง์ ์ฆ์ ์คํ๋๋ ํจ์๋ก ํจ์ ๋ด๋ถ์์ ์ ์ธ๋ ๋ชจ๋ ๋ณ์๋ ํจ์ ๋ฐ์์ ์ ๊ทผํ ์ ์์ด ํ๋ผ์ด๋ฒ์๋ฅผ ์ ๊ณตํ๋ค. ์ด๋ฅผ ํตํด ๊ธ๋ก๋ฒ ์ค์ฝํ์ ์ค์ผ์ ๋ฐฉ์งํ๊ณ ์ฝ๋๋ฅผ ๋ชจ๋ํํ๋ ๋ฐ ๋์์ ์ค๋ค.
function sum(a, b){
return a + b;
}
math.sum = sum;
์ด ํจ์๋ IIFE ๋ด๋ถ์์ ์ ์๋์ด ์ธ๋ถ์์ ์ง์ ์ ์ธ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ค. ๊ทธ๋ฌ๋ math.sum = sum์ ํตํด math ๊ฐ์ฒด์ sum ํจ์๋ฅผ ์์ฑ์ผ๋ก ํ ๋นํ๋ค. ์ด๋ ๊ฒ ํ๋ฉด IIFE ์ธ๋ถ์์๋ math.sum์ ํธ์ถํ์ฌ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
๊ฒฐ๋ก ์ sum ํจ์์ ์ง์ ์ ์ธ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅ ํด์ง๋ฉฐ math ๊ฐ์ฒด์ ์์ฑ์ ํตํด์๋ง sum์ ํธ์ถํ๊ณ ์ ๊ทผ์ด ๊ฐ๋ฅ ํด์ง๋ ๊ฒ์ด๋ค. math๊ฐ ์ ์ธ ๋ ์ฒซ ๋ฒ์งธ ์ค์์๋ ๋น์ด์๋ ๊ฐ์ฒด๊ฐ ํ ๋น์ด ๋๊ณ ์ด์ IIFE ๋ฐฉ์์ ํจ์๊ฐ ์ ์ธ์ด ๋ ๊ฒ์ด๋ค. math๋ฅผ ์ง์ ์ ์ผ๋ก ํ ๋น ํ์ ๋์ ๊ฐ์ฒด ํํ๋ ์๋์ ๊ฐ๋ค.
//Example.js
var math = {
sum : function(a,b) {
return a+b
}
};
IIFE์ ๋น์ฝ
IIFE๊ฐ ์ ์ญ ์ค์ฝํ์ ์๋ฒฝํ ๋ฐฉ์ง๋ฅผ ํ ์ ์๋ ๋์์ ์๋๋ค. ๊ทธ ์ด์ ๋ math๋ฅผ ํตํด์ sum์ ์ ๊ทผ ํด์ผ ํ๋ค๋ ๊ท์น ์ฑ๋ง ์กด์ฌ ํ ๋ฟ java์ ๊ฐ์ private ์ฒ๋ผ ๋ณ์๋ฅผ ์๋ฒฝํ ๋ณดํธ, ๋ถ๋ฆฌ๋ฅผ ๋ณด์ฅํ์ง๋ ์๋๋ค. ๊ฐ์์ ์ค์ต ์๋ฃ์์๋ ๋ง์น IIFE๊ฐ ๋ณ์ ์ฌํ ๋น์ ๋ง์์ฃผ๋ฉด์ private ํค์๋์ฒ๋ผ ์ฌ์ฉ๋๋ ๋ฏ ๋ค๋ ธ๊ณ ๋ณด์๋ค. ์๋ ๊ฐ๋ฐ์ ๋๊ตฌ๋ก sum์ ์ ๊ทผํด ๊ฐ์ ์ฌํ ๋น์ ์๋ํ ๊ฒฐ๊ณผ๋ฅผ ํ๋ฒ ์ดํด๋ณด๋ฉด ์ ์ ์๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก IIFE๋ private๋ฅผ ๊ตฌ์ฑํ๋ ํ์๋ ์๋ ๋ณ์๋ช ์ ์ฌํ ๋น์ ๋ฐฉ์งํ๊ธฐ ์ํ ํ๋์ ํจํด๋ ์๋๋ ๊ฒ์ ์ ์ ์๋ค. ๋จ์ํ sum์ด ์ ์ญ ๊ณต๊ฐ์ ๋ ธ์ถ๋๋ค๋ ๊ฒ์ ๋ง๋ ๋ฐฉ์ ์ ๋ ์ผ ๋ฟ์ด๋ค. ๋ฐ๋ผ์ ๊ฐ์ธ์ ์ผ๋ก ES6์ ํ์ดํ ํจ์๋ฅผ ์ ๊ทน ํ์ฉํ๋ ๊ฒ์ด ์คํ๋ ค ์ ์ญ ์ค์ฝํ ์ค์ผ์ ๋ฐฉ์งํ ์ ์๋ค๊ณ ๋ณธ๋ค. ์ฐ๋ฆฌ๋ ์ฌ๊ธฐ์ ๋๋ ์ ์๋ค. ๋ชจ๋์ ํ์์ฑ์ ๋ง์ด๋ค.
๋ค์ํ ๋ชจ๋ ์คํ
js์์ ๋ชจ๋์ ๊ตฌํํ๋ ๋ํ์ ์ธ ๋ช ์ธ๊ฐ AMD์ CommonJs๊ฐ ์๋ค.
- CommonJs : CommonJs๋ js๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ํ๊ฒฝ์์ ๋ชจ๋ํ ํ๋ ๊ฒ์ด ๋ชฉํ์ด๋ค. exports๋ก ๋ชจ๋์ ๋งใท๋ฅด๊ณ requireํจ์๋ก ๋ถ๋ฌ์ค๋ ๋ฐฉ์์ด๋ค. ์๋ฒ ์ฌ์ด๋ ํ๋ ํผ Nodejs์์ ์ด๋ฅผ ์ฌ์ฉํ๋ค.
- AMD : AMD๋ ๋น๋๊ธฐ๋ก ๋ก๋ฉ ๋๋ ํ๊ฒฝ์์ ๋ชจ๋์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ชฉํ๋ค. ์ฃผ๋ก ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์ด๋ค.
- UMD : AMD๊ธฐ๋ฐ์ผ๋ก CommonJs ๋ฐฉ์๊น์ง ์ง์ํ๋ ํตํฉ ํํ์ด๋ค.
์ด๋ฐ ๋ค์ํ ํํ์ ๋ชจ๋ ์คํ๋ค์ ์ ์ํ๋ค๊ฐ ES6(ES2015)์์ ํ์ค ๋ชจ๋ ์์คํ ์ ๋ด๋๊ฒ ๋๋ค.
ES6(ES2015) ํ์ค ๋ชจ๋ ์์คํ
ES6(ES2015) ํ์ค ๋ชจ๋ ์์คํ ์ ์คํํ๊ธฐ ์ํด์ ๊ฐ์์ ์๋ฒ๊ฐ ํ์ํ๋ค ์์ ์์๋ lite-server๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง๋ง ๋ณธ์ธ์ vsc์์ ์ ๊ณตํ๋ ํ์ฅ์ live-server๋ฅผ ์ฌ์ฉํ๋ค.
export
export function sum(a,b){
return a + b;
}
import ํ๋ 2๊ฐ์ง ๋ฐฉ๋ฒ
//app.js
import * as math from './math.js'
console.log(math.sum(1,2));
//app.js
import { sum } from './math.js';
console.log(sum(1,2));
HTML : type = "module"
<script type="module" src="./src/app.js"></script>
์ด๋ ๊ฒ ์ฐ๋ฆฌ๋ ES6๋ฅผ ๊ธฐ์ค์ผ๋ก js๊ฐ ๋ชจ๋๋ก ๋์๊ฐ๋ค๋ ๊ฒ์ ์์๋ค. ํ์ง๋ง ๋ชจ๋ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์ ๋ชจ๋์ ์ง์ํ๋ ๊ฒ์ ์๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ฐ๋ฆฌ๋ ์ด๋ป๊ฒ ํด์ผํ ๊น ์ด๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก webpack์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ๋ค์ ์๊ฐ์๋ ๋ณธ๊ฒฉ์ ์ผ๋ก webpack์ ๋ฐฐ์ ๋ณผ ๊ฒ์ด๋ค.
'โ๏ธReact > ๐งFront-Dev-Environment' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐งWebpack : Loader (0) | 2024.06.23 |
---|---|
๐งWebpack : Entry (0) | 2024.06.21 |
๐ง์ธ๋ถ ํจํค์ง๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ : npm install (0) | 2024.06.17 |
๐งํ๋ก์ ํธ ์์ฑ : NPM&yarn(yarn-berry) (1) | 2024.06.17 |
๐ง์์ ์ ์์ (0) | 2024.06.16 |