Component

ν”„λ‘ νŠΈμ—”λ“œλ₯Ό κ³΅λΆ€ν•˜λ©° μ»΄ν¬λ„ŒνŠΈλž€ λ‹¨μ–΄λŠ” μˆ˜λ„ 없이 많이 λ“£κ³ , μ‚¬μš©ν•œ 단어이닀. "...μ»΄ν¬λ„ŒνŠΈμ—μ„œ ν˜ΈμΆœλ˜λŠ” κΈ°λŠ₯을 κ°€μ§„ ν•¨μˆ˜λ‹€", "...개의 μ»΄ν¬λ„ŒνŠΈλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€." λ“± κ·Έλ™μ•ˆ μžμ—°μŠ€λŸ½κ²Œ μ‚¬μš©ν–ˆμ—ˆλŠ”λ° μ»΄ν¬λ„ŒνŠΈμ— λŒ€ν•΄ μžμ„Ένžˆ κ³΅λΆ€ν•΄λ³΄μž

1️⃣ Componentλž€?

μ»΄ν¬λ„ŒνŠΈμ˜ 사전적 μ˜λ―ΈλŠ” μš”μ†ŒλΌλŠ” λœ»μ΄λ‹€. μ΄κ²ƒλ§Œ 봐도 "음 λ§žλŠ”κ²ƒ κ°™λ„€"λΌλŠ” 생각이 λ“€μ§€λ§Œ μ •ν™•νžˆ 무슨 μš”μ†ŒμΈκ°€? λΌλŠ” 의문이 λ“ λ‹€.

μ»΄ν¬λ„ŒνŠΈκ°€ λ“±μž₯ν•˜κΈ° μ „μ˜ μ†Œν”„νŠΈμ›¨μ–΄ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 각각의 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ…λ¦½μ μœΌλ‘œ κ°œλ°œν•˜μ§€ μ•Šκ±°λ‚˜ λ…λ¦½μ μœΌλ‘œ κ°œλ°œν–ˆμ–΄λ„ λ‹€λ₯Έ λͺ¨λ“ˆκ³Ό ν˜Έν™˜μ΄ λ˜μ§€ μ•ŠλŠ”λ‹€λ©΄ μž¬μ‚¬μš©μ΄ μ–΄λ ΅κ³  μœ μ§€λ³΄μˆ˜ λΉ„μš©μ΄ 크게 μ¦κ°€ν•˜κ²Œ λ˜λŠ” 단점이 μ‘΄μž¬ν–ˆλ‹€. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ‚˜μ˜¨κ²ƒμ΄ λ°”λ‘œ μ»΄ν¬λ„ŒνŠΈμ΄λ‹€.

즉, ν”„λ‘œκ·Έλž˜λ°μ—μ„œ λ§ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈλŠ” μž¬μ‚¬μš©μ΄ κ°€λŠ₯ν•œ 각각의 λ…λ¦½λœ λͺ¨λ“ˆμ΄λ‹€.

2️⃣ Component? Module?

κ·Έλ ‡λ‹€λ©΄ "μ»΄ν¬λ„ŒνŠΈμ™€ λͺ¨λ“ˆμ€ 같은것인가?"λΌλŠ” 의문이 또 생긴닀. λ¬Όλ‘  두 ν‚€μ›Œλ“œλŠ” μž¬μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€λΌλŠ” 곡톡점을 κ°€μ§€κ³ μžˆλ‹€. ν•˜μ§€λ§Œ 두 ν‚€μ›Œλ“œκ°„μ— λΆ„λͺ…ν•œ 차이가 μ‘΄μž¬ν•œλ‹€. μ˜ˆμ‹œλ₯Ό λ“€μ–΄λ³΄μž.

