component কি?
component কে HTML এর একটা collection ভাবতে পারেন। HTML এর প্রতিটা Tag একেকটা component। এগুলো ছোট ছোট component। দামড়া ধারি component ও আছে যেমন ধরেন একটা div, এইটার ভিতরে খাবারের ছবি থাকবে(img Tag), একটা Title থাকবে(h2 Tag) আর খাবার সম্পর্কে কিছু পকপক থাকবে(p tag).
এই div এর ভিতরে এগুলো child হিসেবে আছে। div ও একটা component।
একটা উদাহরন দিই। এইযে আপনি shohaul এর Post টা পড়তেছেন এখন, এইটা একটা component। খেয়াল করে দ্যাখেন facebook website এ এমন component (Post) অনেক আছে। এগুলো similar component। সবগুলায় একি-রকম shape এর শুধু এর ভিতরের Data গুলো আলাদা।
[ এই প্রতিটা component এ একটা মিল আছে, তা হলো -
যে post করিসে তার নাম (h2 tag) আছে,
কখন post করেছে সেই সময় (h6 tag) আছে,
কি post করিসে সেইডা (p tag) আছে।
একটা website এরকম বিভিন্ন component এর সমষ্টি। ]
Framework কি ?
“সহজ ভাষায় Framework হইলো কিছু Component এর একটা কালেকশন।”
ধরেন আপনি বিরিয়ানি বানাবেন। (বিরিয়ানিকে website ধরেন)।
আপনাকে এর জন্যে বিরিয়ানি বানাতে যা যা লাগে সেসব নিজে নিজে বানাতে হবে। ঝালের গুঁড়া, টকদই, মশলা, মাংস এসব বিরিয়ানি বানাতে লাগে। এগুলো বিরিয়ানির component. সব component মিলায়ে বিরিয়ানি (website) তৈরি হয়।
এবার ভেবে দেখেন, আপনার যদি অনেকের জন্য বিরিয়ানি রান্না করতে হয়,
(বিশাল বড় complex website বানাতে হয়),
তাহলে অনেক টকদই লাগবে, অনেক মাংস লাগবে যা আপনার নিজে নিজে জোগাড় করতে হবে, গরু জবাই করে মাংস কেটে সাইজ করে নিতে হবে, টকদই বানাতে হবে, ঝাল শুকাতে দিয়ে তারপর তা গুঁড়া করতে হবে।
(অনেক কার্ড লাগবে যেগুলোতে একটা করে খাবারের ছবি , খাবারের নাম, বিবরণ থাকবে, সেগুলো ধরে স্টাইল করে নিতে হবে)
আপনি এত ঝামেলা চান না। আপনার কাজটা তাড়াতাড়ি হওয়া চাই। তাই আপনি বাজার থেকে একবারে বিরিয়ানি মশলা কিনে আনবেন।
( কার্ড বা অন্য কোন component বানানো ও style করার জন্য আমরা যেমন bootstrap এর CDN [Content Delivery Network] টা এনে লিংক করে দি আমাদের index.html এ )
এভাবে আপনার কাজ সহজ করে দেয় আর কমিয়ে দেয় বিরিয়ানি মশলা। এখানে বিরিয়ানি মশলা বিরিয়ানি বানানোর একটা framework.
আপনার নিজে থেকে বানানো লাগলো না মশলা, দোকানদার আলা বিটা বানায়েই থুয়েসে আপনি শুধু কিনে আনলেন।
( ঠিক যেভাবে Twitter এর develop করা bootstrap হলো CSS এর একটা Framework.
Bootstrap কিছু কিছু কম্পোনেন্ট বানায় রেখেছে যা website বানাতে সবার কাজে লাগতে পারে।)
বিরিয়ানী মশলা না কিনেও আপনি নিজে নিজে বানিয়ে বিরিয়ানি রান্না করতে পারবেন
**আপনার কষ্ট একটু কমিয়ে দেবে বিরিয়ানি মশলা।
Bootstrap এর CDN আপনার project এ না এনেও আপনি website বানাতে পারবেন।
**আপনার কষ্ট একটু কমিয়ে দিবে Bootstrap.
**বিরিয়ানী মসলাকে একটু modify করে ওটায় আরো কিছু কম্পোনেন্ট যোগ করে আপনি বীরিয়ানিকে আরো মজাদার করতে পারেন।
** Bootstrap এর দেয়া কম্পোনেন্ট গুলো কে আপনি modify করে আরেকটু স্টাইল যোগ করে, আর দুইটা কম্পোনেন্ট যোগ করে আরো সুন্দর বানিয়ে ফেলতে পারেন।
Library কি ?
“সহজ ভাষায় Library হইলো কিছু কোডের সমষ্টি যা আপনি আপনার দরকার মত বার বার ব্যবহার করতে পারবেন আপনার প্রজেক্ট এ।"
বিরিয়ানির দিকেই যায় বাবা।
ধরেন, আপনি যে বিরিয়ানি বানাবেন, আপনার চুলা টা জ্বালাতে হবে। চুলা জ্বালাতে আপনার অনেক কাজ করতে হবে।
(কারণ আপনি একটু অলস প্রকৃতির।
রেগে ভোম হবেন না কিন্তু ভাইয়া / আপু)।
চুলা জ্বালাতে অনেক জ্বালা। কিন্তু চুলাও তো বারবার জ্বালানো লাগে রান্নার জন্য। তাই আপনি একটা library ব্যাবহার করতে পারেন যেখানে বেশকিছু কাজ করার জন্য reusable কিছু কোড দেয়া আছে, তার মধ্যে চুলা জ্বালানো একটা।
আগেই বলেছি লাইব্রেরী আপনাকে Reusable কিছু কোড দিয়ে দেয়, আপনি আপনার Code থেকে library এর মধ্যে থাকা সেই চুলা জালানোর কোডটা call করে চুলা জ্বালাতে পারেন।
Const কুবটেস = biriyaniRadhsi.chulaJala() ;
Framework আর Library এর মধ্যে পার্থক্য কি?
আপনি library রে বলেন যে করতে হবে।
যেমন, library এর মধ্যে থাকা একটা কোডকে আপনার কোড থেকে কল করে বললেন যে চুলা জালাতে হবে। আপনি বলে দিলেন তাই ও chulaJala() কোডটাকে এনে আপনার কাজটা করে দিলো।
Framework আপনাকে বলে যে কি করতে হবে।
যেমন, bootstrap এর কথা যদি বলি, একটা p tag কে center এ আনতে হলে আপনাকে bootstrap বলে দিয়েছে যে, p tag এর class এ আপনাকে text-center দিতে হবে। নাইলে উনি আপনার Text কে center করবেন না।
Benefits OF Using A Framework:
They Reduce Development Time
They Encourage Efficient Code Practices
They Are Batteries Included
They Are Reliable
Problems OF Using A Framework:
Reduced Speed and Performance
Chances of Security Loopholes
Hard to Modify
Steep Learning Curves
Benefits OF Using A Library:
They Reduce Development Time
They Are Reusable
Reduce the size of your class files (code can be extracted and moved elsewhere where it doesn't disturb anyone).
You can test your library independent of your application. If the library is good, then the bug must be in your app. Reduces test and debug time.