আমার এক সহকর্মী তিনি যে প্রকল্পটি চালাচ্ছেন তার জন্য সিএমএসের জন্য বিইএম (ব্লক এলিমেন্ট মডিফায়ার) পদ্ধতিটি প্রচন্ডভাবে চাপ দিচ্ছেন, এবং আমরা কয়েক বছর ধরে যে কম লেখার জন্য সিএসএস লিখছি তার চেয়ে ভাল এটি বুঝতে পারি না।
বিইএম একটি সিএসএস পদ্ধতি। অন্যদের মধ্যে OOCSS এবং SMACSS অন্তর্ভুক্ত। এই পদ্ধতিগুলি মডিউল, এক্সটেনসিবল, পুনরায় ব্যবহারযোগ্য কোড লিখতে ব্যবহৃত হয় যা স্কেলটিতে ভাল সম্পাদন করে।
কম একটি সিএসএস প্রিপ্রোসেসর। অন্যদের মধ্যে সাস এবং স্টাইলাস অন্তর্ভুক্ত। এই প্রিপ্রোসেসরগুলি তাদের নিজস্ব উত্সগুলি প্রসারিত সিএসএসে রূপান্তর করতে ব্যবহৃত হয়।
বিইএম এবং কম একে অপরের তুলনায় "ভাল" হিসাবে তুলনামূলক নয়, এগুলি এমন সরঞ্জাম যা বিভিন্ন উদ্দেশ্যে পরিবেশন করে। কোনও নির্দিষ্ট সমস্যা সমাধানের জন্য ইউটিলিটি বিবেচনা করার সময় বাদে আপনি বলবেন না যে কোনও স্ক্রু ড্রাইভারটি হাতুড়ির চেয়ে ভাল।
তিনি দাবি করেছেন "উচ্চতর পারফরম্যান্স" ...
পারফরম্যান্সটির একটি ধ্রুপদী সিএসএস শৈলীর মধ্যে পরিমাপ করা প্রয়োজন:
.widget .header
এবং এর বিইএম শৈলী:
.widget__header
তবে সাধারণভাবে বলতে গেলে সিএসএস নির্বাচকের পারফরম্যান্স কোনও বাধা নয়, এবং এটি অনুকূলিতকরণের প্রয়োজন নেই।
বিইএম "পারফরম্যান্স" সাধারণত কোনও বিকাশকারীর পারফরম্যান্স রাইটিং কোড সম্পর্কিত। যদি বিইএম পদ্ধতিটি ধারাবাহিকভাবে এবং সঠিকভাবে ব্যবহার করা হয় তবে বিকাশকারীদের গোষ্ঠীগুলির পক্ষে একই সাথে শৈলীর সংঘর্ষ ছাড়াই স্বতন্ত্র মডিউলগুলি লেখার পক্ষে সহজ।
তিনি দাবি করেছেন "পঠনযোগ্যতা" এবং "পুনরায় ব্যবহার" ...
আমি জানি না যে আমি একজন নতুন বিকাশকারীকে বলব যে বিইএম আরও পাঠযোগ্য। আমি বলতে পারি এটি ক্লাসগুলির অর্থ এবং কাঠামো সম্পর্কে কিছু সু-সংজ্ঞায়িত গাইডলাইন সরবরাহ করে।
একটি ক্লাস দেখেছি
.foo--bar__baz
আমাকে বলে যে একটি foo
ব্লক bar
রয়েছে যা রাজ্যে রয়েছে এবং এতে একটি baz
উপাদান রয়েছে ।
আমি একেবারেই বলব যে ক্লাসিকাল মডেলের চেয়ে বিইএম বেশি পুনরায় ব্যবহারযোগ্য।
যদি দুটি বিকাশকারী ব্লক ( foo
এবং bar
) তৈরি করে এবং সেই দুটি ব্লকের শিরোনাম থাকে, তারা নামকরণের সংঘর্ষের উদ্বেগ ছাড়াই তাদের ব্লকগুলি নিরাপদে বিভিন্ন প্রসঙ্গে নিরাপদে পুনরায় ব্যবহার করতে পারে।
এটি কারণ, একটি শাস্ত্রীয় প্রসঙ্গে, .foo .heading
এবং .bar .heading
দ্বন্দ্ব সৃষ্টি করে এবং একটি নির্দিষ্টতা সংঘাতের প্রবর্তন করে যা সম্ভবত কেস-বাই-কেস ভিত্তিতে সমাধান করা দরকার।
একটি বিইএম সাইটে ক্লাসগুলি হবে .foo__heading
এবং .bar__heading
যা কখনও দ্বন্দ্ব করে না।
তিনি দাবি করেছেন "নেস্টেড সিএসএস একটি বিরোধী নিদর্শন is" "অ্যান্টি-প্যাটার্ন" এর অর্থ কী এবং নেস্টেড সিএসএস খারাপ কেন?
একটি "অ্যান্টি-প্যাটার্ন" হ'ল একটি কোডিং প্যাটার্ন যা অনভিজ্ঞ বিকাশকারীদের পক্ষে আরও উপযুক্ত বিকল্পের চেয়ে শিখতে এবং ব্যবহার করা সহজ।
যতদূর নেস্টেড সিএসএস খারাপ: নেস্টিং কোনও নির্বাচকের নির্দিষ্টতা বাড়ায়। সুনির্দিষ্টতা যত বেশি হবে, ওভাররাইডে আরও বেশি প্রচেষ্টা লাগবে। অনভিজ্ঞ বিকাশকারীরা প্রায়শই চিন্তিত হন যে তাদের সিএসএস একাধিক পৃষ্ঠাগুলিকে প্রভাবিত করতে পারে, তাই তারা নির্বাচকদের যেমন:
#something .lorem .ipsum .dolor ul.sit li.amet a.more
যখন একজন অভিজ্ঞ বিকাশকারী চিন্তিত হবেন যে তাদের সিএসএস একাধিক পৃষ্ঠাগুলিকে প্রভাবিত করতে পারে না , তাই তারা নির্বাচকদের যেমন:
.more
তিনি দাবি করেছেন যে "বিএমইএম ব্যবহারের দিকে এগিয়ে চলেছে, তাই আমাদেরও উচিত।" ...
এটি একটি ব্যান্ডওয়াগন ভ্রান্তি , সুতরাং এটি একটি খারাপ যুক্তি হিসাবে উপেক্ষা করুন। মিথ্যা মিথ্যাচারের ফাঁদে পড়বেন না , কারণ বিইএমের সমর্থনে একটি খারাপ যুক্তি বিশ্বাস করার কারণ নয় যে বিইএম ভাল হতে পারে না।
কেউ দয়া করে বিশদ দিয়ে বলতে পারেন যে কমকে কম চেয়ে বিইএমকে আরও ভাল কী করে?
আমি এটি আগে coveredেকে দিয়েছি, বিইএম এবং কম তুলনাযোগ্য নয়। আপেল এবং কমলা ইত্যাদি
আমার সহকর্মী আমাকে বোঝাতে পুরোপুরি ব্যর্থ হচ্ছে, তবে অনুসরণ করতে ছাড়া আমার কোনও পছন্দ আছে কিনা তা আমি জানি না।
আমি ওওএসএসএস, এসএমএসিএসএস এবং বিইএম-এর দিকে একবার নজর দেওয়া এবং প্রতিটি দল পদ্ধতি হিসাবে ভাল এবং বুদ্ধি বিবেচনা করার পরামর্শ দিচ্ছি ... একটি দল হিসাবে । আমি বিইএম ব্যবহার করি কারণ আমি বিন্যাসে এর কঠোরতা পছন্দ করি এবং কুৎসিত সিলেক্টরদের আপত্তি নেই, তবে আমি আপনাকে বলতে পারি না আপনার বা আপনার দলের পক্ষে কী ঠিক। একজন স্পষ্টচিত্ত ব্যক্তিকে শোটি চালাতে দেবেন না। আপনি যদি বিইএম-এর সাথে স্বাচ্ছন্দ্য বোধ করেন না তবে সচেতন হন যে এমন আরও কিছু বিকল্প রয়েছে যা আপনার দলের পক্ষে সমর্থন করা সহজ। আপনার সহকর্মীর সাথে আপনার অবস্থান রক্ষার প্রয়োজন হতে পারে তবে দীর্ঘমেয়াদে এটি সম্ভবত আপনার প্রকল্পগুলির ফলাফলের উপর ইতিবাচক প্রভাব ফেলবে।
আমি সত্যিই কৃপণভাবে এটি গ্রহণ করার চেয়ে বরং বিইএম এর প্রশংসা করতে সক্ষম হব।
আমি স্ট্যাকওভারফ্লোতে একটি উত্তর লিখেছিলাম যাতে বিইএম কীভাবে কাজ করে তা বর্ণনা করে । গুরুত্বপূর্ণ বিষয়টি বুঝতে হবে যে আপনার আদর্শ নির্বাচকদের একটি নির্দিষ্টতা থাকা উচিত 0-0-1-0
যাতে তারা ওভাররাইড এবং প্রসারিত করতে সহজ হয়।
বিএম ব্যবহার করা বাছাই করার অর্থ এই নয় যে আপনার কম হাল ছেড়ে দেওয়া দরকার! আপনি এখনও ভেরিয়েবল ব্যবহার করতে পারেন, আপনি এখনও @ আমদানি ব্যবহার করতে পারেন এবং আপনি অবশ্যই বাসা বাঁধতে ব্যবহার করতে পারেন। পার্থক্য হ'ল আপনি চান বংশজাত চেইনের পরিবর্তে রেন্ডার আউটপুটটি একটি একক শ্রেণিতে পরিণত হোক।
যেখানে আপনি থাকতে পারে
.widget {
.heading {
...
}
}
বিইএম এর মাধ্যমে আপনি ব্যবহার করতে পারেন:
.widget {
&__heading {
...
}
}
অতিরিক্তভাবে, যেহেতু বিইএম স্বতন্ত্র ব্লকের চারদিকে ঘোরে, আপনি সহজেই পৃথক ফাইলে কোড পৃথক করতে পারবেন। ব্লকটির widget.less
জন্য শৈলী থাকতে পারে .widget
, তবে ব্লকের component.less
জন্য শৈলী থাকতে পারে .component
। এটি কোনও নির্দিষ্ট শ্রেণীর জন্য উত্স সন্ধান করা আরও সহজ করে তোলে যদিও আপনি এখনও উত্স মানচিত্র ব্যবহার করতে ইচ্ছুক হতে পারেন।