require vs import
두 키워드 모두 외부 라이브러리를 불러오는 코드
require
require
는 NodeJS에서 사용되고 있는 CommonJS 키워드
const moment = require('moment')
import
import
는 ES6에서 새롭게 도입된 키워드
import moment from 'moment'
차이점
웹팩에서 Import와 Require을 사용시 발생하는 차이점
아래처럼 file1.js를 불러왔을때, 특정 실제로 사용할 a값을 가져올 수 있으며 나머지값들은 웹팩의 웹팩의 tree shaking으로 인해 빌드에서 제거된다. 즉, 불필요한 파일을 제거함으로 코드량을 줄일 뿐만 아니라, 성능적으로도 좋다.
// file1.js
export {
a : 'a',
b : 'b',
c : 'c'
};
// file2.js
import { a } from './file1';
console.log(a);
하지만 require을 사용하면 동적으로 모듈을 불러올 수 있지만, 불필요한 코드들까지 불러오기 때문에 실제로 어떤 코드가 사용되었는지 명확히 알 수 없다.
import React from 'react';
import ReactDOM from 'react-dom';
import ReloadRoot from './components/ReloadRoot';
const render = () => {
ReactDOM.render(
<ReloadRoot />,
document.getElementById('root')
);
}
render();
if (module.hot) {
module.hot.accept('./components/ReloadRoot', () => {
require('./components/ReloadRoot').default;
render();
});
}
그렇기 때문에, ES2015에서 이 문제를 해결하기 위해 import를 사용한다. babel-loader에서는 웹팩의 tree shaking 기능을 유지하기 위해 설정시 modules : false로 하면 된다.
출처
Author And Source
이 문제에 관하여(require vs import), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@fromzoo/require-vs-import저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)