নোড ১৩.২.০ এবং উপরে
নোডজেএস ১৩.২.০ এখন পতাকা ছাড়াই ইএস মডিউলগুলিকে সমর্থন করে 🎉 তবে বাস্তবায়নটি এখনও পরীক্ষামূলক হিসাবে চিহ্নিত হয়েছে সুতরাং সাবধানতার সাথে উত্পাদনে ব্যবহার করুন।
13.2.0 এ ESM সমর্থন সক্ষম করতে, আপনারটিতে নিম্নলিখিতগুলি যুক্ত করুন package.json
:
{
"type": "module"
}
সমস্ত .js
, .mjs
(বা একটি এক্সটেনশনবিহীন ফাইল) ESM হিসাবে বিবেচিত হবে।
সম্পূর্ণ package.json
অপ্ট-ইন ব্যতীত বিভিন্ন বিকল্প রয়েছে, যার সবগুলিই 13.2.0 এর জন্য ডকুমেন্টেশনে বিশদভাবে রয়েছে ।
নোড 13.1.0 এবং নীচে
যারা এখনও নোডের পুরানো সংস্করণ ব্যবহার করছেন তারা এসএমএস মডিউল লোডারটি চেষ্টা করতে চাইতে পারেন , যা নোডজেএস -এর জন্য ইএস মডিউলগুলির একটি উত্পাদন-প্রস্তুত বাস্তবায়ন:
node -r esm main.js
বিস্তারিত আপডেট ...
23 এপ্রিল 2019
ইএস মডিউলগুলি সনাক্ত করার উপায় পরিবর্তন করতে সম্প্রতি একটি পিআর অবতরণ করেছে:
https://github.com/nodejs/node/pull/26745
এটি এখনও --experimental-modules
পতাকাটির পেছনে রয়েছে , তবে মডিউলগুলি লোড করার পদ্ধতিতে বড় পরিবর্তনগুলি রয়েছে:
package.type
যা হয় module
বা হতে পারেcommonjs
type: "commonjs"
:
.js
সাধারণ হিসাবে পার্স করা হয়
- কোনও এক্সটেনশন ছাড়াই এন্ট্রি পয়েন্টের জন্য ডিফল্ট হ'ল সাধারণ
type: "module"
:
.js
এসএমএস হিসাবে পার্স করা হয়
- ডিফল্টরূপে JSON বা নেটিভ মডিউল লোড করা সমর্থন করে না
- এক্সটেনশন ছাড়াই এন্ট্রি পয়েন্টের জন্য ডিফল্ট হ'ল এসএমএল
--type=[mode]
আপনি এন্ট্রি পয়েন্ট টাইপ সেট করতে। package.type
প্রবেশের পয়েন্টের জন্য ওভাররাইড করবে ।
- একটি নতুন ফাইল এক্সটেনশন
.cjs
।
- এটি বিশেষত
module
মোডে কমনজ আমদানি করতে সহায়তা করে ।
- এটি কেবল এসএমএম লোডারটিতেই রয়েছে, কমনজ লোডারটি অপরিবর্তিত থাকে, তবে আপনি যদি পুরো ফাইল পাথটি ব্যবহার করেন তবে এক্সটেনশনটি পুরানো লোডারটিতে কাজ করবে।
--es-module-specifier-resolution=[type]
- বিকল্পগুলি
explicit
(ডিফল্ট) এবংnode
- ডিফল্টরূপে আমাদের লোডার আমদানিতে alচ্ছিক এক্সটেনশনের অনুমতি দেবে না, মডিউলটির পথটিতে অবশ্যই যদি এক্সটেনশন অন্তর্ভুক্ত থাকে তবে
- ডিফল্টরূপে আমাদের লোডার একটি সূচক ফাইল রয়েছে এমন ডিরেক্টরিগুলি আমদানির অনুমতি দেবে না
- বিকাশকারীরা
--es-module-specifier-resolution=node
কমনজ স্পেসিফায়ার রেজোলিউশন অ্যালগরিদম সক্ষম করতে ব্যবহার করতে পারেন
- এটি কোনও "বৈশিষ্ট্য" নয় বরং পরীক্ষার জন্য একটি বাস্তবায়ন। পতাকা সরানোর আগে এটি পরিবর্তিত হবে বলে আশা করা হচ্ছে
--experimental-json-loader
- যখন জসন আমদানি করার একমাত্র উপায়
"type": "module"
- সক্ষম করার সময় সমস্ত
import 'thing.json'
পরীক্ষামূলক লোডার মোডের বাইরে চলে যেতে পারে
- হোয়াটজিএইচ / এইচটিএমএল # 4315 এর ভিত্তিতে
- আপনি
package.main
একটি মডিউল জন্য একটি এন্ট্রি পয়েন্ট সেট
করতে ব্যবহার করতে পারেন
- মূলত ব্যবহৃত ফাইল এক্সটেনশনগুলি মডিউলটির ধরণের ভিত্তিতে সমাধান করা হবে
17 জানুয়ারী 2019
নোড 11.6.0 এখনও একটি পতাকাের পিছনে ES মডিউলগুলি পরীক্ষামূলক হিসাবে তালিকাবদ্ধ করে।
13 সেপ্টেম্বর 2017
একটি পতাকার পিছনে এমজেএস ফাইলগুলির সমর্থন সহ নোডজেএস 8.5.0 প্রকাশিত হয়েছে:
node --experimental-modules index.mjs
এর জন্য পরিকল্পনাটি হল v10.0 এলটিএস রিলিজের জন্য পতাকা সরানো।
- পুরানো তথ্য। Historicalতিহাসিক উদ্দেশ্যে এখানে রাখা হয়েছে -
8 সেপ্টেম্বর 2017
নোডজেএস মাস্টার শাখা ইএসএম মডিউলগুলির প্রাথমিক সহায়তার সাথে আপডেট করা হয়েছে:
https://github.com/nodejs/node/commit/c8a389e19f172edbada83f59944cad7cc802d9d5
এটি সর্বশেষতম রাত্রে উপলভ্য হওয়া উচিত (এটি আপনার বিদ্যমান ইনস্টলের পাশাপাশি এনভিএমের মাধ্যমে ইনস্টল করা যেতে পারে ):
https://nodejs.org/download/nightly/
এবং --experimental-modules
পতাকার পিছনে সক্ষম :
package.json
{
"name": "testing-mjs",
"version": "1.0.0",
"description": "",
"main": "index.mjs" <-- Set this to be an mjs file
}
তারপরে চালান:
node --experimental-modules .
ফেব্রুয়ারী 2017:
https://medium.com/@jasnell/an-update-on-es6-modules-in-node-js-42c958b890c#.6ye7mtn37
নোডজেএস ছেলেরা সিদ্ধান্ত নিয়েছে যে ফাইল এক্সটেনশনটি ব্যবহার করা সবচেয়ে কম খারাপ সমাধান .mjs
। এটি থেকে গ্রহণযোগ্যতাটি হ'ল:
অন্য কথায়, দুটি ফাইল দেওয়া foo.js
এবং bar.mjs
ব্যবহার, import *
from 'foo'
বিবেচনা করবে foo.js
CommonJS যেমন যখন import * from 'bar'
বিবেচনা করবে bar.mjs
একটি ES6 মডিউল রূপে
এবং টাইমলাইন হিসাবে ...
বর্তমান সময়ে, নোড.জেএসএস এমনকি ES6 মডিউলগুলির একটি সমর্থনযোগ্য বাস্তবায়ন কাজ শুরু করতে পারার আগে অনেকগুলি স্পেসিফিকেশন এবং বাস্তবায়ন সংক্রান্ত সমস্যা রয়েছে যা ES6 এবং ভার্চুয়াল মেশিনের দিকে হওয়া উচিত। কাজ চলছে তবে এতে কিছুটা সময় লাগবে - আমরা বর্তমানে কমপক্ষে এক বছরের দিকে তাকিয়ে আছি ।
অক্টোবর ২০১::
নোড.জেএস-এর বিকাশকারীদের একজন সম্প্রতি একটি টিসি -39 সভায় অংশ নিয়েছেন এবং নোড.জেএস এর জন্য বাস্তবায়ন করার জন্য ব্লকারদের উপর একটি দুর্দান্ত নিবন্ধ লিখেছিলেন:
https://hackernoon.com/node-js-tc-39-and-modules-a1118aecf95e
এটি থেকে মূল গ্রহণযোগ্যতা হ'ল:
- ইএস মডিউলগুলি স্থিতিশীলভাবে বিশ্লেষণ করা হয়, কমন জেএস মূল্যায়ন করা হয়
- কমনজেএস মডিউলগুলি বানর-প্যাচিং রফতানির অনুমতি দেয়, ইএস মডিউলগুলি বর্তমানে তা করে না
- কোনও ES মডিউল কী এবং কোন সাধারণ ব্যবহারকারীর ইনপুট ছাড়াই কমনজেএস কী তা সনাক্ত করা কঠিন তবে তারা চেষ্টা করছেন।
*.mjs
সম্ভবত সম্ভবত সমাধানটি মনে হয়, যদি না তারা ব্যবহারকারী-ইনপুট ছাড়াই কোনও ES মডিউলটি সঠিকভাবে সনাক্ত করতে পারে
- আসল উত্তর -
বেশ কিছুদিন ধরে এটি একটি গরম আলু। নীচের লাইনটি হ্যাঁ, নোড অবশেষে মডিউলগুলি আমদানি / রফতানি করার জন্য ES2015 সিনট্যাক্সকে সমর্থন করবে - সম্ভবত যখন লোডিং মডিউলগুলির জন্য চূড়ান্তকরণটি চূড়ান্ত হয় এবং তাতে সম্মতি হয়।
এখানে একটি ভাল ওভারভিউনোডজেএস কীভাবে ধরে আছে । মূলত, তাদের অবশ্যই তা নিশ্চিত করা দরকার যে নতুন অনুমানটি নোডের জন্য কাজ করে যা মূলত শর্তযুক্ত, সিঙ্ক্রোনাস লোডিং এবং এইচটিএমএল যা মূলত অ্যাসিনক্রোনাস।
এখনই কেউ নিশ্চিতরূপে জানেন না, তবে আমি কল্পনা করি নোড গতিশীল লোডিংয়ের জন্য import/export
নতুন ছাড়াও স্থির লোডিংয়ের পক্ষে সমর্থন করবে System.import
- এখনও require
উত্তরাধিকারের কোডটি রেখে চলেছে ।
নোড কীভাবে এটি অর্জন করতে পারে সে সম্পর্কে এখানে কয়েকটি প্রস্তাব দেওয়া হয়েছে:
node es2015 modules
, শীর্ষ ফলাফলগুলির মধ্যে একটি হিসাবে নিম্নলিখিতটি দেখায়: github.com/nodejs/node/wiki/ES6- মডেল- সনাক্তকরণ- ইন- নোড ।