큰 못 생겨요! 이것은 필요 이상으로 힘들었습니다.
플랫 기본값 하나 내보내기
이 사용할 수있는 좋은 기회가 확산 ( ...
에 { ...Matters, ...Contacts }
아래 :
// imports/collections/Matters.js
export default { // default export
hello: 'World',
something: 'important',
};
// imports/collections/Contacts.js
export default { // default export
hello: 'Moon',
email: 'hello@example.com',
};
// imports/collections/index.js
import Matters from './Matters'; // import default export as var 'Matters'
import Contacts from './Contacts';
export default { // default export
...Matters, // spread Matters, overwriting previous properties
...Contacts, // spread Contacts, overwriting previosu properties
};
// imports/test.js
import collections from './collections'; // import default export as 'collections'
console.log(collections);
그런 다음 명령 줄 (프로젝트 루트 /)에서 babel 컴파일 된 코드 를 실행하려면 다음을 수행하십시오 .
$ npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/node
(trimmed)
$ npx babel-node --presets @babel/preset-env imports/test.js
{ hello: 'Moon',
something: 'important',
email: 'hello@example.com' }
하나의 트리와 같은 기본값 내보내기
속성을 덮어 쓰지 않으려면 다음을 변경하십시오.
// imports/collections/index.js
import Matters from './Matters'; // import default as 'Matters'
import Contacts from './Contacts';
export default { // export default
Matters,
Contacts,
};
출력은 다음과 같습니다.
$ npx babel-node --presets @babel/preset-env imports/test.js
{ Matters: { hello: 'World', something: 'important' },
Contacts: { hello: 'Moon', email: 'hello@example.com' } }
기본 이름없이 여러 개의 명명 된 내보내기 내보내기
DRY 전용이라면 가져 오기에 대한 구문도 변경됩니다.
// imports/collections/index.js
// export default as named export 'Matters'
export { default as Matters } from './Matters';
export { default as Contacts } from './Contacts';
기본 내보내기가없는 2 개의 명명 된 내보내기가 생성됩니다. 그런 다음 변경하십시오.
// imports/test.js
import { Matters, Contacts } from './collections';
console.log(Matters, Contacts);
그리고 출력 :
$ npx babel-node --presets @babel/preset-env imports/test.js
{ hello: 'World', something: 'important' } { hello: 'Moon', email: 'hello@example.com' }
명명 된 모든 내보내기 가져 오기
// imports/collections/index.js
// export default as named export 'Matters'
export { default as Matters } from './Matters';
export { default as Contacts } from './Contacts';
// imports/test.js
// Import all named exports as 'collections'
import * as collections from './collections';
console.log(collections); // interesting output
console.log(collections.Matters, collections.Contacts);
통지 destructuring import { Matters, Contacts } from './collections';
앞의 예입니다.
$ npx babel-node --presets @babel/preset-env imports/test.js
{ Matters: [Getter], Contacts: [Getter] }
{ hello: 'World', something: 'important' } { hello: 'Moon', email: 'hello@example.com' }
실제로
다음과 같은 소스 파일이 제공됩니다.
/myLib/thingA.js
/myLib/thingB.js
/myLib/thingC.js
/myLib/index.js
모든 파일을 묶기 위해 를 만들면 가져 오기 / 내보내기의 목적이 무효가됩니다. index.js "래퍼 파일"을 통해 가져 오기 / 내보내기를 통해 모든 것을 전역으로 만드는 것보다 모든 것을 첫 번째로 전역 적으로 만드는 것이 더 쉽습니다.
import thingA from './myLib/thingA';
자신의 프로젝트에서 특정 파일을 원할 경우 .
모듈에 대한 내보내기로 "래퍼 파일"을 작성하는 것은 npm 또는 다년간의 다중 팀 프로젝트로 패키징하는 경우에만 의미가 있습니다.
이거 멀었 어? 자세한 내용은 문서 를 참조하십시오.
또한, stackoverflow가 결국 코드 펜스 마크 업으로 3을 지원합니다.