programing

모듈 내보내기 대 Node.js 및 ES6의 내보내기 기본값

muds 2023. 5. 16. 23:10
반응형

모듈 내보내기 대 Node.js 및 ES6의 내보내기 기본값

노드의 차이점은 무엇입니까?module.exports및 ES6의export default저는 제가 왜 "__ is not constructor" 오류가 발생하는지 알아내려고 합니다.export defaultNode.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

반응형