[TIL๐Ÿ”ฅ]Day13(8/19)

๊น€๋‹ค์Šฌยท2021๋…„ 8์›” 19์ผ
0

Today I Learned

๋ชฉ๋ก ๋ณด๊ธฐ
13/22
post-thumbnail

Introduction

์˜ค๋Š˜์€ ์–ด์ œ ๋งŒ๋“  TodoList์—์„œ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋˜ ํŒŒ์ผ๋“ค์„ ๋ชจ๋“ˆ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ณด์™„ํ•ด๋ณด์•˜๋‹ค.
๋˜ํ•œ, ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์ด์šฉํ•ด ๊ฐ TodoList์— ํ•ด๋‹นํ•˜๋Š” ๋Œ“๊ธ€์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ์—ฐ์Šตํ–ˆ๋‹ค.
์ค‘์š”ํ•œ ๊ฐœ๋…๋“ค์ธ Promise, async, await๋ฅผ ํ•œ๋ฒˆ ๋” ๋ณต์Šตํ•  ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๊ธฐํšŒ์˜€๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ•œ ๊ฐ€์ง€ ์˜ค๋Š˜ ํ–‰๋ณตํ–ˆ๋˜ ์ผํ™”๋ฅผ ๋งํ•˜์ž๋ฉด, ๋ฐ”๋‹๋ผ JS๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ์–ด์„œ ์ธ์ง€๋Š” ๋ชจ๋ฅด์ง€๋งŒ ๋ฐ”๋‹๋ผ๋นˆ์ด ๋“ฌ๋ฟ ๋“ค์–ด์žˆ๋Š” ์—๊ทธํƒ€๋ฅดํŠธ๊ฐ€ ๋จน๊ณ  ์‹ถ์—ˆ๋‹ค. 4์ผ์งธ ์ง‘์„ ์•ˆ๋‚˜๊ฐ€์„œ (์šด๋™ ๋นผ๊ณ ) ๊ด‘ํ•ฉ์„ฑ๋„ ํ•  ๊ฒธ ์ง‘ ์•ž ์นดํŽ˜๊ฐ€์„œ ์‚ฌ๋จน์—ˆ๋Š”๋ฐ ๋„ˆ๋ฌด ๋ง›์žˆ์–ด์„œ ๊ธฐ๋ถ„์ด ์ข‹์•„์กŒ๋‹ค. ์ฐธ ๋‹จ์ˆœํ•œ ๋‚˜๋‹ค...
์ด์ƒ ๋‚˜์˜ tmi์˜€๋‹ค...๐Ÿ˜‹


์˜ค๋Š˜ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์šด ๊ฒƒ

1. ๋ชจ๋“ˆ (export, import)
2. ๋น„๋™๊ธฐ ๋‹ค๋ฃจ๊ธฐ (callback, Promise, async์™€ await)

๋น„๋™๊ธฐ๋Š” ๋ชจ์•„๋ชจ์•„ ์•„ํ‹ฐํด๋กœ ๋‹ค๋ฃจ๊ณ ์žํ•˜๋‹ˆ, ์˜ค๋Š˜์€ ๋ชจ๋“ˆ์— ๋Œ€ํ•ด ๊นŠ๊ฒŒ ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜์ž!


โš™๏ธ Module

Module์ด๋ž€

  • ๋Œ€๊ฐœ ํด๋ž˜์Šค ํ•˜๋‚˜ ํ˜น์€ ํŠน์ •ํ•œ ๋ชฉ์ ์„ ๊ฐ€์ง„ ๋ณต์ˆ˜์˜ ํ•จ์ˆ˜๋กœ ๊ตฌ์„ฑ๋œ ํŒŒ์ผ ํ•˜๋‚˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค
  • export๋ฅผ ํ†ตํ•ด ๋ชจ๋“ˆ์„ ๋‚ด๋ณด๋‚ด๊ณ , import๋ฅผ ํ†ตํ•ด ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค

export(๋ชจ๋“ˆ ๋‚ด๋ณด๋‚ด๊ธฐ)

๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜ ์•ž์— ๋ถ™์—ฌ ์™ธ๋ถ€ ๋ชจ๋“ˆ์—์„œ ํ•ด๋‹น ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค

// export ์‚ฌ์šฉ ์˜ˆ์‹œ
export const DOMAIN_NAME = "www.daseul.codes";
export const PORT = "8000";

export const isProduction = () => {
  return false;
};

export์™€ export default

๋ชจ๋“ˆ์€ export default๋ผ๋Š” ํŠน๋ณ„ํ•œ ๋ฌธ๋ฒ•์„ ์ง€์›ํ•œ๋‹ค.
export default๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ๋ชจ๋“ˆ์—๋Š” ๊ฐœ์ฒด๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ๋‹ค๋ผ๋Š” ์‚ฌ์‹ค์„ ๋ช…ํ™•ํžˆ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

// export default ์‚ฌ์šฉ ์˜ˆ์‹œ
// ๋ชจ๋“ˆ์— sayHello๋ผ๋Š” ํ•จ์ˆ˜ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•  ๊ฒฝ์šฐ
export default function sayHello(){
  alert("Hello!");
}

์ฆ‰, ๋ชจ๋“ˆ ๋‹น ์ตœ๋Œ€ ํ•˜๋‚˜์˜ export default๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

import(๋ชจ๋“ˆ ๊ฐ€์ ธ์˜ค๊ธฐ)

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";

Module์˜ ์žฅ์ 

  • ๊ฐ JS๋ณ„๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“ˆ์„ ๋ช…์‹œ์ ์œผ๋กœ importํ•ด์˜ค๊ธฐ ๋•Œ๋ฌธ์—, ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ๋˜์ง€์•Š๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋‹ค
  • script ํƒœ๊ทธ๋กœ ๋กœ๋”ฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜์ง€๋งŒ, import๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒฝ์šฐ ์ˆœ์„œ๋Š” ๋ฌด๊ด€ํ•˜๋‹ค
  • script src๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ „์—ญ ์˜ค์—ผ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค

๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•  ์ ์€
๋ชจ๋“ˆ์€ ๋กœ์ปฌ ํŒŒ์ผ์—์„œ ๋™์ž‘ํ•˜์ง€์•Š๊ณ , ์›น์„œ๋ฒ„(HTTP, HTTPS ํ”„๋กœํ† ์ฝœ)์—์„œ๋งŒ ๋™์ž‘ํ•œ๋‹ค


Comment

์ ์  ์ง€์‹์€ ์Œ“์—ฌ๊ฐ€๊ณ , ์ •๋ฆฌํ•ด์„œ ๋‚ด ๊ฒƒ์œผ๋กœ ๋งŒ๋“ค ์‹œ๊ฐ„์€ ๋ถ€์กฑํ•œ ๊ฒƒ ๊ฐ™๋‹ค.
์•„ํ‹ฐํด๋กœ ์ •๋ฆฌํ•  ๊ฒƒ๊ณผ ํ•œ ๋ฒˆ ๋” ๋ณต์Šตํ•  ์ฃผ์ œ๋“ค์„ ์ฐจ๊ณก ์ฐจ๊ณก ์Œ“์•„๋‘๊ณ  ์žˆ๋Š”๋ฐ, ์ ์  ๊ณถ๊ฐ„์ด ๊ฝ‰ ์ฐจ๊ณ ์žˆ๋‹ค ๐Ÿคช
์–ผ๋ฅธ ์ด ๊ณถ๊ฐ„์„ ํ•˜๋ฃจ ๋นจ๋ฆฌ ์ •๋ฆฌํ•ด์„œ ๋‚˜์˜ ๋จธ๋ฆฟ์†์„ ๊ฝ‰๊ฝ‰ ์ฑ„์›Œ์•ผ๊ฒ ๋‹ค!!!

profile
์ธ์ƒ์€ ์šฉ๊ธฐ์˜ ์–‘์— ๋”ฐ๋ผ ์ค„์–ด๋“ค๊ฑฐ๋‚˜, ๋Š˜์–ด๋‚œ๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€