๐ 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()`๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ๊ฐ์ฒด์ ์์ฑ์ ์์ ํ๊ฑฐ๋ ์ญ์ ํ๋ ๊ฒ์ด ๊ธ์ง๋ฉ๋๋ค. ํ์ง๋ง ์ดํ์ ์์ฑ์ ์ถ๊ฐํ๋ ๊ฒ์ ์ฌ์ ํ ๊ฐ๋ฅํฉ๋๋ค. ๋ถ๋ณ์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ฐ์ฒด์ ๋ฐฐ์ด์ ๋ณํ๋ฅผ ์ถ์ ํ๊ณ ์์ ์ ๋ฐฉ์งํ์ฌ ์์ ํ ๋ถ๋ณ์ฑ์ ์ ๊ณตํฉ๋๋ค.
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JavaScript ๋ฐํ์ (0) | 2023.08.04 |
---|---|
useRef ใป Cookie (0) | 2023.07.28 |
This ใป ๋ธ๋ผ์ฐ์ ์ ์ฅ์ (0) | 2023.07.26 |
HTTP ใป Position (0) | 2023.07.25 |
ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌใป ์บ์ (0) | 2023.07.21 |