ES6, আপনি কীভাবে একটি একক লাইনে একটি আমদানি করা মডিউল রপ্তানি করতে পারেন?


107

আমি নিম্নলিখিতগুলিতে চাই তবে সম্ভব তবে একটি একক লাইনের সাথে:

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

আমি নিম্নলিখিত চেষ্টা করেছিলাম কিন্তু এটি কাজ করে না বলে মনে হচ্ছে:

  • export Module from './Module/Module;

উত্তর:


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

স্ট্যান্ডার্ড ES6 উপায়, যতক্ষণ Moduleনা আপনার রফতানিকারক মডিউলটির ভিতরে থাকাও দরকার ।

export Module from './Module/Module';

এটি করার প্রস্তাবিত ESnext উপায়, তবে আপনি কেবলমাত্র বাবেলে এটি সক্ষম করলেই এটি কাজ করে।


এটি দুর্দান্ত কাজ করেছে, তবে মনে হচ্ছে ওয়েবপ্যাকটি এটি পছন্দ করে না, একটি বিজ্ঞপ্তি দেয় যে componentএখন কেবল পঠনযোগ্য এবং গরম পুনরায় লোড হতে অক্ষম। খুব অদ্ভুত!
ডিটুন করা হয়েছে

নিখুঁত, এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। (যদি ওয়েবপ্যাক গরম পুনরায় লোড পছন্দ করে না তবে সেই সরঞ্জামটিতে এটি কোনও সমস্যা বা এটির এইচএমআর প্লাগইন।)
বেঞ্জা

18
কেউ যদি এটি ভাবছে যে এটি কোন ব্যাবেল প্লাগইনটি হয় তবে তা export-extensionsএখানে রয়েছে - babeljs.io/docs/plugins/transfor-export-extensions
Noitidart

@ লোগানফস্মিথ ডিফল্ট হিসাবে উপরের রফতানি করার উপায় আছে?
লাইকুইড

4
@ অভিষেক- export { default as default } fromexport { default } from
কেডিএম

24

আমি জানি না তবে কেবল এটি আমার পক্ষে কাজ করে:

উপাদান / 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';

আমি যখন আমদানি করা ডিফল্টটি পুনরায় রফতানি করতে চাই তখন এটি আমার পক্ষে প্রতিক্রিয়ার (নেটিভ নয়) জন্য কাজ করে। আমি সূচি.জেএস ফাইলগুলিতে এটি ব্যবহার করি যা আমার 'খাঁটি' উপাদানগুলিতে কোনও এইচওসি প্রয়োগ করে না
শিরাজ

-1

সুতরাং, আমি সহজ রেফারেন্সিংয়ের জন্য ডিরেক্টরিটির index.jsমূলে থাকা তাত্ক্ষণিক রফতানি কার্যকারিতার জন্য এটি বেশ ভালভাবে কাজ করতে পেয়েছি components:

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

module.exports = {
  Component,
  ComponentTwo
};

আপনার ব্যবহার করা দরকার module.exports


3
মনে রাখবেন যেহেতু এটি আংশিকভাবে কমনজেএস মডিউলগুলি হ'ল এটি কেবল বাবেলে বিশেষভাবে কাজ করবে এবং যদি আপনি যদি এটির জন্য আরও পরিবেশে অবতরণ করেন তবে সত্যিকারের ES6 মডিউলটিতে এটি ব্যবহার করার চেষ্টা করেন তবে ব্যর্থ হয়ে যাবে এবং ভবিষ্যতের সংস্করণগুলিতে কাজ করা বন্ধ করে দেবে হট্টগোল।
লোগানফস্মিথ

সঠিক। বাবেল 6 বিরতিতে অন্তর্নির্মিত সাধারণ জেএস এবং এস 6 আমদানি / রফতানি। বাবেল 5 এই ভুল আচরণটিকে অনুমোদিত / জোরদার করেছে। আপনার উদাহরণে, 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

এই উত্তর এস 6 নয়। এটি একটি অ্যাকামস্ক্রিপ্ট প্ল্যাটফর্ম। -1
রেকটিড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.