[๐ŸŒณjavascript] Destructuring, import/export

h-a-n-aยท2023๋…„ 3์›” 10์ผ
1

๐ŸŒณjavascript

๋ชฉ๋ก ๋ณด๊ธฐ
9/17

๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น

๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด์˜ ๊ตฌ์กฐ์— ๋งž๊ฒŒ ๋ฐ”๋กœ ๊ฐœ๋ณ„ ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹น

์–ด๋–ค ๋ฐฐ์—ด์ด ์žˆ๊ณ , ๊ฐ ์š”์†Œ๊ฐ€ ๋„ˆ๋ฌด ์ค‘์š”ํ•ด์„œ ๊ฐ ๋ณ€์ˆ˜ ์•ˆ์— ๊ทธ ๊ฐ’์„ ์ง€์ •ํ•˜๊ณ  ์‹ถ์„ ๋•?

const arr= [2,3,4]
const a=arr[0]
const b=arr[1]
const c=arr[2]

๋ฌผ๋ก  ์ด๋ ‡๊ฒŒ ์จ๋„ ๋˜๊ฒ ์ง€๋งŒ, ์š”์†Œ๊ฐ€ ๋ฐฑ๊ฐœ ๋˜๋Š” ์ˆœ๊ฐ„ ๋‚ด ์†๋ชฉ๋„ ๋‚ ๋ผ๊ฐ€๋Š”๊ฑฐ๋‹ค...

๋จธ๋ฆฌ๋ฅผ ์ž˜ ์“ฐ๋ฉด ๋‚˜์˜ ์†Œ์ค‘ํ•œ ์†๋ชฉ๋„ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๋‹ค!
์˜ค๋Š˜์€ ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

array

const [a,b,c]=[2,3,4] // ๊ธฐ๋ณธ
const [d,e,f=1]=[2,3] //default ๊ธฐ๋ณธ๊ฐ’

const arr = [1,2,3]
const [,,q]=arr
console.log(q)๋Š” 3์ด ๋‚˜์˜จ๋‹ค //๋ฐ˜ํ™˜๊ฐ’ ๋ฌด์‹œ

const arr2=[1,2,3]
const [a,...rest]=arr2
console.log(a,rest)๋Š” 1 [2,3]์ด ๋‚˜์˜จ๋‹ค //๋‚˜๋จธ์ง€ ํ• ๋‹น

object

๊ฐ์ฒด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ผ ๋•Œ ๋ณ€์ˆ˜๋ช…์„ object์˜ key ๊ฐ’๊ณผ ๋˜‘๊ฐ™์ด ๋งž์ถฐ์ค˜์•ผ ํ•œ๋‹ค. ์ด๋ฆ„ ๋ณ€๊ฒฝ๋„ ๊ฐ€๋Šฅํ•˜๊ธด ํ•จ!

const {name: a, age: b} = {name: 'kim', age:30}
// ๊ธฐ๋ณธ: a,b์—๊ฒŒ ๊ฐ๊ฐ 'kim', 30 ํ• ๋‹น๋จ

const {name,age} = {name: 'kim', age:30}
// name, age ๋ณ€์ˆ˜ ์ƒ์„ฑ๋˜๊ณ  'kim', 30 ํ• ๋‹น๋จ
// name:name, age:age์ผ ๊ฒฝ์šฐ name, age๋กœ๋งŒ ์จ๋„ ๊ฐ€๋Šฅ

const {name:์ด๋ฆ„, age=31}={name:'kim'}
console.log(์ด๋ฆ„,age)์€ 'kim',31
// ๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ+๊ธฐ๋ณธ๊ฐ’

const obj={a:1,b:2,c:3}
const {a, ...rest} = obj
console.log(a,rest)๋Š” 1 {b:2,c:3}์ด ๋œ๋‹ค
// ๋‚˜๋จธ์ง€ ํ• ๋‹น

import/export

