์ค๋์ ์ด์ ๋ง๋ TodoList์์ ์คํฌ๋ฆฝํธ ํ๊ทธ๋ก ๋ถ๋ฌ์ค๋ ํ์ผ๋ค์ ๋ชจ๋๋ก ๋ถ๋ฆฌํ์ฌ ๊ธฐ๋ฅ์ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ผ๋ก ๋ณด์ํด๋ณด์๋ค.
๋ํ, ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ด์ฉํด ๊ฐ TodoList์ ํด๋นํ๋ ๋๊ธ์ ๋ถ๋ฌ์ค๋ ๊ธฐ๋ฅ ๊ตฌํ์ ์ฐ์ตํ๋ค.
์ค์ํ ๊ฐ๋
๋ค์ธ Promise, async, await๋ฅผ ํ๋ฒ ๋ ๋ณต์ตํ ์ ์๋ ์ข์ ๊ธฐํ์๋ค.
๊ทธ๋ฆฌ๊ณ ํ ๊ฐ์ง ์ค๋ ํ๋ณตํ๋ ์ผํ๋ฅผ ๋งํ์๋ฉด, ๋ฐ๋๋ผ JS๋ฅผ ๊ณต๋ถํ๊ณ ์์ด์ ์ธ์ง๋ ๋ชจ๋ฅด์ง๋ง ๋ฐ๋๋ผ๋น์ด ๋ฌ๋ฟ ๋ค์ด์๋ ์๊ทธํ๋ฅดํธ๊ฐ ๋จน๊ณ ์ถ์๋ค. 4์ผ์งธ ์ง์ ์๋๊ฐ์ (์ด๋ ๋นผ๊ณ ) ๊ดํฉ์ฑ๋ ํ ๊ฒธ ์ง ์ ์นดํ๊ฐ์ ์ฌ๋จน์๋๋ฐ ๋๋ฌด ๋ง์์ด์ ๊ธฐ๋ถ์ด ์ข์์ก๋ค. ์ฐธ ๋จ์ํ ๋๋ค...
์ด์ ๋์ tmi์๋ค...๐
1. ๋ชจ๋ (export, import)
2. ๋น๋๊ธฐ ๋ค๋ฃจ๊ธฐ (callback, Promise, async์ await)
๋น๋๊ธฐ๋ ๋ชจ์๋ชจ์ ์ํฐํด๋ก ๋ค๋ฃจ๊ณ ์ํ๋, ์ค๋์ ๋ชจ๋์ ๋ํด ๊น๊ฒ ๋ค๋ค๋ณด๋๋ก ํ์!
export
๋ฅผ ํตํด ๋ชจ๋์ ๋ด๋ณด๋ด๊ณ , import
๋ฅผ ํตํด ๋ชจ๋์ ๋ถ๋ฌ์ฌ ์ ์๋ค๋ณ์๋ ํจ์ ์์ ๋ถ์ฌ ์ธ๋ถ ๋ชจ๋์์ ํด๋น ๋ณ์๋ ํจ์์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ค
// export ์ฌ์ฉ ์์
export const DOMAIN_NAME = "www.daseul.codes";
export const PORT = "8000";
export const isProduction = () => {
return false;
};
๋ชจ๋์ export default๋ผ๋ ํน๋ณํ ๋ฌธ๋ฒ์ ์ง์ํ๋ค.
export default๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ๋ชจ๋์๋ ๊ฐ์ฒด๊ฐ ํ๋๋ง ์๋ค
๋ผ๋ ์ฌ์ค์ ๋ช
ํํ ๋ํ๋ผ ์ ์๋ค.
// export default ์ฌ์ฉ ์์
// ๋ชจ๋์ sayHello๋ผ๋ ํจ์ ํ๋๋ง ์กด์ฌํ ๊ฒฝ์ฐ
export default function sayHello(){
alert("Hello!");
}
์ฆ, ๋ชจ๋ ๋น ์ต๋ ํ๋์ export default
๋ฅผ ๊ฐ์ง ์ ์๋ค.
import ์ง์์๋ฅผ ์ฌ์ฉํ๋ฉด export๋ก ๋ด๋ณด๋ด์ง ์ธ๋ถ ๋ชจ๋์ ๊ธฐ๋ฅ์ ๊ฐ์ ธ์ฌ ์ ์๋ค
// import ์ฌ์ฉ ์์
// module-name ๋ด์ export default๋ก ๋ด๋ณด๋ด์ง ๊ฒ์ ๊ฐ์ ธ์จ๋ค
import defaultExport from "module-name";
// module-name ๋ด์์ export๋ ๋ชจ๋ ๊ฒ์ ๋ชจ๋ ๊ฐ์ ธ์จ๋ค
// as ์ดํ ์ด๋ฆ์ ์ค๋ณต๋์ง๋ง ์์ผ๋ฉด ์์ ๋กญ๊ฒ ์ ํ๊ธฐ ๊ฐ๋ฅ
import * as allItems from "module-name";
// module-name ๋ด์์ export๋ ๊ฒ ์ค์ ํน์ ๊ฐ๋ง ๊ฐ์ ธ์จ๋ค
import { loadItem } from "module-name";
// module-name ๋ด์์ export๋ ๊ฒ ์ค์ ํน์ ๊ฐ๋ง ์ด๋ฆ์ ๋ฐ๊ฟ์ ๊ฐ์ ธ์จ๋ค
import {
loadItem as loadSomething
} from "module-name";
// export default๋ ๊ฒ๊ณผ ๊ฐ๋ณ export๋ ๊ฒ์ ํ๋ฒ์ ๊ฐ์ ธ์ฌ ์ ์๋ค
import defaultFunction, {
loadItem
} from "module-name";
// ๋ณ๋์ ๋ชจ๋ ๋ฐ์ธ๋ฉ ์์ด ๋ถ๋ฌ์ค๊ธฐ๋ง ํ๋ค
// ๋ถ๋ฌ์ค๋ ๊ฒ๋ง์ผ๋ก ํจ๊ณผ๊ฐ ์๋ ์คํฌ๋ฆฝํธ์ ๊ฒฝ์ฐ ์ฌ์ฉ
import "module-name";
์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ธ๋ถ ๋ชจ๋์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
ํ๋ก์ ํธ ๋ด์์ ์ง์ ์ฌ์ฉํ๋ ์์๋ ์ดํด๋ณด์.
// constants.js์์ DOMAIN_NAME์ dn์ผ๋ก
// PORT๋ p๋ก ๊ฐ์ ธ์จ๋ค
import { DOMAIN_NAME as dn, PORT as p } from "./constants.js";
// App.js์์ export default๋ App๊ณผ
// ๊ฐ๋ณ export๋ printToday๋ฅผ ํ ๋ฒ์ ๊ฐ์ ธ์จ๋ค
import App, { printToday } from "./App.js";
์ฌ์ฉ๋๊ฑฐ๋ ์ฌ์ฉ๋์ง์๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ์
ํ ์ ์๋คimport๋ก ๋ถ๋ฌ์ค๋ ๊ฒฝ์ฐ ์์๋ ๋ฌด๊ดํ๋ค
์ ์ญ ์ค์ผ์ด ์ผ์ด๋์ง ์๋๋ค
๋ชจ๋์ ์ฌ์ฉํ ๋ ์ฃผ์ํ ์ ์
๋ชจ๋์ ๋ก์ปฌ ํ์ผ์์ ๋์ํ์ง์๊ณ , ์น์๋ฒ(HTTP, HTTPS ํ๋กํ ์ฝ)์์๋ง ๋์ํ๋ค
์ ์ ์ง์์ ์์ฌ๊ฐ๊ณ , ์ ๋ฆฌํด์ ๋ด ๊ฒ์ผ๋ก ๋ง๋ค ์๊ฐ์ ๋ถ์กฑํ ๊ฒ ๊ฐ๋ค.
์ํฐํด๋ก ์ ๋ฆฌํ ๊ฒ๊ณผ ํ ๋ฒ ๋ ๋ณต์ตํ ์ฃผ์ ๋ค์ ์ฐจ๊ณก ์ฐจ๊ณก ์์๋๊ณ ์๋๋ฐ, ์ ์ ๊ณถ๊ฐ์ด ๊ฝ ์ฐจ๊ณ ์๋ค ๐คช
์ผ๋ฅธ ์ด ๊ณถ๊ฐ์ ํ๋ฃจ ๋นจ๋ฆฌ ์ ๋ฆฌํด์ ๋์ ๋จธ๋ฆฟ์์ ๊ฝ๊ฝ ์ฑ์์ผ๊ฒ ๋ค!!!