मुद्दा साथ है
- ईएस 6 मॉड्यूल कॉमनजस में कैसे उत्सर्जित होते हैं
- आप मॉड्यूल को कैसे आयात करते हैं
कॉमन जेएस को ईएस 6
इसे लिखते समय, कोई भी वातावरण मूल रूप से ES6 मॉड्यूल का समर्थन नहीं करता है। Node.js में उनका उपयोग करते समय आपको मॉड्यूल को कॉमनजस में बदलने के लिए बैबेल जैसे कुछ का उपयोग करने की आवश्यकता होती है। लेकिन वास्तव में ऐसा कैसे होता है?
बहुत से लोग पर विचार module.exports = ...
के बराबर होने का export default ...
और exports.foo ...
के बराबर होने का export const foo = ...
। हालांकि यह बिल्कुल सच नहीं है, या कम से कम यह नहीं है कि बैबिल कैसे करता है।
ES6 default
निर्यात वास्तव में निर्यात का नाम भी है, सिवाय इसके कि default
एक "आरक्षित" नाम है और इसके लिए विशेष वाक्यविन्यास समर्थन है। आइए एक नज़र डालते हैं कि कैसे बेबल नामांकित और डिफ़ॉल्ट निर्यात करता है:
// 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
।
मॉड्यूल आयात करें
हम मॉड्यूल को दो तरीकों से आयात कर सकते हैं: या तो कॉमनजेस का उपयोग कर रहे हैं या ईएस 6 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
।