์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ง€๋ฉด ํ•œ ํŒŒ์ผ์— ์ฃผ๊ตฌ์žฅ์ฐฝ ์Œ“์•„๋‘˜ ๊ฒŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ํŒŒ์ผ๋กœ ๋‚˜๋ˆ„์–ด ๋ณด๊ด€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๋‹ค๋ฅธ ํŒŒ์ผ๋กœ ์ชผ๊ฐœ๋‘๊ณ , ๊ทธ๊ฑธ ์ฒจ๋ถ€ํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž!
์ฐธ๊ณ ๋กœ,

  • ๋ณ€์ˆ˜, ํ•จ์ˆ˜, class๋งŒ import/export ๊ฐ€๋Šฅ
  • import ํ•ด์˜จ ๋ณ€์ˆ˜,ํ•จ์ˆ˜๋Š” ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด ์ƒ๊ด€์—†์ง€๋งŒ, ๊ฐ€์ ธ์™€์„œ ์ˆ˜์ •ํ•˜๋Š” ๊ฑด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. read-only!

์‚ฌ์šฉ๋ฒ•

๋‚˜๋Š” movie.js์— ์žˆ๋Š” ์ •๋ณด๋ฅผ index.js์— ๊ฐ€์ ธ์™€์„œ ์“ธ๊ฑฐ๋‹ค.
์ผ๋‹จ, index.html์—์„œ script type="module"์ ์–ด์ฃผ๊ธฐ

export default

๋‹ค์Œ์€ movie.js ํŒŒ์ผ์ด๋‹ค.

const title='์Šค์ฆˆ๋ฉ”์˜ ๋ฌธ๋‹จ์†'
const year=2023

export default title;

export default๋Š” ํ•œ ํŒŒ์ผ์—์„œ 1ํšŒ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.
default๋กœ ๋‚ด๋ณด๋‚ด๊ณ  ๋‚˜๋ฉด import ํ• ๋•Œ์˜ ์ด๋ฆ„์€ ์•„๋ฌด๋ ‡๊ฒŒ๋‚˜ ์ง€์–ด๋„ ์ƒ๊ด€์—†๋‹ค.
import ์•„๋ฌด๋ ‡๊ฒŒ๋‚˜์ง€์€์ด๋ฆ„ from './movie.js'

export {a,b}

์—ฌ๋Ÿฌ๊ฐœ๋ฅผ exportํ•˜๊ณ  ์‹ถ์„ ๋• {}์•ˆ์— ์ฐจ๊ณก์ฐจ๊ณก ์˜ˆ์˜๊ฒŒ ๋‹ด์•„์„œ ๋ณด๋‚ธ๋‹ค.

const title='์Šค์ฆˆ๋ฉ”์˜ ๋ฌธ๋‹จ์†'
const year=2023

export {title,year}

์•„๋‹ˆ๋ฉด ๋‚ด๊ฐ€ ๋ณด๋‚ด๊ณ  ์‹ถ์€ ๊ฒƒ ์•ž์— ์ผ์ผ์ด export๋ฅผ ๋ถ™์ด๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค.

export const title='์Šค์ฆˆ๋ฉ”์˜ ๋ฌธ๋‹จ์†'
export const year=2023

๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ค‘ ์–ด๋Š๊ฒƒ์œผ๋กœ ํ–ˆ๋“  importํ• ๋• ๋‚ด ๋งˆ์Œ๋Œ€๋กœ ์ž‘๋ช…ํ•˜์ง€ ๋ง๊ณ , ์ด์ „ js์—์„œ ์ผ๋˜ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค. import {title,year} from './movie.js'

export default + export {a,b}

const title='์Šค์ฆˆ๋ฉ”์˜ ๋ฌธ๋‹จ์†'
const year=2023
const ์˜ํ™”๊ด€='๋ฉ”๊ฐ€๋ฐ•์Šค'

export {title,year}
export default ์˜ํ™”๊ด€

