ES6, आप एक एकल लाइन में एक आयातित मॉड्यूल कैसे निर्यात कर सकते हैं?


107

यदि संभव हो तो मैं एक पंक्ति के साथ निम्नलिखित को चाहूंगा:

  • import Module from './Module/Module;'
  • export Module;

मैंने निम्नलिखित की कोशिश की, लेकिन यह काम नहीं करता है:

  • export Module from './Module/Module;

जवाबों:


194
export {default as Module} from './Module/Module';

मानक ES6 तरीका है, जब तक कि आपको Moduleनिर्यात करने वाले मॉड्यूल के अंदर भी उपलब्ध होने की आवश्यकता नहीं है ।

export Module from './Module/Module';

यह करने के लिए एक प्रस्तावित ESnext तरीका है, लेकिन यह केवल तभी काम करता है जब आपने इसे अभी के लिए Babel में सक्षम किया हो।


यह बहुत अच्छा काम करता है, हालांकि, ऐसा लगता है कि वेबपैक को यह पसंद नहीं है, एक अधिसूचना दे रही है जो componentअब केवल पढ़ने योग्य है और गर्म लोड होने में असमर्थ है। बहुत अजीब!
Detuned

परिपूर्ण, यह स्वीकृत उत्तर होना चाहिए। (अगर वेबपैक हॉट रीलोड पसंद नहीं है, तो उस टूल में कोई समस्या नहीं है या यह HMR प्लगइन है।)
बेन्जा

18
अगर कोई सोच रहा है कि यह कौन सा बैबल प्लगइन है, तो यह export-extensionsयहाँ है - babeljs.io/docs/plugins/transform-export-extensions
Noitidart

@loganfsmyth डिफ़ॉल्ट के रूप में उपरोक्त निर्यात करने का एक तरीका है?
लाइकेड

4
@ export { default as default } fromexport { default } from
अभिषेक-

25

मुझे पता नहीं क्यों, लेकिन यह मेरे लिए काम करता है:

घटकों / index.js:

import Component from './Component';
import Component2 from './Component2';
import Component3 from './Component3';
import Component4 from './Component4';

export {Component, Component2, Component3, Component4};

मैं इस तरह से निर्यात आयात करता हूं:

import {Component, Component2, Component3, Component4} from '../components';

23

कृपया ध्यान दें कि आप एक मॉड्यूल से सब कुछ फिर से निर्यात कर सकते हैं:

export * from './Module/Module';

यह वाइल्डकार्ड सिंटेक्स केवल नामांकित निर्यात वाली फाइलों पर काम करेगा। यदि फ़ाइल में केवल एक ही डिफ़ॉल्ट निर्यात है, तो आपको "मॉड्यूल में कोई भी नामित निर्यात नहीं मिला" त्रुटि मिलेगी।
दंबगमैन

12

प्रतिक्रियाशील मूल घटकों के लिए यह वाक्य रचना मेरे लिए काम करती है:

export {default} from 'react-native-swiper';

यह मेरे लिए रिएक्ट (मूल निवासी नहीं) के लिए काम करता है, जब मैं एक आयातित डिफ़ॉल्ट को फिर से निर्यात करना चाहता हूं। मैं इसका उपयोग index.js फाइलों में करता हूं जो मेरे 'शुद्ध' घटकों पर कोई HOCs लागू नहीं करते हैं
शिराज़

-1

इसलिए, मैंने यह आसान संदर्भ के लिए निर्देशिका index.jsके मूल में तत्काल निर्यात कार्यक्षमता के लिए काफी अच्छी तरह से काम करने के लिए पाया है components:

import Component from './Component/Component'
import ComponentTwo from './ComponentTwo/ComponentTwo'

module.exports = {
  Component,
  ComponentTwo
};

आपको उपयोग करने की आवश्यकता है module.exports


3
यह ध्यान रखें कि चूंकि यह आंशिक रूप से कॉमन जेएसएस मॉड्यूल है, यह केवल विशेष रूप से बैबेल में काम करेगा और विफल हो जाएगा यदि आप इसे वास्तविक ईएस 6 मॉड्यूल में उपयोग करने का प्रयास करते हैं, तो एक बार उनके लिए अधिक वातावरण में भूमि का समर्थन करते हैं, और संभवतः भविष्य के संस्करणों में काम करना बंद कर देंगे कोलाहल।
लोगनफ़्समीथ

सही बात। इंटरलेजिंग कॉमन जेएस एंड एस 6 इम्पोर्ट / एक्सपोर्ट इन बैबल 6 ब्रेक। Babel5 ने इस गलत व्यवहार की अनुमति दी / प्रबल किया। आपके उदाहरण में, Componentअब आपके निर्यात किए गए घटक का संदर्भ नहीं होगा, बल्कि एक ऑब्जेक्ट होगा, आपके उदाहरण के संदर्भ में रहने वालेComponent.default
स्कॉट सिल्वी

किसी को पता है कि यह कैसे उपयोग किए बिना करना है module.exports? मुझे यह पसंद है कि घटकों के एक समूह की पैकेजिंग का एक तरीका है, index.jsलेकिन सिंटैक्स का पता नहीं लगा सकता। import x from 'x'; import y from 'y'; export default {x, y};तब import {x} from xy;काम नहीं करता है (और मैं समझ नहीं सकता कि क्यों नहीं)
एलेक्स मैकमिलन

2
एलेक्स, क्या आपने export {x, y}इसके बजाय कोशिश की ?
jtompl

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