मैं एक इकाई कनवर्टर बना रहा हूं, और मैं सभी रूपांतरण कार्यों को अपनी फ़ाइल में रखना चाहता हूं। ES6 export का उपयोग करते हुए, क्या फ़ाइल में सभी कार्यों को उनके डिफ़ॉल्ट नामों के साथ केवल एक पंक्ति का उपयोग करके निर्यात करने का कोई तरीका है? उदाहरण के लिए:

export default all;

फ़ंक्शन केवल फ़ाइल में हैं, किसी ऑब्जेक्ट के भीतर नहीं।

71
JakAttk123 2 अप्रैल 2018, 21:25

6 जवाब

सबसे बढ़िया उत्तर

नहीं, कोई वाइल्डकार्ड निर्यात नहीं है (सिवाय जब आप फिर से निर्यात कर रहे हों सब कुछ दूसरे मॉड्यूल से, लेकिन यह वह नहीं है जिसके बारे में आप पूछ रहे हैं)।

बस export प्रत्येक फ़ंक्शन घोषणा के सामने रखें जिसे आप निर्यात करना चाहते हैं, उदा।

export function foo() {
    // ...
}
export function bar() {
    // ...
}

या निश्चित रूप से, यदि आप फ़ंक्शन एक्सप्रेशन का उपयोग कर रहे हैं:

export var foo = function() {
    // ...
};
export let bar = () => {
    // ...
};
export const baz = value => {
    // ...
};
69
T.J. Crowder 2 नवम्बर 2019, 15:14

मेरे उपयोग के मामले में, मेरे पास एक फ़ाइल में तीन पुन: प्रयोज्य कार्य हैं।

utils/reusables.js

export const a = () => {}
export const b = () => {}
export const c = () => {}

अलग-अलग फ़ाइल नामों के बजाय रूट फ़ोल्डर को इंगित करने के लिए, मैंने index.js नामक एक फ़ाइल बनाई, जिसमें व्यक्तिगत फ़ाइलों में सूचीबद्ध सभी फ़ंक्शन शामिल होंगे।

utils/index.js

export * from './reusables'

अब, जब मैं अपने a फ़ंक्शन का उपयोग करना चाहता हूं, तो मुझे इसे इस तरह से आयात करना होगा

import { a } from '../utils'

इसे अपनी व्यक्तिगत फाइलों से कॉल करने के बजाय

import { a } from '../utils/reusables'
2
coderpc 7 जिंदा 2021, 18:29

मुझे लगता है कि एक लापता सामान्य समाधान है, जो index.js फ़ाइल में निर्यात कर रहा है:

myModule/myFunctions.js

export const foo = () => { ... }
export const bar = () => { ... }

फिर myModule/index.js में

export * from "./myFunctions.js";

इस तरह आप बस इसके साथ आयात और उपयोग कर सकते हैं:

import { foo, bar } from "myModule";
foo();
bar();
3
Emzaw 21 अक्टूबर 2020, 17:38

आप उन्हें अपनी स्क्रिप्ट के नीचे निर्यात भी कर सकते हैं।

function cube(x) {
  return x * x * x;
}

const foo = Math.PI + Math.SQRT2;

var graph = {
  options: {
      color:'white',
      thickness:'2px'
  },
  draw: function() {
      console.log('From graph draw function');
  }
}

export { cube, foo, graph };

आप मूल मॉड्यूल में सबमॉड्यूल को एक साथ जोड़ सकते हैं ताकि वे उस मॉड्यूल से आयात करने के लिए उपलब्ध हों।

// In parentModule.js
export { myFunction, myVariable } from 'childModule1.js';
export { myClass } from 'childModule2.js';

// In top-level module
import { myFunction, myVariable, myClass } from 'parentModule.js'
5
CloudBranch 9 अक्टूबर 2019, 14:34

आप module.exports का उपयोग इस प्रकार भी कर सकते हैं:

function myFunction(arg) {
  console.debug(arg);
}
function otherFunction(arg) {
  console.error(arg);
}

module.exports = {
  myFunction: myFunction,
  otherFunction: otherFunction,
};

फिर आप इसे आयात कर सकते हैं:

import {myFunction, otherFunction} from "./Functions.js";
12
scot 15 फरवरी 2020, 22:55

मुझे लगता है कि इसके बहुत सारे समाधान हैं। और जैसा कि उत्तर दिया गया है, कोई वाइल्डकार्ड निर्यात नहीं है। लेकिन, आप आयात को 'वाइल्डकार्ड' कर सकते हैं। इसलिए, मैं उन सभी कार्यों से पहले export डालना पसंद करता हूं जिन्हें आप फ़ाइल से उजागर करना चाहते हैं:

//myfile.js
export function fn1() {...} 
export function fn2() {...}

और फिर import इसे पसंद करते हैं:

import * as MyFn from './myfile.js'

बाद में आप इसे इस तरह इस्तेमाल कर सकते हैं:

MyFn.fn1();
MyFn.fn2();
33
ionizer 30 पद 2018, 09:27