기본적으로 require와 import는 모듈 키워드로 외부 파일이나 라이브러리를 불러올 때 사용한다. require는 NodeJS에서 사용되고 있는 CommonJS 키워드이고, import는 ES2015에서 새롭게 도입된 키워드로 둘다 다른 파일의 코드를 불러온다는 목적은 같지만, 다른 문법 구조를 지니고 있다.
NodeJS에서 사용되고 있는 CommonJS 키워드
const library = require("library")
module.exports = library;
JS의 ES6 문법으로 다른 패키지 안에 있는 클래스, 메소드, 변수 등의 데이터를 사용하고자 할 때 쓰는 키워드
import library from "library"
export default library;
두 키워드 모두 다른 파일의 코드를 불러온다는 동일한 목적을 가지고 있지만 다른 문법구조를 가지고 있고, Babel과 같은 ES6 코드를 변환해주는 도구 없이는 require 키워드를 사용해야 한다.
예시로, React 환경에서는 babel이 import 구문을 require 구문으로 변환시켜줘서 import를 사용할 수 있지만, 번들링을 위해 사용하는 webpack은 node.js 환경에서 구동하므로 require을 사용해야 한다.