টি এল; ডিআর - না, যতক্ষণ না ~ অক্টোবর 2019. দ্য Node.js মডিউল টিম করেছে জিজ্ঞাসা :
দয়া করে [অক্টোবর 2019] পর্যন্ত নোড.জেএস দ্বারা ব্যবহারের উদ্দেশ্যে নির্মিত কোনও ইএস মডিউল প্যাকেজ প্রকাশ করবেন না Please
2019 মে আপডেট
২০১৫ সাল থেকে যখন এই প্রশ্নটি জিজ্ঞাসা করা হয়েছিল, মডিউলগুলির জন্য জাভাস্ক্রিপ্ট সমর্থন উল্লেখযোগ্যভাবে পরিপক্ক হয়েছে এবং আশা করা যাচ্ছে যে অক্টোবর 2019 এ এটি আনুষ্ঠানিকভাবে স্থিতিশীল হতে চলেছে other অন্য সমস্ত উত্তর এখন অপ্রচলিত বা অতিরিক্ত জটিল। এখানে বর্তমান পরিস্থিতি এবং সেরা অনুশীলন is
ES6 সমর্থন
সংস্করণ 6 থেকে নোড দ্বারা 99% ইএস 6 (ওরফে 2015) সমর্থন করেছে । নোডের বর্তমান সংস্করণটি 12 All সমস্ত চিরসবুজ ব্রাউজারগুলি ES6 এর বিশাল সংখ্যক বৈশিষ্ট্য সমর্থন করে। ইসমাস্ক্রিপ্ট এখন 2019 এর সংস্করণে রয়েছে এবং সংস্করণ স্কিমটি এখন বছরগুলি ব্যবহারের পক্ষে।
ব্রাউজারগুলিতে ES মডিউল (ওরফে ECMAScript মডিউল)
সকল চিরহরিৎ ব্রাউজার হয়েছে সমর্থনকারী import
-ing ES6 মডিউল যেহেতু 2017. ডায়নামিক আমদানির হয় সমর্থিত Chrome এর দ্বারা (+ + কাটাচামচ অপেরা এবং Samsung ইন্টারনেটের মত) এবং সাফারি। ফায়ারফক্স সমর্থন পরবর্তী সংস্করণ, 67 এর জন্য স্লেড।
মডিউল লোড করার জন্য আপনার আর ওয়েবপ্যাক / রোলআপ / পার্সেল ইত্যাদির দরকার নেই । এগুলি এখনও অন্য উদ্দেশ্যে কার্যকর হতে পারে তবে আপনার কোড লোড করার প্রয়োজন নেই। আপনি সরাসরি ইএস মডিউল কোডের দিকে নির্দেশ করে URL গুলি আমদানি করতে পারেন।
নোডে ইএস মডিউল
ইডি মডিউলগুলি ( / এর .mjs
সাথে ফাইলগুলি ) নোড ভি 8.5.0 থেকে পতাকা সহ কল করে সমর্থনযোগ্য । নোড ভি 12, এপ্রিল 2019 এ প্রকাশিত হয়েছে, পরীক্ষামূলক মডিউলগুলির সমর্থনটি আবারও লিখেছিল। সর্বাধিক দৃশ্যমান পরিবর্তনটি হ'ল আমদানি করার সময় ফাইল এক্সটেনশনটি ডিফল্টরূপে নির্দিষ্ট করা দরকার:import
export
node
--experimental-modules
// lib.mjs
export const hello = 'Hello world!';
// index.mjs:
import { hello } from './lib.mjs';
console.log(hello);
বাধ্যতামূলক .mjs
এক্সটেনশনগুলি জুড়ে নোট করুন । হিসাবে চালান:
node --experimental-modules index.mjs
যখন মডিউল টিম নোড 12 রিলিজ হয় জিজ্ঞাসা ডেভেলপারদের প্রকাশ না করার ইএস মডিউল প্যাকেজ Node.js দ্বারা ব্যবহারের জন্য দেয়ার উদ্দেশ্যে করা পর্যন্ত একটি সমাধান উভয় মাধ্যমে প্যাকেজ ব্যবহার করার জন্য পাওয়া যায় require('pkg')
এবং import 'pkg'
। আপনি এখনও ব্রাউজারগুলির জন্য উদ্দিষ্ট দেশীয় ইএস মডিউলগুলি প্রকাশ করতে পারেন।
নেটিভ ইএস মডিউলগুলির ইকোসিস্টেম সমর্থন
মে 2019 সালের হিসাবে, ইএস মডিউলগুলির জন্য ইকোসিস্টেম সমর্থন অপরিণত। উদাহরণস্বরূপ, জেস্ট এবং আভা এর মতো টেস্ট ফ্রেমওয়ার্কগুলি সমর্থন করে না --experimental-modules
। আপনাকে ট্রান্সপ্লেলার ব্যবহার করতে হবে, এবং তারপরে নামকরণকৃত আমদানি ( import { symbol }
) সিনট্যাক্স (যা এখনও বেশিরভাগ এনপিএম প্যাকেজগুলির সাথে কাজ করে না) এবং ডিফল্ট আমদানি সিনট্যাক্স ( import Package from 'package'
) যা কাজ করে তা ব্যবহার করার মধ্যে সিদ্ধান্ত নিতে হবে তবে বাবেল পার্স করার সময় নয় টাইপস্ক্রিপ্টে রচিত প্যাকেজগুলির জন্য (গ্রাফিক্যেল-সরঞ্জামগুলি, নোড-ইনফ্লক্স, ফ্যাসট ইত্যাদি) তবে এমন একটি কার্যকারিতা রয়েছে যা --experimental-modules
বাবেল আপনার কোডটি স্থানান্তর করে যাতে আপনি এটি জেস্ট / আভা / মোচা ইত্যাদি দিয়ে পরীক্ষা করতে পারেন:
import * as ApolloServerM from 'apollo-server'; const ApolloServer = ApolloServerM.default || ApolloServerM;
অরূপভাবে কুৎসিত, তবে এইভাবে আপনি নিজের ইএস মডিউল কোড import
/ export
দিয়ে node --experimental-modules
ট্রান্সপোর্টার ছাড়াই লিখতে এবং চালাতে পারেন । আপনার যদি নির্ভরতা থাকে যা এখনও ইএসএম প্রস্তুত নয়, তবে উপরের মতো সেগুলি আমদানি করুন এবং আপনি বাবেলের মাধ্যমে পরীক্ষার ফ্রেমওয়ার্ক এবং অন্যান্য সরঞ্জামাদি ব্যবহার করতে সক্ষম হবেন।
প্রশ্নের পূর্ববর্তী উত্তর - মনে রাখবেন, নোড প্রয়োজনীয় / আমদানির সমস্যা সমাধান না করা পর্যন্ত এটি করবেন না, আশা করি অক্টোবর 2019 এর আশেপাশে।
পিছনের সামঞ্জস্য সহ EP6 মডিউলগুলি এনএমপি তে প্রকাশ করা
যাতে এটি সরাসরি ইম্পোর্ট করা যেতে পারে, হট্টগোল বা অন্যান্য transpilers ছাড়া npmjs.org একটি ইএস মডিউল প্রকাশ করতে, কেবল বাতলান main
আপনার ক্ষেত্র package.json
থেকে .mjs
ফাইল, কিন্তু এক্সটেনশন বর্জন:
{
"name": "mjs-example",
"main": "index"
}
এটাই একমাত্র পরিবর্তন। এক্সটেনশন বাদ দিয়ে, নোড - এক্সপেরিমেন্টাল-মডিউলগুলি দিয়ে চালিত হলে কোনও এমজেএস ফাইলের সন্ধান করবে। অন্যথায় এটি .js ফাইলে ফিরে আসবে, সুতরাং পুরানো নোড সংস্করণগুলিকে সমর্থন করার জন্য আপনার বিদ্যমান প্রতিস্থাপন প্রক্রিয়াটি আগের মতো কাজ করবে - কেবল বাবেল .mjs
ফাইল (গুলি) এর দিকে ইঙ্গিত করার বিষয়টি নিশ্চিত করুন।
এখানে নোড <8.5.0 জন্য পিছন সামঞ্জস্য সঙ্গে একটি নেটিভ ইএস মডিউলের জন্য উৎস যে আমি NPM প্রকাশিত। আপনি বাবেল বা অন্য কিছু ছাড়াই এখনই এটি ব্যবহার করতে পারেন।
মডিউলটি ইনস্টল করুন:
npm install local-iso-dt
# or, yarn add local-iso-dt
একটি পরীক্ষা ফাইল টেস্ট.এমজেস তৈরি করুন :
import { localISOdt } from 'local-iso-dt/index.mjs';
console.log(localISOdt(), 'Starting job...');
- এক্সপেরিমেন্টাল-মডিউলগুলি পতাকা সহ নোড (v8.5.0 +) চালান:
node --experimental-modules test.mjs
টাইপরাইটারে মুদ্রি
আপনি যদি টাইপস্ক্রিপ্টে বিকাশ করেন তবে আপনি ES6 কোড উত্পন্ন করতে এবং ES6 মডিউলগুলি ব্যবহার করতে পারেন:
tsc index.js --target es6 --modules es2015
তারপরে, আপনাকে *.js
আউটপুটটির নতুন নামকরণ করতে হবে .mjs
, একটি পরিচিত সমস্যা যা আশা করা যায় শীঘ্রই সংশোধন হয়ে যাবে তাই সরাসরি tsc
আউটপুট .mjs
ফাইলগুলি করতে পারে ।