가장 큰 차이점 require
하고 import
, 즉 require
자동으로 스캔 node_modules
모듈을 찾을 수 있지만 import
, ES6에서 오는,하지 않습니다.
대부분의 사람들은 사용 바벨을 컴파일 import
하고 export
만드는, import
같은 행동 require
.
Node.js의 향후 버전은 import
자체적으로 지원할 수 있으며 (실제로 실험 버전은 이미 수행하고 있음 ) Node.js의 노트로 판단 import
하면 node_modules
ES6을 기반으로 지원하지 않으며 모듈의 경로를 지정해야합니다.
그래서 나는 당신 import
이 babel과 함께 사용하지 말 것을 제안 하지만,이 기능은 아직 확인되지 않았습니다 node_modules
. 향후에 지원할 수 있습니까?
참고로 아래는 babel이 ES6의 import
구문을 CommonJS의 require
구문으로 변환하는 방법의 예입니다 .
파일 app_es6.js
에이 가져 오기가 포함되어 있다고 가정하십시오 .
import format from 'date-fns/format';
이것은 노드 패키지 date-fns 에서 형식 함수 를 가져 오는 지시문 입니다.
관련 package.json
파일에는 다음과 같은 내용이 포함될 수 있습니다.
"scripts": {
"start": "node app.js",
"build-server-file": "babel app_es6.js --out-file app.js",
"webpack": "webpack"
}
관련 .babelrc
파일은 다음과 같습니다.
{
"presets": [
[
"env",
{
"targets":
{
"node": "current"
}
}
]
]
}
파일에 build-server-file
정의 된 이 스크립트 package.json
는 babel이 app_es6.js
파일 을 구문 분석하고 파일을 출력 하기위한 지시문입니다 app.js
.
build-server-file
스크립트를 실행 한 후 가져 와서 가져 오기를 app.js
찾으면 다음과 같이 date-fns
변환 된 것을 볼 수 있습니다.
var _format = require("date-fns/format");
var _format2 = _interopRequireDefault(_format);
이 파일의 대부분은 대부분의 사람들에게 고약하지만 컴퓨터는 이해합니다.
또한 참고로, 모듈을 생성하여 프로젝트로 가져 오는 방법의 예로서, 설치 date-fns
한 다음 열면 다음 node_modules/date-fns/get_year/index.js
을 포함하는 것을 볼 수 있습니다.
var parse = require('../parse/index.js')
function getYear (dirtyDate) {
var date = parse(dirtyDate)
var year = date.getFullYear()
return year
}
module.exports = getYear
위의 babel 프로세스를 사용하면 app_es6.js
파일에 다음이 포함될 수 있습니다.
import getYear from 'date-fns/get_year';
// Which year is 2 July 2014?
var result = getYear(new Date(2014, 6, 2))
//=> 2014
그리고 babel은 수입을 다음과 같이 변환 할 것입니다 :
var _get_year = require("date-fns/get_year");
var _get_year2 = _interopRequireDefault(_get_year);
그리고 함수에 대한 모든 참조를 적절히 처리하십시오.
express
는 유형any
입니다. 여기에 정의를 포함시킬 수 있습니다. npmjs.com/package/@types/express