এই নিবন্ধটি লেখার সময় কোন জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক তৈরি করা হয়নি।
নিম্নলিখিতটি সার্কেল CI থেকে "এটি ভবিষ্যত" নিবন্ধটি দ্বারা অনুপ্রাণিত। আপনি এখানে মূল পড়তে পারেন . এই অংশটি শুধুমাত্র একটি মতামত, এবং যেকোনো জাভাস্ক্রিপ্ট ফ্রেমওয়ার্কের মতো, এটিকে খুব বেশি গুরুত্ব সহকারে নেওয়া উচিত নয়।
আরে, আমি এই নতুন ওয়েব প্রকল্পটি পেয়েছি, কিন্তু সত্যি কথা বলতে আমি কয়েক বছরে খুব বেশি ওয়েব কোডিং করিনি এবং আমি শুনেছি ল্যান্ডস্কেপ কিছুটা পরিবর্তিত হয়েছে। আপনি কি এখানকার সবচেয়ে আপ-টু-ডেট ওয়েব ডেভেলপার?
-আসল শব্দটি ফ্রন্ট এন্ড ইঞ্জিনিয়ার, কিন্তু হ্যাঁ, আমিই সঠিক লোক। আমি 2016 সালে ওয়েব করি। ভিজ্যুয়ালাইজেশন, মিউজিক প্লেয়ার, ফ্লাইং ড্রোন যা ফুটবল খেলে, আপনি এটির নাম বলুন। আমি সবেমাত্র JsConf এবং ReactConf থেকে ফিরে এসেছি, তাই আমি ওয়েব অ্যাপ তৈরির সর্বশেষ প্রযুক্তি জানি।
কুল। আমাকে এমন একটি পৃষ্ঠা তৈরি করতে হবে যা ব্যবহারকারীদের কাছ থেকে সর্বশেষ কার্যকলাপ প্রদর্শন করে, তাই আমাকে শুধুমাত্র REST এন্ডপয়েন্ট থেকে ডেটা পেতে হবে এবং এটিকে কিছু ধরণের ফিল্টারযোগ্য টেবিলে প্রদর্শন করতে হবে এবং সার্ভারে কিছু পরিবর্তন হলে এটি আপডেট করতে হবে। আমি ভাবছিলাম হয়তো jQuery ব্যবহার করে ডেটা আনতে এবং প্রদর্শন করব?
-ওহ মাই গড না, কেউ আর jQuery ব্যবহার করে না। আপনার প্রতিক্রিয়া শেখার চেষ্টা করা উচিত, এটি 2016।
ওহ, ঠিক আছে। প্রতিক্রিয়া কি?
-এটি Facebook-এর কিছু ছেলেদের দ্বারা তৈরি একটি সুপার কুল লাইব্রেরি, এটি সত্যিই আপনার অ্যাপ্লিকেশনে নিয়ন্ত্রণ এবং কর্মক্ষমতা নিয়ে আসে, আপনাকে খুব সহজেই যেকোন ভিউ পরিবর্তনগুলি পরিচালনা করার অনুমতি দেয়৷
যে ঝরঝরে শোনাচ্ছে. আমি কি সার্ভার থেকে ডেটা প্রদর্শনের জন্য প্রতিক্রিয়া ব্যবহার করতে পারি?
-হ্যাঁ, তবে প্রথমে আপনাকে আপনার ওয়েবপেজে একটি লাইব্রেরি হিসাবে প্রতিক্রিয়া এবং প্রতিক্রিয়া যোগ করতে হবে।
দাঁড়াও, দুটি লাইব্রেরি কেন?
-সুতরাং একটি হল প্রকৃত লাইব্রেরি এবং দ্বিতীয়টি হল DOM-কে ম্যানিপুলেট করার জন্য, যা এখন আপনি JSX-এ বর্ণনা করতে পারেন।
জেএসএক্স? JSX কি?
-জেএসএক্স হল একটি জাভাস্ক্রিপ্ট সিনট্যাক্স এক্সটেনশন যা দেখতে অনেকটা XML এর মত। এটি DOM বর্ণনা করার অন্য একটি উপায়, এটি একটি ভাল HTML হিসাবে চিন্তা করুন।
HTML এর সাথে ভুল কি?
-এটি 2016। কেউ আর সরাসরি HTML কোড করে না।
ঠিক। যাইহোক, যদি আমি এই দুটি লাইব্রেরি যোগ করি তবে আমি প্রতিক্রিয়া ব্যবহার করতে পারি?
-বেশ না. আপনাকে ব্যাবেল যোগ করতে হবে এবং তারপরে আপনি প্রতিক্রিয়া ব্যবহার করতে পারবেন।
অন্য লাইব্রেরি? বাবেল কি?
-ওহ, ব্যাবেল হল একটি ট্রান্সপিলার যা আপনাকে জাভাস্ক্রিপ্টের নির্দিষ্ট সংস্করণগুলিকে লক্ষ্য করার অনুমতি দেয়, যখন আপনি জাভাস্ক্রিপ্টের যেকোনো সংস্করণে কোড করেন। ReactJS ব্যবহার করার জন্য আপনাকে Babel অন্তর্ভুক্ত করতে হবে না, কিন্তু আপনি যদি না করেন, আপনি ES5 ব্যবহার করে আটকে আছেন, এবং আসুন বাস্তবে বলি, এটি 2016, আপনার বাকি কুল বাচ্চাদের মতো ES2016+ এ কোডিং করা উচিত।
ES5? ES2016+? আমি এখানে হারিয়ে যাচ্ছি. ES5 এবং ES2016+ কি?
-ES5 এর অর্থ হল ECMAScript 5। এটি এমন একটি সংস্করণ যা বেশিরভাগ লোককে টার্গেট করে কারণ এটি আজকাল বেশিরভাগ ব্রাউজার দ্বারা প্রয়োগ করা হয়েছে।
ECMAScript?
-হ্যাঁ, আপনি জানেন, স্ক্রিপ্টিং স্ট্যান্ডার্ড জাভাস্ক্রিপ্ট 1995 সালে প্রাথমিক প্রকাশের পর 1999-এর উপর ভিত্তি করে তৈরি হয়েছিল, তখন যখন জাভাস্ক্রিপ্টের নাম লাইভস্ক্রিপ্ট ছিল এবং শুধুমাত্র নেটস্কেপ নেভিগেটরে চলেছিল। এটি তখন খুব অগোছালো ছিল, কিন্তু সৌভাগ্যক্রমে এখন বিষয়গুলি খুব পরিষ্কার এবং আমাদের কাছে এই বাস্তবায়নের 7 টি সংস্করণ রয়েছে।
7 সংস্করণ। বাস্তবের জন্য। এবং ES5 এবং ES2016+ হয়?
-যথাক্রমে পঞ্চম ও সপ্তম সংস্করণ।
দাঁড়াও, ষষ্ঠীর কী হল?
-তুমি ES6 মানে? হ্যাঁ, আমি বলতে চাচ্ছি, প্রতিটি সংস্করণ আগেরটির একটি সুপারসেট, তাই আপনি যদি ES2016+ ব্যবহার করেন তবে আপনি আগের সংস্করণগুলির সমস্ত বৈশিষ্ট্য ব্যবহার করছেন৷
ঠিক। এবং কেন তাহলে ES6 এর উপরে ES2016+ ব্যবহার করবেন?
-ভাল, আপনি ES6 ব্যবহার করতে পারেন, কিন্তু অ্যাসিঙ্ক এবং অপেক্ষা করার মতো দুর্দান্ত বৈশিষ্ট্যগুলি ব্যবহার করতে, আপনাকে ES2016+ ব্যবহার করতে হবে৷ অন্যথায় আপনি সঠিক নিয়ন্ত্রণ প্রবাহের জন্য অ্যাসিঙ্ক্রোনাস কলগুলিকে ব্লক করতে কোরোটিন সহ ES6 জেনারেটরের সাথে আটকে থাকবেন।
আপনি এইমাত্র কি বলেছেন আমার কোন ধারণা নেই, এবং এই সমস্ত নামগুলি বিভ্রান্তিকর। দেখুন, আমি একটি সার্ভার থেকে একগুচ্ছ ডেটা লোড করছি, আমি শুধু একটি CDN থেকে jQuery অন্তর্ভুক্ত করতে এবং AJAX কলের মাধ্যমে ডেটা পেতে সক্ষম হতাম, কেন আমি তা করতে পারি না?
-এটি 2016 ম্যান, কেউ আর jQuery ব্যবহার করে না, এটি একগুচ্ছ স্প্যাগেটি কোডে শেষ হয়৷ এটা সবাই জানে।
ঠিক। তাই আমার বিকল্প হল তিনটি লাইব্রেরি লোড করা ডেটা আনয়ন করা এবং একটি HTML টেবিল প্রদর্শন করা।
-আচ্ছা, আপনি সেই তিনটি লাইব্রেরি অন্তর্ভুক্ত করেছেন কিন্তু একটি মডিউল ম্যানেজার দিয়ে শুধুমাত্র একটি ফাইল লোড করার জন্য সেগুলিকে বান্ডিল করুন৷
আমি দেখছি। এবং একটি মডিউল ম্যানেজার কি?
- সংজ্ঞাটি পরিবেশের উপর নির্ভর করে, কিন্তু ওয়েবে আমরা সাধারণত AMD বা CommonJS মডিউল সমর্থন করে এমন যেকোনো কিছুকে বোঝায়।
Riiight. এবং AMD এবং CommonJS হয়...?
-সংজ্ঞা. একাধিক জাভাস্ক্রিপ্ট লাইব্রেরি এবং ক্লাস কীভাবে ইন্টারঅ্যাক্ট করা উচিত তা বর্ণনা করার উপায় রয়েছে। আপনি জানেন, রপ্তানি এবং প্রয়োজন? আপনি এএমডি বা কমনজেএস এপিআই সংজ্ঞায়িত করে একাধিক জাভাস্ক্রিপ্ট ফাইল লিখতে পারেন এবং সেগুলি বান্ডিল করতে আপনি ব্রাউজারিফের মতো কিছু ব্যবহার করতে পারেন।
ঠিক আছে, যে অর্থে তোলে... আমি মনে করি. Browserify কি?
-এটি এমন একটি টুল যা আপনাকে CommonJS-এর বর্ণনা নির্ভরতাগুলিকে বান্ডিল করতে দেয় যা ব্রাউজারে চালানো যায়। এটি তৈরি করা হয়েছিল কারণ বেশিরভাগ লোকেরা এনপিএম রেজিস্ট্রিতে সেই নির্ভরতাগুলি প্রকাশ করে।
npm রেজিস্ট্রি?
-এটি একটি খুব বড় পাবলিক রিপোজিটরি যেখানে স্মার্ট লোকেরা কোড এবং নির্ভরতাগুলিকে মডিউল হিসাবে রাখে।
একটি CDN মত?
- আসলেই না। এটি একটি কেন্দ্রীভূত ডাটাবেসের মতো যেখানে যে কেউ লাইব্রেরি প্রকাশ এবং ডাউনলোড করতে পারে, যাতে আপনি সেগুলি স্থানীয়ভাবে বিকাশের জন্য ব্যবহার করতে পারেন এবং তারপরে আপনি চাইলে সেগুলিকে একটি CDN এ আপলোড করতে পারেন৷
ওহ, বোয়ারের মতো!
-হ্যাঁ, কিন্তু এটা এখন 2016, কেউ আর বোয়ার ব্যবহার করে না।
ওহ, আমি দেখছি… তাই আমাকে এনপিএম থেকে লাইব্রেরি ডাউনলোড করতে হবে?
-হ্যাঁ। উদাহরণস্বরূপ, আপনি যদি প্রতিক্রিয়া ব্যবহার করতে চান তবে আপনি প্রতিক্রিয়া মডিউলটি ডাউনলোড করুন এবং এটি আপনার কোডে আমদানি করুন। আপনি প্রায় প্রতিটি জনপ্রিয় জাভাস্ক্রিপ্ট লাইব্রেরির জন্য এটি করতে পারেন।
ওহ, কৌণিক মত!
-কৌণিক তাই 2015. কিন্তু হ্যাঁ. VueJS বা RxJS এবং অন্যান্য দুর্দান্ত 2016 লাইব্রেরির পাশাপাশি কৌণিক থাকবে। যারা সম্পর্কে জানতে চান?
আসুন প্রতিক্রিয়ার সাথে থাকুন, আমি ইতিমধ্যে অনেক কিছু শিখছি। তাহলে, যদি আমার রিঅ্যাক্ট ব্যবহার করার প্রয়োজন হয় আমি এই এনপিএম থেকে এটি আনব এবং তারপর এই ব্রাউজারিফ জিনিসটি ব্যবহার করব?
-হ্যাঁ।
এটি কেবলমাত্র একগুচ্ছ নির্ভরতা দখল করা এবং সেগুলিকে একসাথে বেঁধে রাখা অত্যধিক জটিল বলে মনে হচ্ছে।
-এ কারণেই আপনি ব্রাউজারফাই চালানো স্বয়ংক্রিয়ভাবে চালানোর জন্য Grunt বা Gulp বা Broccoli এর মতো একটি টাস্ক ম্যানেজার ব্যবহার করেন। হেক, আপনি এমনকি মিমোসা ব্যবহার করতে পারেন।
গ্রান্ট? গলপ? ব্রকলি? মিমোসা? হেক আমরা এখন সম্পর্কে কথা বলছি?
- টাস্ক ম্যানেজার। কিন্তু তারা আর কুল নেই। আমরা সেগুলিকে 2015 এর মতো ব্যবহার করেছি, তারপরে আমরা মেকফাইলস ব্যবহার করেছি, কিন্তু এখন আমরা ওয়েবপ্যাক দিয়ে সবকিছু মুড়েছি।
মেকফাইলস? আমি ভেবেছিলাম যে এটি বেশিরভাগ সি বা সি ++ প্রকল্পগুলিতে ব্যবহৃত হয়েছিল।
-হ্যাঁ, তবে দৃশ্যত ওয়েবে আমরা জিনিসগুলিকে জটিল করে তুলতে এবং তারপরে মূল বিষয়গুলিতে ফিরে যেতে পছন্দ করি। আমরা প্রতি বছর বা তার জন্য এটি করি, শুধু এটির জন্য অপেক্ষা করুন, আমরা এক বা দুই বছরের মধ্যে ওয়েবে সমাবেশ করতে যাচ্ছি।
দীর্ঘশ্বাস। আপনি Webpack নামক কিছু উল্লেখ করেছেন?
-এটি ব্রাউজারের জন্য আরেকটি মডিউল ম্যানেজার যখন একটি টাস্ক রানারও হয়। এটি ব্রাউজারফাইয়ের একটি ভাল সংস্করণের মতো।
ওহ, ঠিক আছে। কেন এটা ভাল?
-আচ্ছা, ভালো নাও হতে পারে, আপনার নির্ভরতা কীভাবে বাঁধা উচিত সে বিষয়ে এটি আরও মতামতযুক্ত। ওয়েবপ্যাক আপনাকে বিভিন্ন মডিউল ম্যানেজার ব্যবহার করতে দেয়, এবং শুধুমাত্র কমনজেএস নয়, উদাহরণস্বরূপ নেটিভ ES6 সমর্থিত মডিউলগুলি।
আমি এই সম্পূর্ণ CommonJS/ES6 জিনিস দ্বারা অত্যন্ত বিভ্রান্ত।
-সবাই আছে, কিন্তু সিস্টেমজেএসের সাথে আপনার আর যত্ন নেওয়া উচিত নয়।
যীশু খ্রিস্ট, আরেকটি বিশেষ্য-জেএস। ঠিক আছে, এবং এই SystemJS কি?
-ভাল, ব্রাউজারফাই এবং ওয়েবপ্যাক 1.x এর বিপরীতে, SystemJS হল একটি ডাইনামিক মডিউল লোডার যা আপনাকে একাধিক ফাইলে একাধিক মডিউলকে একটি বড় ফাইলে বান্ডিল করার পরিবর্তে টাই করতে দেয়।
অপেক্ষা করুন, কিন্তু আমি ভেবেছিলাম আমরা একটি বড় ফাইলে আমাদের লাইব্রেরি তৈরি করতে চাই এবং সেটি লোড করতে চাই!
-হ্যাঁ, কিন্তু যেহেতু HTTP/2 আসছে এখন একাধিক HTTP অনুরোধ আসলে ভালো।
অপেক্ষা করুন, তাই আমরা কি প্রতিক্রিয়ার জন্য তিনটি মূল লাইব্রেরি যোগ করতে পারি না??
- আসলেই না। আমি বলতে চাচ্ছি, আপনি এগুলিকে একটি CDN থেকে বাহ্যিক স্ক্রিপ্ট হিসাবে যুক্ত করতে পারেন, তবে আপনাকে তখনও Babel অন্তর্ভুক্ত করতে হবে।
দীর্ঘশ্বাস। এবং এটা খারাপ তাই না?
-হ্যাঁ, আপনি সম্পূর্ণ ব্যাবেল-কোর অন্তর্ভুক্ত করবেন এবং এটি উত্পাদনের জন্য কার্যকর হবে না। প্রোডাকশনে আপনার প্রোজেক্ট প্রস্তুত করার জন্য আপনাকে একাধিক প্রাক-টাস্ক করতে হবে যাতে শয়তানকে ডেকে আনার আচারটি সেদ্ধ ডিমের রেসিপির মতো দেখায়। আপনাকে সম্পদগুলি ছোট করতে হবে, সেগুলিকে কুশ্রী করতে হবে, ভাঁজের উপরে ইনলাইন সিএসএস, স্ক্রিপ্টগুলি স্থগিত করতে হবে, পাশাপাশি-
আমি পেয়েছি, আমি পেয়েছি। তাই আপনি যদি লাইব্রেরিগুলি সরাসরি একটি CDN-এ অন্তর্ভুক্ত না করেন, তাহলে আপনি কীভাবে এটি করবেন?
-আমি ওয়েবপ্যাক + সিস্টেমজেএস + ব্যাবেল কম্বো ব্যবহার করে টাইপস্ক্রিপ্ট থেকে এটি ট্রান্সপিল করব।
টাইপস্ক্রিপ্ট? আমি ভেবেছিলাম আমরা জাভাস্ক্রিপ্টে কোডিং করছি!
-টাইপস্ক্রিপ্ট হল জাভাস্ক্রিপ্ট, বা আরও ভালভাবে বললে, জাভাস্ক্রিপ্টের একটি সুপারসেট, আরও নির্দিষ্টভাবে জাভাস্ক্রিপ্ট সংস্করণ ES6-এ। আপনি জানেন, যে ষষ্ঠ সংস্করণ সম্পর্কে আমরা আগে কথা বলেছি?
আমি ভেবেছিলাম ES2016+ ইতিমধ্যেই ES6 এর একটি সুপারসেট! টাইপস্ক্রিপ্ট নামক এই জিনিসটি এখন আমাদের কেন প্রয়োজন?
-ওহ, কারণ এটি আমাদের জাভাস্ক্রিপ্টকে একটি টাইপ করা ভাষা হিসাবে ব্যবহার করতে এবং রান-টাইম ত্রুটিগুলি কমাতে দেয়। এটি 2016, আপনার জাভাস্ক্রিপ্ট কোডে কিছু প্রকার যোগ করা উচিত।
এবং Typescript স্পষ্টতই যে করে.
-প্রবাহও, যদিও এটি শুধুমাত্র টাইপ করার জন্য চেক করে যখন টাইপস্ক্রিপ্ট জাভাস্ক্রিপ্টের একটি সুপারসেট যা কম্পাইল করা দরকার।
দীর্ঘশ্বাস… আর ফ্লো হয়?
-এটি একটি স্ট্যাটিক টাইপ চেকার যা ফেসবুকে কিছু লোক তৈরি করেছে। তারা এটিকে OCaml-এ কোড করেছে, কারণ কার্যকরী প্রোগ্রামিং দুর্দান্ত।
OCaml? কার্যকরী প্রোগ্রামিং?
-এটা কি শীতল বাচ্চারা আজকাল ব্যবহার করে মানুষ, আপনি জানেন, 2016? কার্যকরী প্রোগ্রামিং? উচ্চ আদেশ ফাংশন? তরকারি? বিশুদ্ধ ফাংশন?
আপনি কি বলেছেন আমি কোন ধারণা নেই.
-শুরুতে কেউ করে না। দেখুন, আপনাকে শুধু জানতে হবে যে কার্যকরী প্রোগ্রামিং OOP এর চেয়ে ভালো এবং এটিই আমাদের 2016 সালে ব্যবহার করা উচিত।
অপেক্ষা করুন, আমি কলেজে ওওপি শিখেছি, আমি ভেবেছিলাম যে ভাল ছিল?
-ওরাকল কেনার আগে জাভা ছিল। আমি বলতে চাচ্ছি, OOP আগের দিনগুলিতে ভাল ছিল, এবং আজও এটির ব্যবহার রয়েছে, কিন্তু এখন সবাই বুঝতে পারছে যে রাজ্যগুলি পরিবর্তন করা শিশুদের লাথি মারার সমতুল্য, তাই এখন সবাই অপরিবর্তনীয় বস্তু এবং কার্যকরী প্রোগ্রামিংয়ের দিকে চলে যাচ্ছে। Haskell ছেলেরা বছরের পর বছর ধরে এটিকে কল করছিল, -এবং আমাকে এলম বন্ধুদের সাথে শুরু করবেন না- কিন্তু সৌভাগ্যবশত ওয়েবে এখন আমাদের কাছে Ramda এর মতো লাইব্রেরি রয়েছে যা আমাদেরকে প্লেইন জাভাস্ক্রিপ্টে কার্যকরী প্রোগ্রামিং ব্যবহার করার অনুমতি দেয়।
আপনি কি শুধু এর জন্য নাম বাদ দিচ্ছেন? কি রে রামনদা?
-না। রামদা। ল্যাম্বডার মতো। আপনি কি জানেন, ডেভিড চেম্বার্সের লাইব্রেরি?
ডেভিড কে?
-ডেভিড চেম্বার্স। শান্ত লোক. একটি গড় অভ্যুত্থান খেলা খেলে. রামদার জন্য অবদানকারীদের একজন। আপনি যদি কার্যকরী প্রোগ্রামিং শেখার বিষয়ে গুরুতর হন তবে আপনাকে এরিক মেইজার পরীক্ষা করা উচিত।
আর এরিক মেইজার...?
পাশাপাশি কার্যকরী প্রোগ্রামিং লোক. অসাধারণ লোক. তিনি এই অদ্ভুত রঙিন শার্ট ব্যবহার করার সময় চটপটে ট্র্যাশ যেখানে উপস্থাপনা একটি গুচ্ছ আছে. এছাড়াও আপনি Tj, Jash Kenas, Sindre Sorhus, Paul Irish, Addy Osmani-এর থেকে কিছু জিনিস চেক করুন।
ঠিক আছে। আমি সেখানে আপনাকে থামাতে যাচ্ছি. সবই ভালো এবং সূক্ষ্ম, কিন্তু আমি মনে করি যে সবই এত জটিল এবং অপ্রয়োজনীয় শুধু ডেটা আনার জন্য এবং এটি প্রদর্শন করার জন্য। আমি মোটামুটি নিশ্চিত যে ডায়নামিক ডেটা সহ একটি টেবিল তৈরি করতে আমার এই লোকদের জানার বা এই সমস্ত জিনিসগুলি শিখতে হবে না। এর প্রতিক্রিয়া ফিরে আসা যাক. আমি কীভাবে প্রতিক্রিয়া সহ সার্ভার থেকে ডেটা আনতে পারি?
-ওয়েল, আপনি আসলে প্রতিক্রিয়া দিয়ে ডেটা আনবেন না, আপনি কেবল প্রতিক্রিয়া দিয়ে ডেটা প্রদর্শন করবেন।
ওহ, আমাকে অভিশাপ. তাই আপনি ডেটা আনার জন্য কি ব্যবহার করবেন?
-আপনি সার্ভার থেকে ডেটা আনতে ফেচ ব্যবহার করেন।
আমি দুঃখিত? আপনি ডেটা আনার জন্য ফেচ ব্যবহার করেন? যে এই জিনিসগুলির নামকরণ করছে তার একটি থিসরাস দরকার।
-আমি ঠিক জানি? এটি একটি সার্ভারের বিরুদ্ধে XMLHttpRequests সম্পাদনের জন্য নেটিভ বাস্তবায়নের নাম আনুন।
ওহ, তাই AJAX.
-AJAX শুধুমাত্র XMLHttpRequests এর ব্যবহার। কিন্তু নিশ্চিত। ফেচ আপনাকে প্রতিশ্রুতির ভিত্তিতে AJAX করার অনুমতি দেয়, যা আপনি কলব্যাক হেল এড়াতে সমাধান করতে পারেন।
কলব্যাক জাহান্নাম?
-হ্যাঁ। আপনি যখনই সার্ভারের বিরুদ্ধে একটি অ্যাসিঙ্ক্রোনাস অনুরোধ করেন, তখন আপনাকে এর প্রতিক্রিয়ার জন্য অপেক্ষা করতে হবে, যা আপনাকে একটি ফাংশনের মধ্যে একটি ফাংশন যোগ করতে বাধ্য করে, যাকে বলা হয় নরক থেকে কলব্যাক পিরামিড।
ওহ, ঠিক আছে। এবং এই প্রতিশ্রুতি জিনিস এটি সমাধান?
-আসলে। প্রতিশ্রুতির মাধ্যমে আপনার কলব্যাকগুলিকে ম্যানিপুলেট করে, আপনি কোড বোঝার জন্য সহজে লিখতে পারেন, সেগুলিকে উপহাস করতে এবং পরীক্ষা করতে পারেন, পাশাপাশি একযোগে অনুরোধগুলি সম্পাদন করতে পারেন এবং সেগুলি লোড না হওয়া পর্যন্ত অপেক্ষা করতে পারেন৷
আর সেটা কি ফেচ দিয়ে করা যায়?
-হ্যাঁ, তবে শুধুমাত্র যদি আপনার ব্যবহারকারী একটি চিরসবুজ ব্রাউজার ব্যবহার করেন, অন্যথায় আপনাকে একটি ফেচ পলিফিল অন্তর্ভুক্ত করতে হবে বা অনুরোধ, ব্লুবার্ড বা অ্যাক্সিওস ব্যবহার করতে হবে।
ঈশ্বরের জন্য আমার কত লাইব্রেরি জানতে হবে? তাদের কতজন?
-এটা জাভাস্ক্রিপ্ট। হাজার হাজার লাইব্রেরি থাকতে হবে যেগুলো সব একই কাজ করে। আমরা লাইব্রেরি জানি, আসলে আমাদের কাছে সেরা লাইব্রেরি আছে। আমাদের লাইব্রেরিগুলি হল হুউগে, এবং কখনও কখনও আমরা সেগুলিতে গাই ফিয়েরির ছবি অন্তর্ভুক্ত করি।
আপনি কি শুধু গাই ফিরি বলেছেন? এর সঙ্গে এই শেষ করা যাক. এই Bluebird, Request, Axios লাইব্রেরিগুলো কি করে?
-এগুলি XMLHttpRequests সম্পাদন করার জন্য লাইব্রেরি যা প্রতিশ্রুতি দেয়।
jQuery এর AJAX পদ্ধতি কি প্রতিশ্রুতিও ফিরিয়ে দিতে শুরু করেনি?
-আমরা 2016 সালে আর "J" শব্দটি ব্যবহার করি না। শুধুমাত্র Fetch ব্যবহার করুন এবং এটিকে পলিফিল করুন যখন এটি কোনো ব্রাউজারে না থাকে অথবা পরিবর্তে Bluebird, Request বা Axios ব্যবহার করুন। তারপর একটি async ফাংশন এবং বুমের মধ্যে অপেক্ষার সাথে প্রতিশ্রুতি পরিচালনা করুন, আপনার সঠিক নিয়ন্ত্রণ প্রবাহ রয়েছে।
এটি তৃতীয়বার আপনি অপেক্ষার কথা উল্লেখ করেছেন কিন্তু আমি জানি না এটি কী।
-অপেক্ষা আপনাকে একটি অ্যাসিঙ্ক্রোনাস কল ব্লক করার অনুমতি দেয়, যখন ডেটা আনা হচ্ছে এবং সামগ্রিকভাবে কোড পঠনযোগ্যতা বৃদ্ধির উপর আপনাকে আরও ভাল নিয়ন্ত্রণ করতে দেয়৷ এটি দুর্দান্ত, আপনাকে কেবল নিশ্চিত করতে হবে যে আপনি ব্যাবেলে স্টেজ-3 প্রিসেট যোগ করেছেন, অথবা সিনট্যাক্স-অ্যাসিঙ্ক-ফাংশন এবং ট্রান্সফর্ম-অ্যাসিঙ্ক-টু-জেনারেটর প্লাগইন ব্যবহার করুন৷
এই পাগল.
-না, উন্মাদ হল আপনাকে টাইপস্ক্রিপ্ট কোড প্রি-কম্পাইল করতে হবে এবং তারপর এটিকে ব্যাবেল দিয়ে ট্রান্সপিল করে অপেক্ষা করতে হবে।
কি? এটা Typescript অন্তর্ভুক্ত নয়?
-এটি পরবর্তী সংস্করণে আছে, কিন্তু সংস্করণ 1.7 হিসাবে এটি শুধুমাত্র ES6 কে লক্ষ্য করে, তাই আপনি যদি ব্রাউজারে ওয়েট ব্যবহার করতে চান, প্রথমে আপনাকে আপনার টাইপস্ক্রিপ্ট কোড কম্পাইল করতে হবে ES6 টার্গেট করে এবং তারপর Babel যা ES5 টার্গেট করে।
এই মুহুর্তে আমি কি বলব জানি না।
-দেখ, এটা সহজ। টাইপস্ক্রিপ্টে সবকিছু কোড করুন। সমস্ত মডিউল যেগুলি Fetch ব্যবহার করে সেগুলিকে ES6 টার্গেট করার জন্য কম্পাইল করে, স্টেজ-3 প্রিসেট এ Babel দিয়ে ট্রান্সপিল করে এবং SystemJS দিয়ে লোড করে৷ আপনার কাছে ফেচ না থাকলে, এটি পলিফিল করুন, অথবা Bluebird, Request বা Axios ব্যবহার করুন এবং আপনার সমস্ত প্রতিশ্রুতি অপেক্ষা করুন।
আমাদের কাছে সহজের খুব ভিন্ন সংজ্ঞা আছে। তাহলে, সেই আচারের সাথে আমি অবশেষে ডেটা নিয়ে এসেছি এবং এখন আমি এটিকে প্রতিক্রিয়া দিয়ে প্রদর্শন করতে পারি?
-আপনার আবেদন কোন রাষ্ট্র পরিবর্তন পরিচালনা করতে যাচ্ছে?
ভুল, আমি তাই মনে করি না. আমি শুধু তথ্য প্রদর্শন করতে হবে.
-ওহ, ঈশ্বরকে ধন্যবাদ। অন্যথায় আমি আপনাকে Flux, এবং Flummox, Alt, Fluxible এর মত বাস্তবায়ন ব্যাখ্যা করতে হবে। যদিও সৎ হতে আপনার Redux ব্যবহার করা উচিত।
আমি শুধু যারা নাম উপর উড়ে যাচ্ছি. আবার, আমি শুধু তথ্য প্রদর্শন করতে হবে.
-ওহ, আপনি যদি শুধুমাত্র ডেটা প্রদর্শন করেন তবে শুরু করার জন্য আপনার প্রতিক্রিয়ার প্রয়োজন নেই। আপনি একটি টেমপ্লেটিং ইঞ্জিনের সাথে ভাল হতেন।
আপনি কি আমার সাথে মজা করছেন? আপনি কি এই মজার মনে করেন? আপনি কি আপনার প্রিয়জনের সাথে এমন আচরণ করেন?
-আমি শুধু ব্যাখ্যা করছিলাম আপনি কি ব্যবহার করতে পারেন।
থামো। শুধু থামুন।
-আমি বলতে চাচ্ছি, এমনকি যদি এটি শুধুমাত্র টেমপ্লেটিং ইঞ্জিন ব্যবহার করে, আমি এখনও একটি Typescript + SystemJS + Babel কম্বো ব্যবহার করব যদি আমি আপনি হতাম।
আমাকে একটি পৃষ্ঠায় ডেটা প্রদর্শন করতে হবে, সাব জিরোর আসল MK প্রাণঘাতী সঞ্চালন করতে হবে না। কোন টেমপ্লেটিং ইঞ্জিন ব্যবহার করতে হবে তা আমাকে বলুন এবং আমি সেখান থেকে এটি নিয়ে যাব।
-অনেক আছে, আপনি কোনটির সাথে পরিচিত?
উফ, নাম মনে পড়ছে না। এটা অনেক দিন আগের কথা।
-জে টেমপ্লেট? jQote? বিশুদ্ধ?
আরে, ঘণ্টা বাজে না। আরেকটা?
-স্বচ্ছতা? জেএসরেন্ডার? মার্কআপজেএস? নকআউটজেএস? যে এক দ্বিমুখী বাঁধাই ছিল.
আরেকটা?
-প্লেটসজেএস? jQuery-tmpl? হ্যান্ডেলবার? কিছু লোক এখনও এটি ব্যবহার করে।
হতে পারে। যে শেষ এক অনুরূপ আছে?
-গোঁফ, আন্ডারস্কোর? আমি মনে করি এখন লোডাশেরও সৎ হতে হবে, কিন্তু সেগুলি 2014-এর মতো।
ভুল.. হয়তো এটা নতুন ছিল.
-জেড? ডাস্টজেএস?
না.
-ডটজেএস? ইজেএস?
না.
-নানজাক্স? ইসিটি?
না.
-মাহ, কেউই কফিস্ক্রিপ্ট সিনট্যাক্স পছন্দ করে না। জেড?
না, আপনি ইতিমধ্যে জেড বলেছেন.
- আমি পগ মানে. আমি জেড মানে. মানে, জেড এখন পগ।
দীর্ঘশ্বাস। না। মনে করতে পারছি না। আপনি কোনটি ব্যবহার করবেন?
-সম্ভবত শুধু ES6 নেটিভ টেমপ্লেট স্ট্রিং।
আমাকে অনুমান করা যাক. এবং এর জন্য ES6 প্রয়োজন।
-সঠিক।
যা, আমি কোন ব্রাউজার ব্যবহার করছি তার উপর নির্ভর করে Babel প্রয়োজন।
-সঠিক।
যা, যদি আমি পুরো মূল লাইব্রেরি যোগ না করেই অন্তর্ভুক্ত করতে চাই, তাহলে আমাকে এটি npm থেকে একটি মডিউল হিসাবে লোড করতে হবে।
-সঠিক।
যার জন্য ব্রাউজারফাই বা ওয়েপব্যাক প্রয়োজন বা সম্ভবত সিস্টেমজেএস নামক অন্য জিনিস।
-সঠিক।
যা, ওয়েবপ্যাক না হলে, আদর্শভাবে একজন টাস্ক রানার দ্বারা পরিচালিত হওয়া উচিত।
-সঠিক।
কিন্তু, যেহেতু আমার কার্যকরী প্রোগ্রামিং এবং টাইপ করা ভাষা ব্যবহার করা উচিত আমাকে প্রথমে টাইপস্ক্রিপ্ট প্রি-কম্পাইল করতে হবে বা এই ফ্লো জিনিসটি যুক্ত করতে হবে।
-সঠিক।
এবং তারপর বাবেলে পাঠান যদি আমি অপেক্ষা করতে চাই।
-সঠিক।
তাই আমি তখন ফেচ, প্রতিশ্রুতি এবং নিয়ন্ত্রণ প্রবাহ এবং সেই সমস্ত জাদু ব্যবহার করতে পারি।
-শুধু পলিফিল আনতে ভুলবেন না যদি এটি সমর্থিত না হয়, Safari এখনও এটি পরিচালনা করতে পারে না।
আপনি কি জানেন. আমি মনে করি আমরা এখানে সম্পন্ন. আসলে, আমি মনে করি আমি শেষ. আমি ওয়েবের সাথে সম্পন্ন করেছি, আমি জাভাস্ক্রিপ্টের সাথে সম্পূর্ণভাবে সম্পন্ন করেছি।
-এটা ঠিক আছে, কয়েক বছরের মধ্যে আমরা সবাই এলম বা ওয়েব অ্যাসেম্বলিতে কোডিং করতে যাচ্ছি।
আমি শুধু ব্যাকএন্ডে ফিরে যেতে যাচ্ছি. আমি এই অনেক পরিবর্তন এবং সংস্করণ এবং সংস্করণ এবং কম্পাইলার এবং ট্রান্সপিলারগুলি পরিচালনা করতে পারি না। জাভাস্ক্রিপ্ট সম্প্রদায় উন্মাদ যদি মনে করে যে কেউ এটি চালিয়ে যেতে পারে।
-আমি শুনছি। আপনার তখন পাইথন সম্প্রদায় চেষ্টা করা উচিত।
কেন?
- পাইথন 3 এর কথা শুনেছেন?
আপডেট: টাইপো এবং ভুল নির্দেশ করার জন্য ধন্যবাদ, আমি উল্লেখ্য হিসাবে নিবন্ধটি আপডেট করব। HackerNews এবং Reddit এ আলোচনা ।