Input + Output = True

require vs import ์ฐจ์ด ๋ณธ๋ฌธ

๐Ÿ‘ฉ‍๐Ÿ’ปCS

require vs import ์ฐจ์ด

IOTrue 2023. 4. 3. 11:57

๐Ÿ˜Ž require() vs import() ์ฐจ์ด

const module = require('./module.js')

import module from './module.js'

 

require์™€ import ๋‘˜ ๋‹ค ์™ธ๋ถ€ ๋ชจ๋“ˆ์˜ ์ฝ”๋“œ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฌธ๋ฒ•์ด๋‹ค.

 

โœ… require vs import ๋น„๊ต

  • require / exports๋Š” NodeJS์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” CommonJS ํ‚ค์›Œ๋“œ
    import / export๋Š” ES6(ES2015)์—์„œ ์ƒˆ๋กญ๊ฒŒ ๋„์ž…๋œ ํ‚ค์›Œ๋“œ
  • require๋Š” ํŒŒ์ผ์˜ ์–ด๋А ์ง€์ ์—์„œ๋‚˜ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ
    import๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ํŒŒ์ผ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
    (import ์ „์šฉ ๋น„๋™๊ธฐ ๋ฌธ๋ฒ•์œผ๋กœ ํŒŒ์ผ ์ค‘๊ฐ„์— ๋ชจ๋“ˆ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ๋ฅผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค)
  • import๊ฐ€ require๋ณด๋‹ค ์„ฑ๋Šฅ์ด ์šฐ์ˆ˜ํ•˜๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ์ ˆ์•ฝํ•œ๋‹ค.
  • ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋‘ ํ‚ค์›Œ๋“œ๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค

 

โœ… require vs import ๋ฌธ๋ฒ• - ์ „์ฒด ๋‚ด๋ณด๋‚ด๊ธฐ/ ๊ฐ€์ ธ์˜ค๊ธฐ

1. require

// ์ „์ฒด ๋‚ด๋ณด๋‚ด๊ธฐ - ๋ชจ๋“ˆ ์ „์ฒด๋ฅผ export, ํŒŒ์ผ๋‚ด ํ•œ ๋ฒˆ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
const obj = {
   num: 2023,
   sum: function (a, b) {
      console.log(a + b)
   },
   subtract: function (a, b) {
      console.log(a - b)
   },
};

module.exports = obj


// ์ „์ฒด ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
const obj = require('./module.js')

obj.num; // 2023
obj.sum(1, 2) // 3
obj.subtract(2, 1) // 1

 

2. import

// ์ „์ฒด ๋‚ด๋ณด๋‚ด๊ธฐ - ๋ชจ๋“ˆ ์ „์ฒด๋ฅผ export, ํŒŒ์ผ๋‚ด ํ•œ ๋ฒˆ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
const obj = {
   num: 2023,
   sum: function (a, b) {
      console.log(a + b)
   },
   subtract: function (a, b) {
      console.log(a - b)
   },
}

export default obj


// ์ „์ฒด ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
import obj from './module.js'

obj.num // 2023
obj.sum(1, 2) // 3
obj.subtract(2, 1) // 1

 

โœ… require vs import ๋ฌธ๋ฒ• - ๊ฐœ๋ณ„ ๋‚ด๋ณด๋‚ด๊ธฐ/ ๊ฐ€์ ธ์˜ค๊ธฐ

1. require

// ๊ฐœ๋ณ„ ๋‚ด๋ณด๋‚ด๊ธฐ
exports.num = 2023 // ๋ณ€์ˆ˜ export
exports.sum = function(a, b) { // ํ•จ์ˆ˜ export
    console.log(a + b)
}
exports.Person = class Person { // ํด๋ž˜์Šค export
    constructor(name){
        this.name = name
    }
}


// ๊ฐœ๋ณ„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
const { num, sum, Person } = require('./module.js')

console.log(num) // 2023
sum(1, 2) // 3
const person = new Person('IOTrue')

 

2. import

// ๊ฐœ๋ณ„ ๋‚ด๋ณด๋‚ด๊ธฐ
exports const num = 2023 // ๋ณ€์ˆ˜ export
exports function sum(a, b) { // ํ•จ์ˆ˜ export
    console.log(a + b)
}
exports class Person { // ํด๋ž˜์Šค export
    constructor(name){
        this.name = name
    }
}

------ ๋˜๋Š” ------

const num = 2023 // ๋ณ€์ˆ˜ export
function sum(a, b) { // ํ•จ์ˆ˜ export
    console.log(a + b)
}
class Person { // ํด๋ž˜์Šค export
    constructor(name){
        this.name = name
    }
}

export {num, sum, Person}


// ๊ฐœ๋ณ„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
import { num, sum, Person } from './module.js'

console.log(num) // 2023
sum(1, 2) // 3
const person = new Person('IOTrue')

------ ๋˜๋Š” ------

import * as obj from './module.js'

console.log(obj.num) // 2023
obj.sum(1, 2) // 3
const person = new obj.Person('IOTrue')

 

โœ… Node.js์—์„œ import ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

package.json์— ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด Node.js์—์„œ import๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

{
  "type": "module"
}

 

 

 

 

์ฐธ๊ณ 

 

 

Comments