μš°λ¦¬κ°€ 넀이버에 λ“€μ–΄κ°€μ„œ 검색을 ν•˜κ³  μ‹Άλ‹€λ©΄ 상단 μž…λ ₯λž€μ— ν‚€μ›Œλ“œλ₯Ό μž‘μ„±ν•˜κ³  였λ₯Έμͺ½μ˜ 돋보기 λͺ¨μ–‘μ˜ κ²€μƒ‰λ²„νŠΌμ„ 눌러 검색을 μ‹œμž‘ν•œλ‹€.

κ°„λ‹¨ν•˜κ²Œ 이 과정을 μ‚΄νŽ΄λ³΄μžλ©΄, μš°λ¦¬κ°€ 검색창에 μž…λ ₯ν•œ λ¬Έμžμ—΄μ˜ valueκ°€ λ²„νŠΌμ„ ν΄λ¦­ν•¨μœΌλ‘œμ¨ μ„œλ²„λ‘œ μ „μ†‘λ˜μ–΄ ν•΄λ‹Ή value에 λ§žλŠ” 검색결과λ₯Ό μ‘λ‹΅λ°›λŠ”λ‹€. λ”°λΌμ„œ κ²€μƒ‰λ²„νŠΌμ€ μ‚¬μš©μžμ— μ˜ν•΄μ„œ ν”„λ‘œκ·Έλž¨μ΄ λ™μž‘λ λ•Œ μ‹€ν–‰λ˜κ³ , μž…λ ₯ν•œ valueλ₯Ό μ„œλ²„μ— μš”μ²­ν•˜λŠ” λͺ…ν™•ν•œ κΈ°λŠ₯을 κ°€μ§€κ³  μžˆλ‹€. λ˜ν•œ λ‹€λ₯Έ λΆ€λΆ„μ—μ„œ 이 κΈ°λŠ₯이 ν•„μš”ν•˜λ‹€λ©΄ κ·Έλƒ₯ κ°€μ Έλ‹€κ°€ μ“°κΈ°λ§Œ ν•˜λ©΄λœλ‹€.

이것이 λ°”λ‘œ μ»΄ν¬λ„ŒνŠΈμ΄λ‹€.

λŸ°νƒ€μž„μ‹œμ μ—μ„œ μ‹€ν–‰λ˜μ–΄ λͺ…ν™•ν•œ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λ©° μž¬μ‚¬μš©μ΄ κ°€λŠ₯ν•œ 독립적인 κΈ°λŠ₯의 μ΅œμ†Œ(μ‹€ν–‰λœ μ†Œν”„νŠΈμ›¨μ–΄μ˜)λ‹¨μœ„

즉, μ–΄λ– ν•œ κΈ°λŠ₯이 λ™μž‘ν•˜λŠ” λ‹¨μœ„λ₯Ό λ§ν•œλ‹€. (λ²„νŠΌ μ»΄ν¬λ„ŒνŠΈ, 검색창 μ»΄ν¬λ„ŒνŠΈ λ“±)


κ·Έλ ‡λ‹€λ©΄ λͺ¨λ“ˆμ€ λ¬΄μ—‡μΌκΉŒ? λͺ¨λ“ˆμ€ 자주 μ‚¬μš©λ˜λŠ” μ½”λ“œλ₯Ό μ—¬λŸ¬ 파일둜 λΆ„λ¦¬ν•˜μ—¬ μž¬μ‚¬μš©μ΄ κ°€λŠ₯ν•˜κ²Œλ” λ§Œλ“  것이닀.

// sample.js
const sample_print = () => {
  console.log("sample Module");
};

module.exports = {
  sample_print,
};

// app.js
const app_module = require("./sample.js");

app_module.sample_print();

