ES6 এ কীভাবে আমদানি করা বস্তু রফতানি করবেন?


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 '...';

আপনি কেন প্রতিক্রিয়া রফতানি করবেন?
— omarjmh

আপনি export {React}তবে আবার করতে পারেন , যদি আপনার কোথাও প্রতিক্রিয়া প্রয়োজন হয় তবে আপনার এটি কেবল সেখানে আমদানি করা উচিত।
— লগানফস্মিথ

2
রফতানি প্রতিক্রিয়া হ'ল একটি উদাহরণ, বাস্তবে, আমি কিছু প্রকল্পের আয়োজন করতে চাই যাতে ব্যবহারকারীর সংক্ষিপ্ত এবং উচ্চ স্তরের পথে কিছু বস্তু আমদানি করতে পারে।
— ইয়াও ঝাও

আপনাকে এই আপডেটের জন্য অনেক ধন্যবাদ। এটি ES6 / 7 এর সাথে আমার প্রতিটি সমস্যা সমাধান করেছে। আমি আপনাকে একটি উত্তর হিসাবে এটি যোগ এবং এটি গ্রহণ পরামর্শ।
— ফ্লোরিয়ান ওয়েনডেলবোন

12
export * as name1 from '...';এটি আমার পক্ষে কাজ করে না (ওয়েবপ্যাক ২ ব্যবহার করে)। কোন ধারনা?
— সত্তা কালো

উত্তর:


131

আমি প্রায়শই ইনডেক্স.জেএস ফাইলগুলিতে নিম্নলিখিত ফাইলগুলি করি যা বেশ কয়েকটি ফাইল রচনা করে:

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

আমার ব্যবহারের ক্ষেত্রে, আমার স্পষ্টতই কিছু ধরণের সুস্পষ্ট আমদানি বিবৃতি প্রয়োজন যাতে বাবেল আমার এস code কোডটি এসএস-তে স্থানান্তর করতে পারে।

ত্রুটিতে নিম্নলিখিত ফলাফলগুলি 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';

কমপ্লেক্সটি কমবেশি সাধারণ মডিউল.পোর্টস প্যাটার্ন অনুসরণ করে যেখানে আপনি এটি করবেন:

const Foo = class {

};

module.exports = Foo;

আরও এখানে:

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


প্রশ্নটি কী ছিল তা বেশ নয়?
— ড্যান ড্যাসক্লেস্কু

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