모듈 내보내기 대 Node.js 및 ES6의 내보내기 기본값
노드의 차이점은 무엇입니까?module.exports
및 ES6의export default
저는 제가 왜 "__ is not constructor" 오류가 발생하는지 알아내려고 합니다.export default
Node.js 6.2.2에 있습니다.
효과가 있는 것
'use strict'
class SlimShady {
constructor(options) {
this._options = options
}
sayName() {
return 'My name is Slim Shady.'
}
}
// This works
module.exports = SlimShady
안 되는 것
'use strict'
class SlimShady {
constructor(options) {
this._options = options
}
sayName() {
return 'My name is Slim Shady.'
}
}
// This will cause the "SlimShady is not a constructor" error
// if in another file I try `let marshall = new SlimShady()`
export default SlimShady
에 문제가 있습니다.
- ES6 모듈이 공통으로 에뮬레이트되는 방법제이에스
- 모듈을 가져오는 방법
ES6에서 공통으로제이에스
이 문서를 작성할 때 ES6 모듈을 기본적으로 지원하는 환경은 없습니다.Node.js에서 사용할 때는 모듈을 CommonJS로 변환하기 위해 Babel과 같은 것을 사용해야 합니다.하지만 정확히 어떻게 그런 일이 일어날까요?
많은 사람들이 고려합니다.module.exports = ...
와 동등한export default ...
그리고.exports.foo ...
와 동등한export const foo = ...
하지만 그것은 완전히 사실이 아니거나 적어도 바벨이 하는 방식은 아닙니다.
ES6default
수출 또한 실제로 수출로 명명됩니다. 단,default
는 "접두사" 이름이며 이 이름에 대한 특별한 구문 지원이 있습니다.Babel이 명명된 내보내기와 기본 내보내기를 컴파일하는 방법을 살펴보겠습니다.
// input
export const foo = 42;
export default 21;
// output
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = exports.foo = 42;
exports.default = 21;
여기서 우리는 기본 내보내기가 다음의 속성이 되는 것을 볼 수 있습니다.exports
객체, 같은 것.foo
.
모듈 가져오기
두 가지 방법으로 모듈을 가져올 수 있습니다.공통 사용 중 하나JS 또는 ES6 사용import
통사론
문제:저는 당신이 다음과 같은 일을 하고 있다고 믿습니다.
var bar = require('./input');
new bar();
을 예상하고bar
기본 내보내기 값이 할당됩니다.그러나 위의 예에서 볼 수 있듯이 기본 내보내기는 다음에 할당됩니다.default
재산!
기본 내보내기에 액세스하려면 실제로 다음 작업을 수행해야 합니다.
var bar = require('./input').default;
ES6 모듈 구문을 사용하는 경우, 즉
import bar from './input';
console.log(bar);
바벨은 그것을 변화시킬 것입니다.
'use strict';
var _input = require('./input');
var _input2 = _interopRequireDefault(_input);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
console.log(_input2.default);
에 대한 모든 액세스 권한을 볼 수 있습니다.bar
액세스로 변환됩니다..default
.
Felix Kling은 모듈을 사용하여 명명된 내보내기와 함께 내보내기 기본값을 수행하는 방법을 궁금해하는 사람들을 위해 이 두 가지를 매우 잘 비교했습니다.nodejs에서 내보내기
module.exports = new DAO()
module.exports.initDAO = initDAO // append other functions as named export
// now you have
let DAO = require('_/helpers/DAO');
// DAO by default is exported class or function
DAO.initDAO()
기본 내보내기 및 내보내기 confoo를 사용하려면 프로젝트에서 babel을 올바르게 구성해야 합니다.
npm install --save-dev @babel/plugin-proposal-export-default-from
그런 다음 아래 구성을 .babelrc에 추가합니다.
"plugins": [
"@babel/plugin-proposal-export-default-from"
]
언급URL : https://stackoverflow.com/questions/40294870/module-exports-vs-export-default-in-node-js-and-es6
'programing' 카테고리의 다른 글
node.js 파일 제거 (0) | 2023.05.16 |
---|---|
확인란이 선택되어 있는지 여부를 jQuery (0) | 2023.05.16 |
PostgreSQL에서 정렬로 고정된 수의 행을 삭제하려면 어떻게 해야 합니까? (0) | 2023.05.16 |
새 프로젝트에 대한 새 빈 분기 생성 (0) | 2023.05.16 |
Angular2의 Blur 이벤트에서 사용하는 방법은 무엇입니까? (0) | 2023.05.16 |