আজকাল আমার মনে একটি প্রশ্ন ছড়িয়ে পড়ে:
আমরা জাভাস্ক্রিপ্ট যেভাবে প্রায় everythingতিহ্যবাহী সফ্টওয়্যার বিকাশে একটি ভাল অনুশীলন হিসাবে বিবেচিত হয় যে সমস্ত কিছুর বিরুদ্ধে যায়?
এই বিবৃতি সম্পর্কিত আমার কাছে একাধিক প্রশ্ন / পর্যবেক্ষণ রয়েছে তবে স্ট্যাকএক্সচেঞ্জের ফর্ম্যাটকে সম্মান জানাতে যদি আমি এগুলিকে বিভিন্ন প্রশ্নে বিভক্ত করি তবে ভাল হবে।
মডিউল প্রয়োজন
স্ট্যান্ডার্ড জাভাস্ক্রিপ্ট কোড আজকাল দেখে মনে হচ্ছে:
const someModule = require('./someModule')
module.exports = function doSomethingWithRequest() {
// do stuff
someModule.someFunc()
// do other stuff
}
সুবিধাদি
- এনক্যাপসুলেশন: মডিউলটি এককভাবে কাজ করে এবং এর কার্য সম্পাদন করার জন্য প্রয়োজনীয় সমস্ত কিছু জানে।
- সমকালীন হিসাবে, ক্লায়েন্টদের পক্ষে মডিউলটি ব্যবহার করা সহজ।
অসুবিধেও
- দুর্বল টেস্টিবিলিটি: ডিআই ব্যবহার না করার সময় এটি স্ট্যান্ডার্ড, তবে গতিশীল ভাষায় যেমন জাভাস্ক্রিপ্টে এটির আকার দেওয়া যেতে পারে * যেমন মডিউল দ্বারা
mockery
বা দ্বারাrewire
। - এটি অবশ্যই ডিআইপি লঙ্ঘন করে - নির্ভরতা ইনজেকশন দিয়ে বিভ্রান্ত না হওয়া। - যেহেতু আমি কেবল কংক্রিট মডিউলগুলি আমদানি করতে পারি।
- এটি সম্ভবত ওসিপি লঙ্ঘন করে - উদাহরণস্বরূপ, কল্পনা করুন যে আমার কাছে একটি লগ মডিউল রয়েছে যা ফাইল সিস্টেমে (
fs
মডিউল মাধ্যমে ) লিখবে। যদি আমি এই লগ মডিউলটি নেটওয়ার্কটিতে প্রেরণ করতে প্রসারিত করতে চাই তবে এটি খুব শক্ত হবে।
* এটি কমনজেএস বা এএমডি মডিউলগুলির সাথে কাজ করতে পারে কারণ তারা বেশিরভাগ ব্যবহারকারীর জমিতে প্রয়োগ করা হয়। তবে, আমি নিশ্চিত নই যে ইএস 6 import
সিনট্যাক্সের মাধ্যমে এটি কীভাবে সম্ভব হতে পারে ।
ইনজেকশন নির্ভরতা
নির্ভরতা ইনজেকশন ব্যবহার করে, এটি আরও পছন্দ হবে:
module.exports = function doSomethingWithRequest(someModule) {
// do stuff
someModule.someFunc()
// do other stuff
}
সুবিধাদি
- পরীক্ষামূলকতা বৃদ্ধি: এখন
someModule
ES6 সিনট্যাক্স ব্যবহার করেও অনড় / উপহাস করা সহজ । - এটা সম্ভব , অগত্যা না যদিও হিসাবে গ্রাহক মডিউল এখনও বাস্তবায়ন ও নয় ইন্টারফেসে প্রোগ্রাম করা যেতে পারে: চোবান সম্মান।
অসুবিধেও
- ভাঙা এনক্যাপসুলেশন: বাকি মূল প্রশ্নটি হ'ল:
ঠিক আছে, তাহলে নির্ভরতাগুলি তৈরি / প্রয়োজনীয়তা কে করবে?
- মডিউলটির প্রতিটি ক্লায়েন্টে এটি করা খুব ওয়েট ওয়েট বলে মনে হচ্ছে ।
- সত্যিকারের প্রকল্পে সম্ভবপর হওয়ার জন্য সম্ভবত এটির জন্য আমার একটি ডিআই কনটেইনার ব্যবহার করতে হবে।
সুতরাং, এখানে আসল প্রশ্নটি হ'ল:
কেন জাভাস্ক্রিপ্ট বিকাশকারীরা প্রথম পদ্ধতির দিকে ঝুঁকছেন?
এটি কি কেবল "জাভাস্ক্রিপ্টের উপায়"?
আমি নিজে বেশিরভাগ সময় কোড লিখি। মজাদার লাইব্রেরিগুলি ব্যবহার করে আমার পরীক্ষা সেটআপে আমার ন্যায্য অংশ ছিল, তবে এটি করা সর্বদা ভুল অনুভব করে।
আমি কিছু অনুপস্থিত করছি?