μœ„μ˜ μ½”λ“œμ²˜λŸΌ νŒŒμΌμ— κΈ°λŠ₯을 κ΅¬ν˜„ν•˜μ—¬ μ—¬λŸ¬ νŒŒμΌμ—μ„œ λΆˆλŸ¬μ™€ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜κ²Œ λ§Œλ“ κ²ƒμ΄λ‹€. λ¦¬μ•‘νŠΈμ—μ„œ 자주 μ‚¬μš©λ˜λŠ” useState, useEffect 도 λͺ¨λ“ˆμ΄λΌκ³  ν•  수 μžˆλ‹€. μ»΄ν¬λ„ŒνŠΈμ™€ 달리 λŸ°νƒ€μž„λ•Œ λ™μž‘ν•˜λŠ” λ‹¨μœ„κ°€ μ•„λ‹ˆλΌ ν”„λ‘œκ·Έλž˜λ°ν•˜μ—¬ κ΅¬ν˜„ν•˜λŠ” λ‹¨μœ„μ΄λ‹€.(κ°„λ‹¨ν•˜κ²Œ 파일 ν•˜λ‚˜ν•˜λ‚˜λΌκ³  μƒκ°ν•˜λ©΄ νŽΈν• κ²ƒ κ°™λ‹€.)

사싀 λ‚΄κ°€ κ°€μž₯ ν—·κ°ˆλ Έλ˜ 뢀뢄은 μ»΄ν¬λ„ŒνŠΈμ™€ λͺ¨λ“ˆ 두 κ°œλ…μ„ μƒν•˜κ΄€κ³„λΌκ³  μΈμ‹ν•˜κ³  μžˆμ—ˆλ˜ 뢀뢄이닀. 자꾸 곡뢀λ₯Ό ν•˜λ©΄μ„œ "κ·Έλž˜μ„œ λͺ¨λ“ˆκ³Ό μ»΄ν¬λ„ŒνŠΈ 쀑 뭐가 더 포괄적인 κ°œλ…μ΄μ§€?", "λͺ¨λ“ˆμ•ˆμ˜ μ»΄ν¬λ„ŒνŠΈκ°€ λ§žλŠ”λ§μΈκ°€?" λ“± λ¬΄μ˜μ‹μ μœΌλ‘œ μ–΄λŠ ν•˜λ‚˜κ°€ 더 큰 κ°œλ…μ΄λΌκ³  μƒκ°ν–ˆμ—ˆλ‹€. ν•˜μ§€λ§Œ 두 κ°œλ…μ€ μƒν•˜κ°œλ…μ΄ μ•„λ‹ˆλΌ λ‹€λ₯Έ κ°œλ…μ΄λΌκ³  μ΄ν•΄ν•˜λŠ” 것이 λ§žλŠ” 것 κ°™λ‹€.

λ‹€μ‹œ ν•œλ²ˆ μ»΄ν¬λ„ŒνŠΈμ˜ μ •μ˜λ₯Ό μ‚΄νŽ΄λ³΄λ©° μ •λ¦¬ν•΄λ³΄μž μž¬μ‚¬μš©μ΄ κ°€λŠ₯ν•œ 각각의 λ…λ¦½λœ λͺ¨λ“ˆ

ν”„λ‘ νŠΈμ—”λ“œμ—μ„œ λ§ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈλŠ” 기본적으둜 λͺ¨λ“ˆμ΄κΈ°μ— μž¬μ‚¬μš©μ„ μš©μ΄ν•˜κΈ° μœ„ν•΄ 각각의 독립적인 κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” 파일둜써 λΆ„λ¦¬λ˜μ–΄μžˆλ‹€. λŸ°νƒ€μž„ 기점으둜 λ™μž‘ν•˜λŠ” κΈ°λŠ₯, 즉 μœ μ €κ°€ μ‚¬μš©ν•˜λŠ” μ‹œμŠ€ν…œμ— λŒ€ν•œ κΈ°λŠ₯(λ²„νŠΌ, 검색 λ“±)을 λΆ„λ¦¬ν•˜μ—¬ μž‘μ„±λ˜μ—ˆκΈ°μ— UI라고도 λΆˆλ¦°λ‹€.

라고 정리할 수 μžˆμ„κ²ƒ κ°™λ‹€.

Last updated