๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

TIL

require์™€ import ใƒป const

๐Ÿ“Œ require์™€ import

 

"require"์™€ "import"๋Š” JavaScript์—์„œ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ฐ๊ฐ์€ ๋‹ค๋ฅธ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

 

require


"require"๋Š” Node.js์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” CommonJS ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์˜ ๋ฐฉ์‹์œผ๋กœ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. CommonJS๋Š” ๋™๊ธฐ์ ์œผ๋กœ ๋ชจ๋“ˆ์„ ๋กœ๋”ฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

์‚ฌ์šฉ ๋ฐฉ๋ฒ•:

const module = require('module_name');


- ํŒŒ์ผ ์ƒ๋‹จ์— ์œ„์น˜ํ•˜์—ฌ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
- ๋™์ ์œผ๋กœ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (if๋ฌธ, ๋ฐ˜๋ณต๋ฌธ ๋“ฑ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒฝ์šฐ)
- CommonJS ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์€ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ(Node.js)์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๊ณ , ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ CommonJS ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ฒˆ๋“ค๋Ÿฌ(Bundler)๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 


import

 

"import"๋Š” ECMAScript 6 (ES6)๋ถ€ํ„ฐ ๋„์ž…๋œ JavaScript์˜ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ES6 ๋ชจ๋“ˆ์€ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋กœ๋”ฉ๋˜๋ฉฐ, ๋ธŒ๋ผ์šฐ์ €์™€ ๋ชจ๋˜ JavaScript ํ™˜๊ฒฝ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›๋œ๋‹ค.

์‚ฌ์šฉ ๋ฐฉ๋ฒ•:

import module from 'module_name';


- ํŒŒ์ผ ์ƒ๋‹จ์ด๋‚˜ ๋‹ค๋ฅธ ๋ชจ๋“ˆ ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. "๋™์ ์œผ๋กœ" ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
- ์ •์ ์œผ๋กœ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ ์ง€์›๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒˆ๋“ค๋Ÿฌ ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- ๋ชจ๋“ˆ์˜ ์ด๋ฆ„์€ ์ƒ๋Œ€ ๊ฒฝ๋กœ ๋˜๋Š” ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 



์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ


๋ธŒ๋ผ์šฐ์ €์—์„œ import๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ `<script type="module">`์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“ˆ๋กœ ๋กœ๋”ฉํ•ด์•ผ ํ•œ๋‹ค.

ํ”„๋ก ํŠธ์—”๋“œ์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ES6 ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์˜ "import"๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์š”๊ตฌ์— ๋”ฐ๋ผ CommonJS์˜ "require"๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, React ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ฃผ๋กœ ES6์˜ "import"๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , Node.js ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” "require"๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.

 

 

 


 

 

 

๐Ÿ“Œ const

 

JavaScript์—์„œ `const`๋กœ ์„ ์–ธ๋œ ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด๋Š” ์ˆ˜์ • ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. `const`๋Š” ๋ณ€์ˆ˜ ์žฌํ• ๋‹น์„ ๋ง‰๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด์˜ ์š”์†Œ๋‚˜ ์†์„ฑ์„ ์ถ”๊ฐ€, ์‚ญ์ œ, ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” JavaScript์—์„œ ๋ณ€์ˆ˜์™€ ๊ฐ์ฒด๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐฉ์‹์— ๊ธฐ์ธํ•ฉ๋‹ˆ๋‹ค.

1. ๋ฐฐ์—ด (const๋กœ ์„ ์–ธ๋œ ๋ฐฐ์—ด์—์„œ ์š”์†Œ ์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œ):

const numbers = [1, 2, 3];
numbers.push(4); // ์š”์†Œ ์ถ”๊ฐ€
// numbers๋Š” ์ด์ œ [1, 2, 3, 4]๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

numbers[0] = 0; // ์š”์†Œ ์ˆ˜์ •
// numbers๋Š” ์ด์ œ [0, 2, 3, 4]๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

numbers.pop(); // ์š”์†Œ ์‚ญ์ œ
// numbers๋Š” ์ด์ œ [0, 2, 3]๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.



2. ๊ฐ์ฒด (const๋กœ ์„ ์–ธ๋œ ๊ฐ์ฒด์—์„œ ์†์„ฑ ์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œ):

const person = { name: "John", age: 30 };
person.gender = "male"; // ์†์„ฑ ์ถ”๊ฐ€
// person์€ ์ด์ œ { name: "John", age: 30, gender: "male" }๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

person.name = "Jane"; // ์†์„ฑ ์ˆ˜์ •
// person์€ ์ด์ œ { name: "Jane", age: 30, gender: "male" }๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

delete person.age; // ์†์„ฑ ์‚ญ์ œ
// person์€ ์ด์ œ { name: "Jane", gender: "male" }๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.



์ด๋Ÿฌํ•œ ๋™์ž‘์€ `const` ํ‚ค์›Œ๋“œ๊ฐ€ ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด๋ฅผ ๋ถˆ๋ณ€์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด์˜ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๊ณ ์ •ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. `const`๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ๋‹ค๋ฅธ ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, `numbers`์™€ `person`์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด์ง€, ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด ์ž์ฒด๊ฐ€ ๋ถˆ๋ณ€์ด ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

๋งŒ์•ฝ ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด๋ฅผ ์™„์ „ํžˆ ๋ถˆ๋ณ€์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด, `Object.freeze()` ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋ณ€์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. `Object.freeze()`๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ดํ›„์— ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์—ฌ์ „ํžˆ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ถˆ๋ณ€์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์˜ ๋ณ€ํ™”๋ฅผ ์ถ”์ ํ•˜๊ณ  ์ˆ˜์ •์„ ๋ฐฉ์ง€ํ•˜์—ฌ ์™„์ „ํ•œ ๋ถˆ๋ณ€์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.