Javascript module system (CommonJS, ES Modules)
์นดํ ๊ณ ๋ฆฌ | ๊ธฐ์ |
---|---|
ํ๊ทธ | |
์์ ์ผ | Aug 3, 2024 |
์์ฑ์ผ | Dec 20, 2023 |
๐ก
"CJS"์ "MJS"๋ ๊ฐ๊ฐ CommonJS์ ECMAScript Modules์ ์ฝ์ด์
๋๋ค. ์ด ๋ ๋ชจ๋ ์์คํ
์ JavaScript์์ ๋ชจ๋์ ์ ์ํ๊ณ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ ๋ค๋ฅด๊ฒ ๋ค๋ฃน๋๋ค.
๋ชฉ์ฐจ
CommonJS (CJS):
- ๋๊ธฐ์ ๋ก๋ฉ: CommonJS๋ ๋๊ธฐ์ ์ธ ๋ฐฉ์์ผ๋ก ๋ชจ๋์ ๋ก๋ฉํฉ๋๋ค. ์ฆ, ๋ชจ๋์ด ํ์ํ ๋ ํด๋น ๋ชจ๋์ด ๋ก๋ฉ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ , ๋ก๋ฉ์ด ์๋ฃ๋ ํ์ ๋ค์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
- ์๋ฒ ์ธก JavaScript (Node.js): CommonJS๋ ์ฃผ๋ก ์๋ฒ ์ธก JavaScript ํ๊ฒฝ์์ ์ฌ์ฉ๋๋ฉฐ, Node.js์์ ๋ชจ๋ ์์คํ ์ ๊ธฐ๋ณธ์ด์์ต๋๋ค.
- require() ํจ์: ๋ชจ๋์ ๊ฐ์ ธ์ค๋ ๋ฐ์
require()
ํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. - ๋จ์ผ ์ธ์คํด์ค: ๋ชจ๋์ ํ ๋ฒ๋ง ๋ก๋ฉ๋๋ฉฐ, ์ดํ์๋ ์บ์ฑ๋ ์ธ์คํด์ค๊ฐ ๋ฐํ๋ฉ๋๋ค.
์์ (CommonJS):
// ๋ชจ๋ ์ ์
module.exports = {
key: 'value',
func: function() {
// ์ฝ๋
}
};
// ๋ชจ๋ ์ฌ์ฉ
const myModule = require('./myModule');
console.log(myModule.key);
myModule.func();
ECMAScript Modules (MJS):
- ๋น๋๊ธฐ์ ๋ก๋ฉ: ECMAScript Modules๋ ๋น๋๊ธฐ์ ์ผ๋ก ๋ชจ๋์ ๋ก๋ฉํฉ๋๋ค. ๋ชจ๋์ด ํ์ํ ๋ ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋ฉ๋๋ฉฐ, ์ด๋ฅผ ์ํด
import
๋ฌธ์ ์ฌ์ฉํฉ๋๋ค. - ํด๋ผ์ด์ธํธ ์ธก ๋ฐ ์๋ฒ ์ธก JavaScript: MJS๋ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ, ๋ชจ๋ ๋ธ๋ผ์ฐ์ ๋ค์ MJS๋ฅผ ์ง์ํฉ๋๋ค. Node.js์์๋ MJS๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- import/export ๊ตฌ๋ฌธ: ๋ชจ๋์ ๊ฐ์ ธ์ค๋ ๋ฐ์
import
๋ฌธ์ ์ฌ์ฉํ๋ฉฐ, ๋ค๋ฅธ ๋ชจ๋์์ ์ฌ์ฉํ ์ ์๋๋ก ๋ณ์, ํจ์, ํด๋์ค ๋ฑ์export
ํค์๋๋ก ๋ด๋ณด๋ ๋๋ค.
์์ (ECMAScript Modules):
// ๋ชจ๋ ์ ์
export const key = 'value';
export function func() {
// ์ฝ๋
}
// ๋ชจ๋ ์ฌ์ฉ
import { key, func } from './myModule';
console.log(key);
func();
์์ฝํ๋ฉด, CommonJS๋ ์ฃผ๋ก ์๋ฒ ์ธก JavaScript ํ๊ฒฝ์์ ์ฌ์ฉ๋๊ณ ๋๊ธฐ์ ์ผ๋ก ๋ชจ๋์ ๋ก๋ฉํ๋ ๋ฐ๋ฉด, ECMAScript Modules๋ ๋ธ๋ผ์ฐ์ ์ ์๋ฒ ๋ชจ๋์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ ๋น๋๊ธฐ์ ์ผ๋ก ๋ชจ๋์ ๋ก๋ฉํฉ๋๋ค. ์ต์ JavaScript ํ๋ก์ ํธ์์๋ ๋ณดํต ECMAScript Modules๋ฅผ ์ ํธํ๋ ์ถ์ธ๊ฐ ์์ต๋๋ค.
CommonJS ์ ES Module ๋น๊ต ํ
ํน์ฑ | CommonJS | ES Module |
---|---|---|
๋ชจ๋ ์ ์ | module.exports = ... |
export ๋ฐ import ๊ตฌ๋ฌธ ์ฌ์ฉ |
๋ชจ๋ ๋ก๋ฉ | require ํจ์ ์ฌ์ฉ |
import ๊ตฌ๋ฌธ ์ฌ์ฉ |
๋น๋๊ธฐ ๋ก๋ฉ ์ง์ | ์ง์ํ์ง๋ง ์ฃผ๋ก ๋๊ธฐ์ ์ฌ์ฉ | ๋ค์ดํฐ๋ธ ๋น๋๊ธฐ ์ง์ |
๋์ ๋ชจ๋ ๋ก๋ฉ | ์ง์ | ์ง์ |
์คํ ์์ ํ๊ฐ | ย | ย |
(Run-time Evaluation) | ๊ฐ๋ฅ | ๋ถ๊ฐ๋ฅ (์ ์ ์ผ๋ก ํด์๋จ) |
๋ธ๋ผ์ฐ์ ์ง์ | ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ ๋ถ๊ฐ๋ฅ | ์ต์ ๋ธ๋ผ์ฐ์ ์์ ์ง์ |
ํ์ฉ ๋ถ์ผ | ์ฃผ๋ก ์๋ฒ ์ธก JavaScript ๊ฐ๋ฐ | ์ฃผ๋ก ํด๋ผ์ด์ธํธ ์ธก ๋ฐ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ |
์ฌ์ฉ ์์ | Node.js | ๋ธ๋ผ์ฐ์ ๋ฐ Node.js (์ต์ ๋ฒ์ ) |
Previous Dec 18, 2023
« Next.js 14 App router with Ant Design 5 & Styled-Components
« Next.js 14 App router with Ant Design 5 & Styled-Components
Dec 27, 2023 Next
Clean Archtecture ์์ ์ ๋ฆฌ »
Clean Archtecture ์์ ์ ๋ฆฌ »