বিষয়টি নিয়েই রয়েছে
- কীভাবে ES6 মডিউলগুলি কমনজেএসে অনুকরণ করা হয়
- আপনি মডিউলটি কীভাবে আমদানি করবেন
ES6 থেকে কমনজেএস
এটি লেখার সময় কোনও পরিবেশ স্থানীয়ভাবে ES6 মডিউল সমর্থন করে না। নোড.জেজে এগুলি ব্যবহার করার সময় মডিউলগুলি কমনজেএসে রূপান্তর করতে আপনাকে বাবেলের মতো কিছু ব্যবহার করতে হবে। তবে কীভাবে তা ঘটে?
অনেকে module.exports = ...
সমান export default ...
এবং exports.foo ...
সমতুল্য বলে মনে করেন export const foo = ...
। এটি যদিও একেবারেই সত্য নয় বা বাবেল এটি কী করে তা অন্তত নয়।
ES6 default
রফতানিগুলি আসলে "রক্ষিত" নাম বাদে রফতানিরও নামকরণ করাdefault
হয় এবং এর জন্য বিশেষ সিনট্যাক্স সমর্থন রয়েছে। বাবেল নামের এবং ডিফল্ট রফতানিগুলি কীভাবে সংকলন করে তা একবার দেখে নেওয়া যাক:
// input
export const foo = 42;
export default 21;
// output
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = exports.foo = 42;
exports.default = 21;
এখানে আমরা দেখতে পাচ্ছি যে ডিফল্ট রফতানিটি exports
ঠিক যেমন বস্তুর একটি সম্পত্তি হয়ে যায় foo
।
মডিউলটি আমদানি করুন
আমরা মডিউলটি দুটি উপায়ে আমদানি করতে পারি: হয় প্রচলিত জেএস ব্যবহার করে বা ES6 import
সিনট্যাক্স ব্যবহার করে ।
আপনার সমস্যা: আমি বিশ্বাস করি আপনি এমন কিছু করছেন:
var bar = require('./input');
new bar();
bar
এটি ডিফল্ট রফতানির জন্য নির্ধারিত মূল্য আশা করে । তবে আমরা উপরের উদাহরণে দেখতে পাচ্ছি, default
সম্পত্তিটিতে ডিফল্ট রফতানি বরাদ্দ করা হয় !
সুতরাং ডিফল্ট রফতানি অ্যাক্সেস করতে আমাদের আসলে করতে হবে
var bar = require('./input').default;
যদি আমরা ES6 মডিউল সিনট্যাক্স ব্যবহার করি, যথা
import bar from './input';
console.log(bar);
বাবেল এটিকে রূপান্তর করবে
'use strict';
var _input = require('./input');
var _input2 = _interopRequireDefault(_input);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
console.log(_input2.default);
আপনি দেখতে পাচ্ছেন যে প্রতিটি অ্যাক্সেস অ্যাক্সেসে bar
রূপান্তরিত হয়েছে .default
।