require와 import차이점

young0_0·2023년 4월 3일
0

js

목록 보기
8/10

require vs import

둘다 외부 파일이나 라이브러리의 코드를 불러온다는 같은 목적을 가지고 있으나 전혀 다른 문법 구조를 지니고 있다.

require

NodeJS에서 사용 되고 있는 CommonJS 키워드 이고 모듈을 불러오는 키워드 이다.

전체내보내기

  • 모듈 전체를 export, 파일내 한번만 사용 가능하다.
//export
const obj = {
   num : 100,
   sum: function(a,b){
   	 console.log(a+b)
   }
  extract:function (a,b){
  	console.log(a-b)
  }
}

moudule.exports = obj
// require
const obj = require('./exportFile.js')

obj.num; //100
obj.sum(10,20) // 30
obj.extract(10,20) //-10

개별내보내기

export.name = 'happy'
export.sayHi = function (){
	console.log('Hello World!)
}
export.Person = class Person {
	constructor(name){
    	this.name = name;
    }
}
const {name, sayHi, Person} = require('./exportFile')
console.log(name)
sayHi()
const person = new Person('gold')

import

ES6(ES2015)문법으로 다르패키지 안에 있는 클래스, 메소드, 변수 등의 데이터를 사용하고자 할 때 쓰는 키워드 이다.

전체 내보내기

  • 모듈 전체를 export, 파일내 한번만 사용 가능하다
const obj = {
   num : 100,
   sum: function(a,b){
   	 console.log(a+b)
   }
  extract:function (a,b){
  	console.log(a-b)
  }
}
export default obj;
  • 전체 자체를 import 할 경우 중괄호 없이 그냥 쓴다.
import obj from './exportFile.js';
obj.num; //100
obj.sum(10,20) // 30
obj.extract(10,20) //-10

개별 내보내기

  • 멤버를 직접 하나씩
export const name ="Happy"
export function sayHi() {
	console.log('Hello')
}
export class Person{
	constructor(name){
    	this.name = name
    }
}

-------------------
// import
import{name, sayHi, Person} from './exportFile.js'
console.log(name)
sayHi()
const person = new Person('haha')
  • 멤버를 따로 묶어서
const name = 'Happy'
function sayHello(){
	console.log('hello'
}
class Peron {
	constructor(name){
    	this.name = name
    }
}
export{name, sayHello, Person}

-----------
 //import 개별로 export 된걸 *로 한번에 붂고 as로 별칭을줘서, 마치 전체 export default 된걸 import 한 것처럼 사용 가능
  
 import *as obj from './exportFile.js'
console.log(obj.name)
obj.sayHello()
const person = new obj.Person('haha')

require 와 import의 주요 차이점

  • require()는 CommonJS를 사용하는 node.js문이지만 import()는 ES6에서만 사용한다.
  • require()는 프로그램 어느 지점에서나 호출 할 수 있지만 import()는 파일의 시작 부분에서만 실행할 수 있다.
  • 하나의 프로그램에서 두 키워드를 동시에 사용할 수 없다.
  • 일반적으로 import()는 사용자가 필요한 모듈부분 만 선택하고 로드 할 수 있기 때문에 더 선호된다. 또한 require()보다 성능이 우수하여 메모리를 절약한다.
  • babel과 같은 ES6코드를 변환해주는 도구 없이는 require 키워드를 사용해야한다.

참고
https://inpa.tistory.com/entry/NODE-%F0%9F%93%9A-require-%E2%9A%94%EF%B8%8F-import-CommonJs%EC%99%80-ES6-%EC%B0%A8%EC%9D%B4-1#commonjs_%EB%AC%B8%EB%B2%95_require_/_exports

profile
열심히 즐기자ㅏㅏㅏㅏㅏㅏㅏ😎

0개의 댓글