๋‘˜์„ ํ•œ ํŒŒ์ผ ์•ˆ์—์„œ ํ˜ผ์šฉ ๊ฐ€๋Šฅ!
๋‹จ import ํ•ด์˜ฌ๋•Œ๋Š” default๋กœ ๋ณด๋‚ธ ๊ฒƒ๋ถ€ํ„ฐ importํ•ด์˜ค๊ธฐ
import ์˜ํ™”๊ด€,{title,year} from './movie.js'

import {๋ณ€์ˆ˜๋ช… as ์ƒˆ๋กœ์šด๋ณ€์ˆ˜๋ช…}

default๋กœ ๋ณด๋‚ธ๊ฑด import ํ•  ๋•Œ ๋‚ด ๋งˆ์Œ๋Œ€๋กœ ์ž‘๋ช…์ด ๊ฐ€๋Šฅํ•œ๋ฐ, ๊ทธ๋ƒฅ export {a,b} ์ด๋Ÿฐ์‹์œผ๋กœ ๋ณด๋‚ธ ๊ฑด ๊ทธ๋Œ€๋กœ ์จ์•ผํ•˜๋Š”๊ฒŒ ๋ถˆ๋งŒ์ด๋ผ๋ฉด, ์‚ฌ์‹ค ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.
import {title as ์ œ๋ชฉ, year as ๊ฐœ๋ด‰์—ฐ๋„} ๋ผ๊ณ  ์“ฐ๋ฉด ์‚ฌ์‹ค ๋ณ€์ˆ˜๋ช…์„ ๊ฐ„์ง€๋‚˜๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.
๋Œ€์‹  exportํ• ๋• ์ฐฉํ•˜๊ฒŒ ๊ทธ๋Œ€๋กœ ์ผ์–ด์•ผํ•œ๋‹ค.

* as

export , import ํ• ๋•Œ ๋„ˆ๋ฌด ๋งŽ์€ ์ •๋ณด๋ฅผ ์˜ฎ๊ฒจ์•ผํ•ด์„œ ๋‚ด ์†๋ชฉ ๊ฑฑ์ •์ด ๋‹ค์‹œ๊ธˆ ์ƒ๊ธด๋‹ค๋ฉด,

*๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ํ•œ๊บผ๋ฒˆ์— ๋‹ค ๊ฐ€์ ธ์˜จ๋‹ค๋Š” ๋œป!

const title='์Šค์ฆˆ๋ฉ”์˜ ๋ฌธ๋‹จ์†'
const year=2023
const ์˜ํ™”๊ด€='๋ฉ”๊ฐ€๋ฐ•์Šค'
const ์ขŒ์„='F5'
const ๊ฐ„์‹='ํŒ์ฝ˜'
const ์–ธ์ œ='์ฃผ๋ง'

export {title,year,์˜ํ™”๊ด€,์ขŒ์„,๊ฐ„์‹,์–ธ์ œ}

import * as ์˜ํ™”๋‚˜๋“ค์ด from './movie.js'
๋Œ€์‹  ์•ˆ์— ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ• ๋•Œ๋Š” *์„ ๊ทธ๋Œ€๋กœ ์“ฐ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋‚ด๊ฐ€ ๊ฐ€์ ธ์˜จ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ด์„œ ์˜ํ™”๋‚˜๋“ค์ด.title์ด๋ ‡๊ฒŒ ์จ์•ผํ•œ๋‹ค!

๋ฐ์ดํ„ฐ๋งŒ ์ €์žฅํ•ด๋‘๊ณ  ๊ทธ๋•Œ๊ทธ๋•Œ ์จ๋จน๊ธฐ

๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ํŒŒ์ผ์—์„œ ๊ฐ€์ ธ์™€ ๋ฐ”๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, abc.js๋ผ๋Š” ํŒŒ์ผ์— ๋‹ค ์ €์žฅํ•ด๋‘๊ณ  ๊ทธ๋•Œ๊ทธ๋•Œ ํ•„์š”ํ• ๋•Œ๋งˆ๋‹ค abc.js์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค.
์ค‘๊ฐ„๋งค๊ฐœ์ฒด ์—ญํ• ์„ ํ•˜๋Š” ํŒŒ์ผ์—์„œ exportํ‚ค์›Œ๋“œ๋งŒ ์ž˜ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.
movie.js >> abc.js >> index.js ์ˆœ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ธด๋‹ค๊ณ  ํ•ด๋ณด์ž.

๋ชจ๋“ˆ์˜ ๊ฐ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ๋ชจ๋‘ ๊ฐ€์ ธ์™€์„œ ํ•œ ๋ฒˆ์— ๋‚ด๋ณด๋‚ด๊ธฐ

//movie.js
const title='์Šค์ฆˆ๋ฉ”์˜ ๋ฌธ๋‹จ์†'
const year=2023
const ์˜ํ™”๊ด€='๋ฉ”๊ฐ€๋ฐ•์Šค'
const ์ขŒ์„='F5'
const ๊ฐ„์‹='ํŒ์ฝ˜'
const ์–ธ์ œ='์ฃผ๋ง'

export {title,year,์˜ํ™”๊ด€,์ขŒ์„,๊ฐ„์‹,์–ธ์ œ}
//abc.js
export * as default from './movie.js'
import ์˜ํ™”๋‚˜๋“ค์ด from './abc.js'
console.log(์˜ํ™”๋‚˜๋“ค์ด.title)

๋ชจ๋“ˆ์˜ ๊ฐ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ {}์— ๊ฐ€์ ธ์™€์„œ ๊ทธ๋Œ€๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ

//abc.js
export {title,year,์˜ํ™”๊ด€,์ขŒ์„,๊ฐ„์‹,์–ธ์ œ} from './movie.js'
import {title,year,์˜ํ™”๊ด€,์ขŒ์„,๊ฐ„์‹,์–ธ์ œ} from './abc.js'
console.log(title)

๋ชจ๋“ˆ์˜ ์ด๋ฆ„ ๋ณ€๊ฒฝ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ {}์— ๊ฐ€์ ธ์™€์„œ ๋‚ด๋ณด๋‚ด๊ธฐ

//abc.js
export {title,year as ๊ฐœ๋ด‰์—ฐ๋„} from './movie.js'
import {title,๊ฐœ๋ด‰์—ฐ๋„} from './abc.js'
console.log(๊ฐœ๋ด‰์—ฐ๋„)

  • ์˜ค๋Š˜ ์•Œ๊ฒŒ ๋œ ๊ฒƒ
    ๋ฐฐ์—ด/๊ฐ์ฒด ๊ตฌ์กฐ๋ถ„ํ•ด ๋ฐฉ๋ฒ•์ด๋ž‘ import,export ํ•˜๋Š” ๊ฑฐ ๋ฐฐ์› ๋‹ค.
  • ์˜ค๋Š˜ ๋ฐฐ์šด ๊ฒƒ ์ค‘ ๊ถ๊ธˆํ•˜๊ฑฐ๋‚˜ ๋” ์•Œ๊ณ  ์‹ถ์€ ๊ฒƒ
    ๊ทผ๋ฐ ๋ชจ๋“ˆ ๋„ˆ๋ฌด ์ชผ๊ฐœ์ง€๋ฉด ๋” ๋จธ๋ฆฌ์•„ํ”ˆ ๊ฒƒ ๊ฐ™๊ธฐ๋„...?
  • ์˜ค๋Š˜์˜ ์†Œ๊ฐ
    ๋‚˜๋„ ์˜ํ™” ๋ณด๊ณ  ์‹ถ์–ด....
profile
ํ•˜๋ฃจํ•˜๋ฃจ๊ฐ€ ์—ฐ์Šต์ด๋‹ˆ ๋‚ด์ผ์€ ๋” ๊ฐ•ํ•ด์งˆ ๊ฒ๋‹ˆ๋‹ค

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