ईएस 6 में आयातित वस्तु का निर्यात कैसे करें?


244

उपयोग का मामला सरल है: मैं सिर्फ एक वस्तु को नाम के साथ निर्यात करना चाहता हूं जैसे कि इसे आयात किया गया था।

उदाहरण के लिए:

import React from 'react';
export React;

लेकिन यह काम नहीं करता है। मुझे लिखना है:

import React from 'react';
export const React = React;

लेकिन यह अजीब है। ऐसा करने का सही तरीका क्या है?

अद्यतन :

मदद और संदर्भ के लिए धन्यवाद। मैंने कई सुरागों के साथ अपनी समस्या को हल किया है। मैं मेरे लिए और समाधान के लिए कुछ सामान्य मामलों को साझा करना चाहता हूं।

निर्यात आयात करता है

import d, {obj} from '...';

export {obj, d};
export {obj as name1, d as name2};

सभी नामित आयातों को फिर से निर्यात करें

export * from '...';
export * as name1 from '...';

कुछ नामित आयातों को फिर से निर्यात करें

export {a, b as name1} from '...';

डिफ़ॉल्ट निर्यात को डिफ़ॉल्ट निर्यात के रूप में फिर से निर्यात करें

export {default} from '...';

डिफ़ॉल्ट निर्यात आयात के रूप में नामित निर्यात

export {default as name1} from '...';

आप निर्यात क्यों करेंगे?
सर्वजाम

आप export {React}फिर से, यदि आपको कहीं प्रतिक्रिया की आवश्यकता है, तो आपको इसे वहां आयात करना चाहिए।
लोगान्सफैमेथ

2
निर्यात प्रतिक्रिया सिर्फ एक उदाहरण है, वास्तव में, मैं कुछ परियोजना को व्यवस्थित करना चाहता हूं ताकि उपयोगकर्ता कुछ वस्तु को छोटे और उच्च स्तर के पथ में आयात कर सके।
याओ झाओ

उस अपडेट के लिए बहुत बहुत धन्यवाद। इससे ईएस 6/7 के साथ मेरी हर समस्या हल हो गई। मेरा सुझाव है कि आप इसे उत्तर के रूप में जोड़ें और इसे स्वीकार करें।
फ़्लोरियन वेंडेलबोर्न

12
export * as name1 from '...';यह मेरे लिए काम नहीं करता (वेबपैक 2 का उपयोग करके)। कोई विचार?
इकाई काला

जवाबों:


131

मैं अक्सर index.js फ़ाइलों में कई फ़ाइलों की रचना करता है:

export {default as SomeClass} from './SomeClass';
export {someFunction} from './utils';
export {default as React} from 'react';

यह ब्लॉग प्रविष्टि कुछ अच्छे अतिरिक्त उदाहरण प्रदान करती है।

महत्वपूर्ण लेख

इन निर्यात किए गए आयातों को एक्सेस करते समय आपको इस गूढ़ नियम के बारे में पता होना चाहिए । मूल रूप से, किसी अन्य फ़ाइल में, आपको ऐसा नहीं करना चाहिए:

import SomeClassModule from 'SomeClass/index.js';
SomeClassModule.someFunction(); // Oops, error

तुम्हें यह करना चाहिए:

import SomeClassModule, {someFunction} from 'SomeClass/index.js';
someFunction(); // Ok

36

आप ऐसी संरचना के साथ आयातित फ़ाइल निर्यात कर सकते हैं

import First from './First'
import Second from './Second'
/..../
export { First, Second }

2

मेरे उपयोग के मामले के लिए, मुझे स्पष्ट रूप से कुछ प्रकार के स्पष्ट आयात विवरण की आवश्यकता है ताकि बाबेल अपने es7 कोड को es5 पर ट्रांसपाइल कर सके।

एक त्रुटि में निम्नलिखित परिणाम हैं You gave us a visitor for the node type "ForAwaitStatement" but it's not a valid type:

require( 'babel-core/register' ); //transpiles es7 to es5
export {default} from './module_name'

मेरा समाधान स्पष्ट रूप से मॉड्यूल का उपयोग करके आयात करना था require():

require( 'babel-core/register' );
export default require( './module_name' ).default;

-1

दिया ./foo.js:

const Foo = class {
  talk() { return 'hello'; }
};

export default Foo;

तब आपको ऐसा करने में सक्षम होना चाहिए:

import Foo from './foo';

let foo = new Foo();

foo.talk(); // => 'hello';

सिंटेक्स कम या ज्यादा सामान्यjs मॉड्यूल का उपयोग करता है। निर्यात पैटर्न, जहां आप यह करेंगे:

const Foo = class {

};

module.exports = Foo;

यहां अधिक:

http://exploringjs.com/es6/ch_modules.html


यह काफी सवाल क्या था?
डेन डैस्कलेस्कु

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.