<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Noman's Tech Diary]]></title><description><![CDATA[Noman's Tech Diary]]></description><link>https://blog.noman.me</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1727150101731/2eaaf3eb-10a3-4232-93cf-3afee8a5d13b.png</url><title>Noman&apos;s Tech Diary</title><link>https://blog.noman.me</link></image><generator>RSS for Node</generator><lastBuildDate>Mon, 11 May 2026 11:19:26 GMT</lastBuildDate><atom:link href="https://blog.noman.me/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[SCSS: A Complete Guide in Bangla (বাংলা) and English (With Examples)]]></title><description><![CDATA[বাংলায় পড়তে স্ক্রল করে নিচে নামুন।
This guide will walk you through the basics of SCSS (Sassy CSS) to more advanced techniques, helping you understand how to write clean, organized, and scalable CSS using SCSS. Whether you're a beginner or looking ...]]></description><link>https://blog.noman.me/scss-a-complete-guide-in-bangla-and-english-with-examples</link><guid isPermaLink="true">https://blog.noman.me/scss-a-complete-guide-in-bangla-and-english-with-examples</guid><category><![CDATA[scss]]></category><category><![CDATA[CSS]]></category><category><![CDATA[CSS3]]></category><category><![CDATA[Sass]]></category><dc:creator><![CDATA[Noman Gazi]]></dc:creator><pubDate>Mon, 23 Sep 2024 18:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/_yMciiStJyY/upload/7d404c23b5164a28c19ab19c92211ddb.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-kucmrocmvucmgucmsucmvucmrcmvcdgpqrgpqhgprzgpqtgp4cg4ka44ken4kav4ken4kaw4kayiocmlecmsocnhydgpqjgprgpprgp4cg4kao4ka4kau4keb4kao4kwkkg"><em><mark>বাংলায় পড়তে স্ক্রল করে নিচে নামুন।</mark></em></h3>
<p>This guide will walk you through the basics of SCSS (Sassy CSS) to more advanced techniques, helping you understand how to write clean, organized, and scalable CSS using SCSS. Whether you're a beginner or looking to improve your skills, this series will provide real-world examples to make learning SCSS easy and practical.</p>
<h2 id="heading-1-what-is-scss-and-why-use-it"><strong>1. What is SCSS and Why Use It?</strong></h2>
<h4 id="heading-what-is-scss"><strong>What is SCSS?</strong></h4>
<ul>
<li>SCSS is a CSS preprocessor, meaning it extends the capabilities of CSS by adding features like variables, functions, and logic. It helps you write maintainable, modular, and reusable stylesheets.</li>
</ul>
<h4 id="heading-why-use-scss"><strong>Why Use SCSS?</strong></h4>
<ol>
<li><h4 id="heading-variables-store-values-like-colors-and-fonts-and-reuse-them-across-your-stylesheet"><strong>Variables</strong>: Store values like colors and fonts and reuse them across your stylesheet.</h4>
</li>
<li><p><strong>Nesting</strong>: Write CSS in a way that matches the structure of your HTML.</p>
</li>
<li><p><strong>Mixins</strong>: Create reusable blocks of code.</p>
</li>
<li><p><strong>Inheritance</strong>: Share styles across multiple selectors.</p>
</li>
</ol>
<h4 id="heading-setting-up-scss"><strong>Setting Up SCSS</strong></h4>
<h4 id="heading-to-start-using-scss-you-need-to-set-it-up-in-your-development-environment-you-can-install-scss-using-npm-or-yarn">To start using SCSS, you need to set it up in your development environment. You can install SCSS using <code>npm</code> or <code>yarn</code>:</h4>
<pre><code class="lang-bash">npm install -g sass
</code></pre>
<p>Once installed, compile your SCSS files into CSS using the following command:</p>
<pre><code class="lang-bash">sass input.scss output.css
</code></pre>
<h2 id="heading-2-using-variables-in-scss">2. Using Variables in SCSS</h2>
<h4 id="heading-what-are-variables"><strong>What Are Variables?</strong></h4>
<p>In CSS, you often reuse the same values like colors or font sizes. SCSS allows you to store these values in variables, making it easier to maintain and update your stylesheets.</p>
<h4 id="heading-declaring-and-using-variables"><strong>Declaring and Using Variables</strong></h4>
<pre><code class="lang-scss"><span class="hljs-comment">// Declaring Variables</span>
<span class="hljs-variable">$primary-color</span>: <span class="hljs-number">#3498db</span>;
<span class="hljs-variable">$secondary-color</span>: <span class="hljs-number">#2ecc71</span>;
<span class="hljs-variable">$font-stack</span>: <span class="hljs-string">'Roboto'</span>, sans-serif;

<span class="hljs-comment">// Using Variables</span>
<span class="hljs-selector-tag">body</span> {
  <span class="hljs-attribute">font-family</span>: <span class="hljs-variable">$font-stack</span>;
  <span class="hljs-attribute">background-color</span>: <span class="hljs-variable">$primary-color</span>;
  <span class="hljs-attribute">color</span>: <span class="hljs-variable">$secondary-color</span>;
}
</code></pre>
<p><strong>Output</strong>: The variables store the colors and font so that you can use them throughout your styles. If you ever need to update the color, you only need to change it in one place.</p>
<h2 id="heading-3-nesting-in-scss">3. Nesting in SCSS</h2>
<h4 id="heading-what-is-nesting"><strong>What is Nesting?</strong></h4>
<p>Nesting in SCSS allows you to structure your CSS selectors in a way that mirrors the structure of your HTML. It helps make the code cleaner and easier to read, especially for complex layouts.</p>
<h4 id="heading-nesting-example"><strong>Nesting Example</strong></h4>
<p>Let's say you have the following HTML structure:</p>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">nav</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">ul</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Home<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>About<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">nav</span>&gt;</span>
</code></pre>
<p>With SCSS, you can write the styles like this:</p>
<pre><code class="lang-scss"><span class="hljs-selector-tag">nav</span> {
  <span class="hljs-selector-tag">ul</span> {
    <span class="hljs-attribute">list-style</span>: none;
    <span class="hljs-attribute">padding</span>: <span class="hljs-number">0</span>;

    <span class="hljs-selector-tag">li</span> {
      <span class="hljs-attribute">display</span>: inline-block;
      <span class="hljs-attribute">margin-right</span>: <span class="hljs-number">10px</span>;

      <span class="hljs-selector-tag">a</span> {
        <span class="hljs-attribute">text-decoration</span>: none;
        &amp;<span class="hljs-selector-pseudo">:hover</span> {
          <span class="hljs-attribute">color</span>: red; <span class="hljs-comment">// Nested pseudo-class</span>
        }
      }
    }
  }
}
</code></pre>
<p><strong>Output</strong>: SCSS nesting makes your stylesheets more organized and easier to maintain, avoiding long and repetitive selectors.</p>
<h2 id="heading-4-mixins-in-scss"><strong>4. Mixins in SCSS</strong></h2>
<h4 id="heading-what-is-a-mixin"><strong>What is a Mixin?</strong></h4>
<p>A mixin is a block of reusable code in SCSS. It allows you to create a set of styles that you can reuse throughout your stylesheet.</p>
<h4 id="heading-creating-and-using-a-mixin"><strong>Creating and Using a Mixin</strong></h4>
<pre><code class="lang-scss"><span class="hljs-comment">// Define a Mixin</span>
<span class="hljs-keyword">@mixin</span> border-radius(<span class="hljs-variable">$radius</span>) {
  <span class="hljs-attribute">border-radius</span>: <span class="hljs-variable">$radius</span>;
}

<span class="hljs-comment">// Use the Mixin</span>
<span class="hljs-selector-class">.button</span> {
  <span class="hljs-keyword">@include</span> border-radius(<span class="hljs-number">10px</span>);
}
</code></pre>
<p><strong>Output</strong>: In this example, the mixin <code>border-radius</code> is defined with a parameter <code>$radius</code>. You can then include the mixin wherever you need to apply a <code>border-radius</code>, keeping your code DRY (Don't Repeat Yourself).  </p>
<h2 id="heading-5-inheritance-with-extend">5. Inheritance with @extend</h2>
<h4 id="heading-what-is-inheritance"><strong>What is Inheritance?</strong></h4>
<p>SCSS allows you to use the <code>@extend</code> directive to share styles between selectors. This reduces redundancy and helps keep your stylesheet more modular.</p>
<h4 id="heading-inheritance-example"><strong>Inheritance Example</strong></h4>
<pre><code class="lang-scss">%<span class="hljs-selector-tag">button</span>-<span class="hljs-selector-tag">base</span> {
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">10px</span> <span class="hljs-number">20px</span>;
  <span class="hljs-attribute">border-radius</span>: <span class="hljs-number">5px</span>;
  <span class="hljs-attribute">font-weight</span>: bold;
}

<span class="hljs-selector-class">.button-primary</span> {
  <span class="hljs-keyword">@extend</span> %button-base;
  <span class="hljs-attribute">background-color</span>: <span class="hljs-number">#3498db</span>;
}

<span class="hljs-selector-class">.button-secondary</span> {
  <span class="hljs-keyword">@extend</span> %button-base;
  <span class="hljs-attribute">background-color</span>: <span class="hljs-number">#2ecc71</span>;
}
</code></pre>
<p><strong>Output</strong>: Here, the <code>%button-base</code> placeholder stores common styles for buttons. Both <code>.button-primary</code> and <code>.button-secondary</code> extend this base and apply their own background color, reducing the need to write duplicate code.</p>
<h3 id="heading-6-partials-and-importing"><strong>6. Partials and Importing</strong></h3>
<h4 id="heading-what-is-a-partial"><strong>What is a Partial?</strong></h4>
<p>Partials are small SCSS files that you can split your code into, keeping your project organized and manageable, especially in large-scale applications. A partial SCSS file starts with an underscore (e.g., <code>_variables.scss</code>).</p>
<h4 id="heading-using-partials-and-importing-them"><strong>Using Partials and Importing Them</strong></h4>
<p>For example, you could have a partial <code>_variables.scss</code> for storing all your variables:</p>
<pre><code class="lang-scss"><span class="hljs-comment">// _variables.scss</span>
<span class="hljs-variable">$primary-color</span>: <span class="hljs-number">#3498db</span>;
<span class="hljs-variable">$secondary-color</span>: <span class="hljs-number">#2ecc71</span>;
</code></pre>
<p>In your main SCSS file, import the partial like this:</p>
<pre><code class="lang-scss"><span class="hljs-comment">// style.scss</span>
<span class="hljs-keyword">@import</span> <span class="hljs-string">'variables'</span>;

<span class="hljs-selector-tag">body</span> {
  <span class="hljs-attribute">background-color</span>: <span class="hljs-variable">$primary-color</span>;
}
</code></pre>
<p><strong>Output</strong>: Partials help you break down your styles into manageable sections, making your stylesheets more modular and easy to maintain.</p>
<h3 id="heading-conclusion"><strong>Conclusion</strong></h3>
<p>In this SCSS series, we covered everything from the basics like variables and nesting to more advanced features like mixins and inheritance. SCSS makes writing CSS cleaner, reusable, and scalable. By mastering SCSS, you'll be able to maintain and scale even large web projects with ease.</p>
<p>For beginners, SCSS is a powerful tool that can significantly improve your workflow, making CSS more maintainable and efficient.</p>
<p><strong><em>Special Note*</em></strong>: This blog post was written using AI.*</p>
<h2 id="heading-kirgpqzgpr7gpolgprlgpr7gpqgprwg4kaq4kah4ka84kak4kehiocmjcmlucmvucmqocnhydgppxgp43gprlgprgppug4kav4kaw4keb4kaokio"><strong><mark>বাংলায় পড়তে এখানে ক্লিক করুন</mark></strong></h2>
<p>এই সিরিজের মাধ্যমে আপনি SCSS (Sassy CSS)-এর বেসিক বিষয়গুলি থেকে শুরু করে আরও কিছু শিখবেন। SCSS হলো CSS-এর একটি এক্সটেনশন যা স্টাইলশিট লেখা সহজতর, সংগঠিত, এবং ব্যবস্থাপনাযোগ্য করে তোলে। এই সিরিজ শেষে আপনি বড় প্রজেক্ট এ SCSS সহজেই ব্যবহার করতে সক্ষম হবেন।</p>
<h3 id="heading-scss"><strong>১। SCSS শুরু করার উপায়</strong></h3>
<h4 id="heading-scss-1"><strong>SCSS কী?</strong></h4>
<p>SCSS (Sassy CSS) হলো একটি প্রিপ্রসেসর স্ক্রিপ্টিং ভাষা যা CSS-কে আরও ক্ষমতাশালী করে এবং এতে ভেরিয়েবল, নেস্টিং, মিক্সিনস, এবং ইনহেরিটেন্সের মতো বৈশিষ্ট্য যোগ করে। SCSS-এর মাধ্যমে আপনি আরও পরিষ্কার, মডিউলার এবং ব্যবস্থাপনাযোগ্য স্টাইল লিখতে পারেন, যা সাধারণ CSS-এ সম্ভব হয় না।</p>
<h4 id="heading-scss-2"><strong>SCSS কেন ব্যবহার করবেন?</strong></h4>
<p>CSS খুব শক্তিশালী হলেও, প্রকল্প বড় হলে সেটি পরিচালনা করা কঠিন হয়ে পড়ে। SCSS এর সীমাবদ্ধতা দূর করে নিচের সুবিধাগুলি প্রদান করে:</p>
<ul>
<li><p><strong>ভেরিয়েবলস</strong>: SCSS-এ আপনি মানগুলি সংরক্ষণ করতে এবং পুনরায় ব্যবহার করতে পারেন, যেমন রং, ফন্ট-সাইজ এবং অন্যান্য স্টাইল।</p>
</li>
<li><p><strong>নেস্টিং</strong>: আপনি আপনার CSS সিলেক্টরগুলিকে HTML কাঠামোর সাথে মেলাতে পারেন, যা কোডটি সহজবোধ্য করে তোলে।</p>
</li>
<li><p><strong>মিক্সিনস এবং ইনহেরিটেন্স</strong>: SCSS-এ পুনর্ব্যবহারযোগ্য কোড ব্লক তৈরি করা এবং বৈশিষ্ট্য উত্তরাধিকার নেওয়া সম্ভব।</p>
</li>
<li><p><strong>ফাংশন এবং লজিক</strong>: SCSS-এ আপনি লজিক এবং গণনা করতে পারেন, যা রেসপন্সিভ ডিজাইন এবং জটিল লেআউট পরিচালনা করা সহজ করে তোলে।</p>
</li>
</ul>
<h4 id="heading-scss-3"><strong>SCSS সেটআপ করার উপায়</strong></h4>
<p>আপনার ডেভেলপমেন্ট পরিবেশে SCSS সেটআপ করার জন্য কিছু ধাপ অনুসরণ করতে হবে:</p>
<ol>
<li><p><strong>Node.js-এর মাধ্যমে SCSS ইনস্টল করা</strong>: SCSS ইনস্টল করা যায় <code>npm</code> বা <code>yarn</code> এর মাধ্যমে:</p>
<pre><code class="lang-bash"> npm install -g sass
</code></pre>
<p> অথবা:</p>
<pre><code class="lang-bash"> yarn global add sass
</code></pre>
</li>
<li><p><strong>SCSS-কে CSS-এ কম্পাইল করা</strong>: SCSS ইনস্টল করার পর, আপনি নিচের কমান্ড ব্যবহার করে SCSS ফাইলগুলো CSS-এ কম্পাইল করতে পারবেন:</p>
<pre><code class="lang-bash"> sass input.scss output.css
</code></pre>
</li>
<li><p><strong>SCSS ফাইল যুক্ত করা</strong>: আপনার HTML প্রোজেক্টে SCSS ফাইল যুক্ত করতে:</p>
<pre><code class="lang-xml"> <span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"stylesheet"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"css/style.css"</span>&gt;</span>
</code></pre>
</li>
</ol>
<h2 id="heading-scss-4">২।SCSS-এ ভেরিয়েবলস ব্যবহার</h2>
<p>SCSS-এ ভেরিয়েবলসের মাধ্যমে আপনি মানগুলি সংরক্ষণ করতে পারেন যা পরবর্তীতে বিভিন্ন স্থানে পুনরায় ব্যবহার করা যায়। এটি বিশেষত বৃহৎ প্রকল্পে কনসিস্টেন্সি বজায় রাখতে এবং কোড আপডেট সহজ করতে সহায়তা করে।</p>
<h4 id="heading-kirgpq3gp4fgprdgprgp5gp4fgpqzgprig4kah4ka4kav4ken4kay4ka4kaw4keh4ka24kaoiocmjcmrocmgidgpqzgp43gpqgpqzgprngpr7gpraqkg"><strong>ভেরিয়েবল ডিক্লারেশন এবং ব্যবহার</strong></h4>
<p>SCSS-এ ভেরিয়েবল <code>$</code> সাইন দিয়ে ডিক্লেয়ার করা হয়:</p>
<pre><code class="lang-scss"><span class="hljs-comment">// ভেরিয়েবল ডিক্লারেশন</span>
<span class="hljs-variable">$primary-color</span>: <span class="hljs-number">#3498db</span>;
<span class="hljs-variable">$secondary-color</span>: <span class="hljs-number">#2ecc71</span>;
<span class="hljs-variable">$font-stack</span>: <span class="hljs-string">'Roboto'</span>, sans-serif;

<span class="hljs-comment">// ভেরিয়েবল ব্যবহার</span>
<span class="hljs-selector-tag">body</span> {
  <span class="hljs-attribute">font-family</span>: <span class="hljs-variable">$font-stack</span>;
  <span class="hljs-attribute">background-color</span>: <span class="hljs-variable">$primary-color</span>;
  <span class="hljs-attribute">color</span>: <span class="hljs-variable">$secondary-color</span>;
}
</code></pre>
<h4 id="heading-kirgppfgp43gprlgp4vgpqzgpr7gprig4kap4kas4kaciocmsucnicmlecmvucmsidgpq3gp4fgprdgprgp5gp4fgpqzgprlgprgqkg"><strong>গ্লোবাল এবং লোকাল ভেরিয়েবলস</strong></h4>
<p>ভেরিয়েবলস গ্লোবাল অথবা লোকালভাবে ব্যবহার করা যায়। গ্লোবাল ভেরিয়েবলস সব জায়গায় ব্যবহারযোগ্য আর লোকাল ভেরিয়েবলস কেবল নির্দিষ্ট ব্লকের মধ্যে ব্যবহার করা যায়।</p>
<h2 id="heading-scss-5">৩। SCSS-এ নেস্টিং</h2>
<p>SCSS-এর নেস্টিং সুবিধা CSS সিলেক্টরগুলিকে HTML কাঠামোর মতো করে গঠন করতে দেয়, যা কোডটি সহজে পড়া এবং বোঝা যায়।</p>
<h4 id="heading-kirgpqjgp4fgprjgp43gppgprgpoig4kaj4kam4ka4ka54kaw4kajkio"><strong>নেস্টিং উদাহরণ</strong></h4>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">nav</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">ul</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Home<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>About<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">nav</span>&gt;</span>
</code></pre>
<pre><code class="lang-scss"><span class="hljs-selector-tag">nav</span> {
  <span class="hljs-selector-tag">ul</span> {
    <span class="hljs-attribute">list-style</span>: none;
    <span class="hljs-attribute">padding</span>: <span class="hljs-number">0</span>;

    <span class="hljs-selector-tag">li</span> {
      <span class="hljs-attribute">display</span>: inline-block;
      <span class="hljs-attribute">margin-right</span>: <span class="hljs-number">10px</span>;

      <span class="hljs-selector-tag">a</span> {
        <span class="hljs-attribute">text-decoration</span>: none;
        &amp;<span class="hljs-selector-pseudo">:hover</span> {
          <span class="hljs-attribute">color</span>: red; <span class="hljs-comment">// নেস্টেড সুডো-ক্লাস</span>
        }
      }
    }
  }
}
</code></pre>
<h4 id="heading-kirgpqjgp4fgprjgp43gppgprgpoig4kau4ka4kah4ka4kav4ka84kaiocmlecngecmrcmvocnhcmsocmvyoq"><strong>নেস্টিং মিডিয়া কুয়েরি</strong></h4>
<p>SCSS-এ মিডিয়া কুয়েরি নেস্টিং করে রেসপন্সিভ স্টাইলগুলি সঠিকভাবে সংগঠিত রাখা সহজ।</p>
<pre><code class="lang-scss"><span class="hljs-selector-class">.button</span> {
  <span class="hljs-attribute">background-color</span>: <span class="hljs-number">#3498db</span>;

  <span class="hljs-keyword">@media</span> (max-width: <span class="hljs-number">600px</span>) {
    <span class="hljs-attribute">background-color</span>: <span class="hljs-number">#2ecc71</span>;
  }
}
</code></pre>
<h2 id="heading-4keq4kwkiocmqucmvucmsocnjecmncmvcmrcmvocmvucmsucmucdgpogpqzgpoig4kah4kau4ken4kaq4kel4kaw4ken4kaf4ka4kac">৪। পার্টিয়ালস এবং ইম্পোর্টিং</h2>
<p>SCSS আপনাকে আপনার কোডকে ছোট ছোট ফাইলে ভাগ করার সুযোগ দেয়, যাকে পার্টিয়াল বলে। এটি আপনাকে বড় প্রকল্পে স্টাইলগুলিকে আরও সংগঠিতভাবে ব্যবস্থাপনা করতে সহায়তা করে।</p>
<h4 id="heading-kirgpqrgpr7gprdgp43gppgprgpqgprzgpr7gprig4kak4kei4kaw4kaiocmlecmsocmvioq"><strong>পার্টিয়াল তৈরি করা</strong></h4>
<p>SCSS ফাইলের নামের আগে <code>_</code> ব্যবহার করলে তা পার্টিয়াল হয়ে যায়। যেমন:</p>
<ul>
<li><p><code>_variables.scss</code></p>
</li>
<li><p><code>_mixins.scss</code></p>
</li>
</ul>
<h4 id="heading-import"><code>@import</code> ব্যবহার করে পার্টিয়াল ইম্পোর্ট করা</h4>
<pre><code class="lang-scss"><span class="hljs-keyword">@import</span> <span class="hljs-string">'variables'</span>;
<span class="hljs-keyword">@import</span> <span class="hljs-string">'mixins'</span>;
<span class="hljs-keyword">@import</span> <span class="hljs-string">'header'</span>;
</code></pre>
<h2 id="heading-mixin"><strong>৫।মিক্সিং (mixin)</strong></h2>
<p>Mixin হলো SCSS-এর এক বিশেষ সুবিধা যা পুনর্ব্যবহারযোগ্য কোড ব্লক তৈরি করতে দেয়। মিক্সিনের মাধ্যমে আপনি কোডের একটি ব্লক বিভিন্ন স্থানে ব্যবহার করতে পারেন।</p>
<pre><code class="lang-scss"><span class="hljs-keyword">@mixin</span> border-radius(<span class="hljs-variable">$radius</span>) {
  <span class="hljs-attribute">border-radius</span>: <span class="hljs-variable">$radius</span>;
}

<span class="hljs-selector-class">.button</span> {
  <span class="hljs-keyword">@include</span> border-radius(<span class="hljs-number">10px</span>);
}
</code></pre>
<h2 id="heading-4kep4kwkiocmjcmlecnjecmuocmncnhcmqocnjecmosgpofgpqjgprngp4fgprdgprgppgp4fgpqjgp43gprg">৩। এক্সটেন্ড/ইনহেরিটেন্স</h2>
<p><code>@extend</code> নির্দেশ ব্যবহার করে আপনি বিভিন্ন সিলেক্টরের মধ্যে স্টাইল শেয়ার করতে পারেন।</p>
<pre><code class="lang-scss">%<span class="hljs-selector-tag">button</span>-<span class="hljs-selector-tag">base</span> {
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">10px</span> <span class="hljs-number">20px</span>;
  <span class="hljs-attribute">border-radius</span>: <span class="hljs-number">5px</span>;
  <span class="hljs-attribute">font-weight</span>: bold;
}

<span class="hljs-selector-class">.button-primary</span> {
  <span class="hljs-keyword">@extend</span> %button-base;
  <span class="hljs-attribute">background-color</span>: <span class="hljs-number">#3498db</span>;
}
</code></pre>
<h3 id="heading-kirgpongpqrgprjgpolgprngpr7gpraqkg"><strong>উপসংহার</strong></h3>
<p>এই সিরিজে আমরা SCSS-এর মূল বিষয় থেকে শুরু করে ভেরিয়েবলস, নেস্টিং, মিক্সিনস এবং ইনহেরিটেন্সের মতো অ্যাডভান্সড ফিচার কভার করেছি। SCSS ব্যবহার করে আপনি আপনার CSS কোডকে আরও ক্লিন, রিইউজেবল, এবং স্কেলেবল করতে পারবেন।</p>
<blockquote>
<p>Unlock the power of SCSS to write cleaner, organized, and scalable CSS. This guide covers everything from setting up SCSS to using its advanced features like variables, nesting, mixins, inheritance, partials, and more. Whether you're a beginner or looking to refine your skills, this series offers practical examples and tips to enhance your styling workflow. Start mastering SCSS today to make your CSS more maintainable and efficient. Read on to learn how SCSS can transform your web development process.</p>
</blockquote>
<p><strong><em>বিশেষ দ্রষ্টব্য:</em></strong> <em>এই ব্লগ টি AI ব্যবহার করে লেখা হয়েছে।</em></p>
]]></content:encoded></item><item><title><![CDATA[Here are 7 harmful career tips]]></title><description><![CDATA[❌ ❌Here are 7 harmful career tips you should definitely unlearn for long-term success: ❌❌
1. "Follow Your Passion, and Success Will Come"Why it's harmful: While passion is important, it isn’t always enough to build a successful career. Sometimes, tur...]]></description><link>https://blog.noman.me/here-are-7-harmful-career-tips</link><guid isPermaLink="true">https://blog.noman.me/here-are-7-harmful-career-tips</guid><category><![CDATA[Career]]></category><category><![CDATA[career advice]]></category><category><![CDATA[Life lessons]]></category><category><![CDATA[risk management]]></category><dc:creator><![CDATA[Noman Gazi]]></dc:creator><pubDate>Mon, 23 Sep 2024 08:04:10 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1727078845363/dbc6ea91-eac4-425b-a1ec-cc5c76640a1a.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>❌ ❌Here are 7 harmful career tips you should definitely unlearn for long-term success: ❌❌</p>
<p>1. "Follow Your Passion, and Success Will Come"<br />Why it's harmful: While passion is important, it isn’t always enough to build a successful career. Sometimes, turning a passion into a job can drain the joy out of it. Focus on building skills and aligning them with market demand.</p>
<p>2. "Never Say No to an Opportunity"<br />Why it's harmful: Saying yes to everything can lead to burnout, overwhelm, and spreading yourself too thin. It’s essential to set boundaries and prioritize opportunities that align with your goals.</p>
<p>3. "Stay Loyal to One Company for a Lifetime"<br />Why it's harmful: The days of staying with one company for life are gone. Sticking to one company might limit your growth, opportunities, and salary potential. It’s okay to seek new challenges when you outgrow a role.</p>
<p>4. "Climbing the Corporate Ladder is the Only Path to Success"<br />Why it's harmful: Success doesn’t always mean rising to the top. Many people find fulfillment in lateral career moves, entrepreneurship, or even freelancing. Define success in your own terms.</p>
<p>5. "Work Hard, and You’ll Be Rewarded"<br />Why it's harmful: Hard work alone doesn’t guarantee success. Networking, visibility, and strategic decision-making are just as important. Sometimes, people who work less but network effectively achieve more recognition.</p>
<p>6. "Keep Your Head Down and Avoid Office Politics"<br />Why it's harmful: Office politics can be uncomfortable, but completely ignoring them may harm your career. Understanding the dynamics of workplace relationships and managing them effectively is crucial for career growth.</p>
<p>7. "Stick to Your Career Plan No Matter What"<br />Why it's harmful: Sticking rigidly to a plan can close doors to unexpected opportunities. The job market evolves, and so do you. Be flexible and open to change as your career progresses.</p>
<p>❌ জব হপিং আপনার ক্যারিয়ারকে মেরে ফেলবে<br />↳ কৌশলগত চাকরি হপিং আপনার ক্যারিয়ারকে ত্বরান্বিত করতে পারে। যদি একটি চাকরি আর আপনাকে সেবা না দেয়, তবে এগিয়ে যান। এবং আপনি যখন করবেন তখন আপনার বেতন বৃদ্ধি করুন।</p>
<p>❌ কঠোর পরিশ্রম করুন এবং প্রচার আসবে<br />↳ আপনার কৃতিত্ব সম্পর্কে চিৎকার করতে হবে এবং নিজের পক্ষে সমর্থন করতে হবে।</p>
<p>❌ আপনার একটি 5 বছরের ক্যারিয়ার প্ল্যান দরকার<br />↳ একটি কঠোর পরিকল্পনা করা প্রায় অসম্ভব - মানিয়ে নিতে হবে এবং দক্ষতা-স্ট্যাকিংয়ের উপর ফোকাস করুন।</p>
<p>❌ বেতন নিয়ে আলোচনা করলে আপনি অফারটি হারাবেন<br />↳ আলোচনা না করে আপনি টেবিলে টাকা রেখে যাচ্ছেন। বেতন নিয়ে গবেষণা করুন এবং অফার পেলে জিজ্ঞাসা করুন।</p>
<p>❌ শুধুমাত্র সেই চাকরিতে আবেদন করুন যার জন্য আপনি 100% যোগ্য৷<br />↳ যখন আপনি কাজের বিবরণের 60% থেকে 80% হিট করেন তখন আবেদন করুন। আপনার বৃদ্ধির জন্য জায়গা থাকবে।</p>
<p>❌ আপনি এটি তৈরি না হওয়া পর্যন্ত এটি জাল করুন<br />↳ জিনিসগুলি জানার ভান করবেন না - একটি শিক্ষানবিস মানসিকতা অবলম্বন করুন এবং আপনার দক্ষতার ফাঁকগুলি প্লাগ করুন৷</p>
<p>❌ কর্পোরেট সিঁড়ি আরোহণ<br />↳ সাইড-ওয়ে চলাফেরা করা বা একজন বিশেষজ্ঞ হয়ে উঠা ঠিক উপরের দিকে আরোহণের মতোই ফলপ্রসূ হতে পারে।</p>
<p><img src="https://media.licdn.com/dms/image/v2/D5622AQE59teC5nCDtg/feedshare-shrink_800/feedshare-shrink_800/0/1727076660352?e=1729728000&amp;v=beta&amp;t=zQHHkzUVnFIiZ18HAEc8oIOozvJ5zN-pTjUX7SNUIhQ" alt="Image preview" class="image--center mx-auto" /></p>
]]></content:encoded></item><item><title><![CDATA[রিয়েক্ট জেস এর স্টেট মোডিফাই]]></title><description><![CDATA[আমরা যখন প্রোগ্রাম বা ডেভলপার হওয়ার জন্য ওয়েব ডেভলপমেন্ট এর জগতে আসি তখন প্রথমেই HTML, CSS এবং JavaScript শেখা শুরু করে দেয়। এরপর এই শেখা চলতেই থাকে। এরপর React, Vue, Svelte এর মতো ফ্রন্টেন্ড ফ্রেমওয়ার্ক বা লাইব্রেরি শিখতে শুরু করি।
কিন্তু অনেকে রিয়ে...]]></description><link>https://blog.noman.me/set-state-modify</link><guid isPermaLink="true">https://blog.noman.me/set-state-modify</guid><category><![CDATA[JavaScript]]></category><category><![CDATA[React]]></category><category><![CDATA[js]]></category><category><![CDATA[JSX]]></category><category><![CDATA[State Management ]]></category><dc:creator><![CDATA[Noman Gazi]]></dc:creator><pubDate>Sat, 27 Apr 2024 15:58:15 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1714230057268/ebe0e6ef-93ec-4484-bf11-c37ba807ca46.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>আমরা যখন প্রোগ্রাম বা ডেভলপার হওয়ার জন্য ওয়েব ডেভলপমেন্ট এর জগতে আসি তখন প্রথমেই HTML, CSS এবং JavaScript শেখা শুরু করে দেয়। এরপর এই শেখা চলতেই থাকে। এরপর React, Vue, Svelte এর মতো ফ্রন্টেন্ড ফ্রেমওয়ার্ক বা লাইব্রেরি শিখতে শুরু করি।</p>
<p>কিন্তু অনেকে রিয়েক্টজেএস শেখা শুরু করি। এরপর থেকে আমাদের এই জার্নি চলতে থাকে। আমরা একটা পর্যায় যেয়ে reactjs এর state এর সাথে পরিচিত হই এবং অধিকাংশ ডাটা স্টোর করি এই hook এর মাধ্যমে।</p>
<p>এখন আমরা reactjs এর state কে মোডিফাই করা শিখবো।  </p>
<p>অনেক সময় আমরা স্টেস্ট বর্তমান ভ্যালু পরিবর্তন করা লাগতে পারে। তখন আমরা নিচের মতো করে ভ্যালু পরিবর্তন করে থাকি।</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> [count, setCount] = useState(<span class="hljs-number">0</span>);

  <span class="hljs-keyword">const</span> handleIncrement = <span class="hljs-function">() =&gt;</span> {
    setCount(count + <span class="hljs-number">1</span>);
  }

  <span class="hljs-keyword">const</span> handleDecrement = <span class="hljs-function">() =&gt;</span> {
    setCount(count - <span class="hljs-number">1</span>);
  }
</code></pre>
<p>এখানে সেট ফাংশনের ভ্যালু পরিবর্তন করা হয়েছে <code>count</code> এর বর্তমান ভ্যালু'র সাথে ১ ইনক্রিমেন্ট বা ডিক্রিমেন্ট করে। কিন্তু এখানে আমরা একই component এ ইনক্রিমেন্ট এবং ডিক্রিমেন্ট করা হয়েছে সেই জন্য আমাদের তেমন একটা সমস্যা দেখছি না। কিন্তু আমরা যখন প্যারেন্ট কম্পনেন্ট এ state ডিক্লিয়ার করে props পাস করে আমরা ডাটা ব্যবহার করি।</p>
<p>কিন্তু বিপত্তি হয় যখন Boolean, Count, Filter, Find ইত্যাদি ধরনের ডাটা নিয়ে কাজ করি। অনেক সময় এমনও হতে পারে যে আমাদের বর্তমান ডাটা update করা লাগছে। কিন্তু আমাদের variable এবং setState ফাংশন ভিন্ন component আছে। এখন যদি উপরের নিয়মে ডাটা পরিবর্তন করতে চাই তাহলে count, setState কে props আকারে পাস করতে হবে। যা খুবই ঝামেলা যুক্ত হতে পারে।</p>
<p>কিন্তু যদি চাই যে শুধু মাত্র কোনো একটা ইভেন্ট ঘটলে setState এর মাধ্যমে count এর ডাটা পরিবর্তন হবে তাহলে কেমন হবে? নিশ্চয় অনেক ভালো হবে। তাহলে চলুন কিভাবে setState ফাংশন কে মোডিফাই করে আমরা সেই state এর ভেরিয়েবল এর ডাটা পরিবর্তন করতে পারি।</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> [count, setCount] = useState(<span class="hljs-number">0</span>);

  <span class="hljs-keyword">const</span> handleIncrement = <span class="hljs-function">() =&gt;</span> {
    setCount(<span class="hljs-function">(<span class="hljs-params">prevData</span>) =&gt;</span> prevData + <span class="hljs-number">1</span>);
  }

  <span class="hljs-keyword">const</span> handleDecrement = <span class="hljs-function">() =&gt;</span> {
    setCount(<span class="hljs-function">(<span class="hljs-params">prevData</span>) =&gt;</span> prevData - <span class="hljs-number">1</span>);
  }
</code></pre>
<p>উপরে দেখানো হয়েছে কিভাবে আমরা শুধু মাত্র setState ফাংশন কে মোডিফাই করতে পারি। উপরে যদিও রিটার্ন কে শর্টকার্ট করে ব্যবহার করা হয়েছে es6 এর অ্যারো ফাংশন ব্যবহার করে।</p>
<p>চাইলে নিচের মতো করে লেখা যাবে--</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> [count, setCount] = useState(<span class="hljs-number">0</span>);

<span class="hljs-keyword">const</span> handleIncrement = <span class="hljs-function">() =&gt;</span> {
    setCount(<span class="hljs-function">(<span class="hljs-params">prevData</span>) =&gt;</span> {
        <span class="hljs-keyword">return</span> prevData + <span class="hljs-number">1</span>
    });
  }

  <span class="hljs-keyword">const</span> handleDecrement = <span class="hljs-function">() =&gt;</span> {
    setCount(<span class="hljs-function">(<span class="hljs-params">prevData</span>) =&gt;</span> {
        <span class="hljs-keyword">return</span> prevData - <span class="hljs-number">1</span>
    });
  }
</code></pre>
<p>বিস্তারিত আসা যাক- প্রথমে setState ফাংশন এর ভিতর একটা <a target="_blank" href="https://with.zonayed.me/post/js-callback-function/">callback</a> ফাংশন নিয়েছি। <a target="_blank" href="https://with.zonayed.me/post/js-callback-function/">callback</a> ফাংশন একটা প্যারামিটার রিসিভ করে যার ভিতরে state এর বর্তমান data থাকে এবং আমরা সেই ডাটাকে যে ভাবে ইচ্ছা মোডিফাই করে আবার রিটার্ন করে দিলেই state আপডেট হয়ে যায়।</p>
<p>নিচে আরও কিছু উদাহরণ দেখবো--</p>
<p>ধরুন, একটা state এ ১ থেকে ২০ পর্যন্ত নাম্বারের অ্যারে আছে যেখানে আমরা prime number, odd number, even number বের করবো।</p>
<p>প্রথমে একটা স্টেট এ ইনিশিয়াল ভাবে ১ থেকে ২০ পর্যন্ত নাম্বার নিবো।</p>
<pre><code class="lang-javascript"> <span class="hljs-keyword">const</span> [count, setCount] = useState([<span class="hljs-number">1</span>,<span class="hljs-number">2</span>,<span class="hljs-number">3</span>,<span class="hljs-number">4</span>,<span class="hljs-number">5</span>,<span class="hljs-number">6</span>,<span class="hljs-number">7</span>,<span class="hljs-number">8</span>,<span class="hljs-number">9</span>,<span class="hljs-number">10</span>, <span class="hljs-number">11</span>, <span class="hljs-number">12</span>, <span class="hljs-number">13</span>, <span class="hljs-number">14</span>, <span class="hljs-number">15</span>, <span class="hljs-number">16</span>, <span class="hljs-number">17</span>, <span class="hljs-number">18</span>, <span class="hljs-number">19</span>, <span class="hljs-number">20</span>]);

<span class="hljs-built_in">console</span>.log(count) <span class="hljs-comment">//[1,2,3,4,5,6,7,8,9,10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]</span>
</code></pre>
<p>এখন আমরা setState ফাংশন মোডিফাই করে শুধু মাত্র prime number বের করবো।</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> primeNumber = <span class="hljs-function">() =&gt;</span> {
    setCount(<span class="hljs-function">(<span class="hljs-params">prevData</span>) =&gt;</span> {
        <span class="hljs-keyword">const</span> primeNumbers = prevData.filter(<span class="hljs-function">(<span class="hljs-params">number</span>) =&gt;</span> {
            <span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> i = <span class="hljs-number">2</span>; i &lt; number; i++) {
                <span class="hljs-keyword">if</span> (number % i === <span class="hljs-number">0</span>) {
                    <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
                }
            }
            <span class="hljs-keyword">return</span> number &gt; <span class="hljs-number">1</span>;
        });
        <span class="hljs-keyword">return</span> primeNumbers;
    });
  }

<span class="hljs-comment">// Output</span>
<span class="hljs-built_in">console</span>.log(count) <span class="hljs-comment">// [2, 3, 5, 7, 11, 13, 17, 19]</span>
</code></pre>
<p>setState ফাংশন মোডিফাই করে এখন odd number বের করবো।</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> oddNumber = <span class="hljs-function">() =&gt;</span> {
    setCount(<span class="hljs-function">(<span class="hljs-params">prevData</span>) =&gt;</span> {
        <span class="hljs-keyword">const</span> oddNumbers = prevData.filter(<span class="hljs-function">(<span class="hljs-params">number</span>) =&gt;</span> number % <span class="hljs-number">2</span> !== <span class="hljs-number">0</span>);
        <span class="hljs-keyword">return</span> oddNumbers;
    });
  }

<span class="hljs-comment">//--Output</span>
<span class="hljs-built_in">console</span>.log(count) <span class="hljs-comment">// [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]</span>
</code></pre>
<p>setState ফাংশন মোডিফাই করে এখন even number বের করবো।</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> evenNumber = <span class="hljs-function">() =&gt;</span> {
    setCount(<span class="hljs-function">(<span class="hljs-params">prevData</span>) =&gt;</span> {
        <span class="hljs-keyword">const</span> evenNumbers = prevData.filter(<span class="hljs-function">(<span class="hljs-params">number</span>) =&gt;</span> number % <span class="hljs-number">2</span> === <span class="hljs-number">0</span>);
        <span class="hljs-keyword">return</span> evenNumbers;
    });
  }
<span class="hljs-comment">//--Output</span>
<span class="hljs-built_in">console</span>.log(count) <span class="hljs-comment">// [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]</span>
</code></pre>
<p>এই রকম ভাবে আরও অনেক কাজ করতে পারবো স্টেট মোডিফাই করার মাধ্যমে।</p>
<p>ধন্যবাদ।</p>
]]></content:encoded></item><item><title><![CDATA[var let const এর ভিতর পার্থক্য এবং ব্যবহার]]></title><description><![CDATA[var let const এই তিনটা কিওয়ার্ড এর ভিতর পার্থক্য এবং এর ব্যবহার।
প্রথমেই জেনে নেওয়া যাক ভেরিয়েবল কি? এবং এর কাজ কি?
ভেরিয়েবল হলো একটা জারের(কৌটা) মতো যেখানে আমরা ইচ্ছা মতো number, staring, text, object, function ইত্যাদি রাখতে পারবো। ধরুন, আমার কাছে এ...]]></description><link>https://blog.noman.me/var-let-const</link><guid isPermaLink="true">https://blog.noman.me/var-let-const</guid><category><![CDATA[JavaScript]]></category><category><![CDATA[variables]]></category><category><![CDATA[var let const]]></category><category><![CDATA[var]]></category><category><![CDATA[learn coding]]></category><dc:creator><![CDATA[Noman Gazi]]></dc:creator><pubDate>Sun, 24 Jul 2022 12:40:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1658939090126/h9sdFBNHy.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-var-let-const">var let const এই তিনটা কিওয়ার্ড এর ভিতর পার্থক্য এবং এর ব্যবহার।</h2>
<p>প্রথমেই জেনে নেওয়া যাক ভেরিয়েবল কি? এবং এর কাজ কি?</p>
<p>ভেরিয়েবল হলো একটা জারের(কৌটা) মতো যেখানে আমরা ইচ্ছা মতো <strong>number, staring, text, object, function</strong> ইত্যাদি রাখতে পারবো। ধরুন, আমার কাছে একটা জার(কৌটা) আছে তার ভিতর কিছু আপেল, কমলালেবু, ডালিম আছে। এরপর আমার যখন খেতে মন চাইবে তখন আমার ইচ্ছা মতো ফল খেতে পারবো। ঠিক একইভাবে প্রোগ্রামিং লেখার সময় আমরা ভেরিয়েবল এর ভিতর আমাদের প্রয়োজনীয় <strong>Data</strong> রাখতে পারবো এবং পরবর্তিতে আবার আমাদের প্রয়োজন মতো ব্যবহার করতে পারবো। কিন্তু সে গুলো প্রোগ্রামিং এর রুলসের মেনেই লিখতে হবে। আর আমার যখন যেখানে, যতবার দরকার সেখানেই ভ্যারিয়েবল ডেকেই আমি তার ভ্যালু পেয়ে যাবো।</p>
<p>তবে ভ্যারিয়েবল নেওয়ার আগে সেটাকে অবশ্যই প্রথম বার ডিক্লেয়ার করে নিতে হবে। জাভাস্ক্রিপ্ট এ ভ্যারিয়েবল ডিক্লেয়ার করা হয় <strong>var , let , const</strong> কীওয়ার্ড দিয়ে। যে টাইপের ভ্যারিয়েবলই হউক সেটা var দিয়েই ডিক্লেয়ার করা হয়। <strong>var</strong> লিখার পর আপনি ভ্যারিয়েবলের নাম দিবেন, কি নামে হবে ভ্যারিয়েবল সেটা। এই নাম যেকোনো কিছু ইউজ করতে পারবেন।</p>
<h3 id="heading-4kak4kas4kehiocmlecmvcmmcngsdgprdgp4hgprlgprgg4kag4kab4kehiocmjcmlucmvucmqocnhcmgw">তবে কিছু রুলস আছে এখানেঃ</h3>
<ol>
<li>জাভাস্ক্রিপ্ট এর রিসার্ভড কীওয়ার্ড ইউজ করতে পারবেন না।</li>
<li>ভ্যারিয়েবলের নাম অক্ষর দিয়ে শুরু হতে হবে, তবে নাম্বার, স্পেশাল ক্যারেক্টার <strong>!, @, #, %, ^, &amp;, *, (, )</strong> দিয়ে শুরু হতে পারবে না। কিন্তু <strong>_(আন্ডারস্কোর</strong>) ও <strong>$(ডলার সাইন)</strong> ইউজ করে শুরু করতে পারবেন।</li>
<li>জাভাস্ক্রিপ্ট এ ভ্যারিয়েবল এর নাম কেস-সেনসিটিভ। মানে myName এবং Myname বা myname এক না। যেখানে ঠিক বড় হাতে ছোটো হাতে যেভাবে ভ্যারিয়েবলের নাম ঘোষনা করবো সেটাকে অ্যাক্সেস করতে হলে ঠিক সেভাবেই লিখে অ্যাক্সেস করতে হবে। এখানে myName এবং Myname দুইটা সম্পূর্ন আলাদা আলাদা দুইটা ভ্যারিয়েবল।</li>
<li>ভেরিয়েবল এর ঘোষনা করার সময় নামের মাঝে ফাঁকা(space) থাকা যাবে না।</li>
<li>ভেরিয়েবল এর নাম সংখ্যা দিয়ে শুরু হতে পারবে না।</li>
</ol>
<h3 id="heading-4kav4keh4kau4kao4kad">যেমনঃ</h3>
<pre><code class="lang-js"><span class="hljs-keyword">var</span> myVar = <span class="hljs-string">"Hello world!"</span>; <span class="hljs-comment">// Hello world!</span>
<span class="hljs-keyword">var</span> myVar1 = <span class="hljs-number">1234</span>; <span class="hljs-comment">// 1234</span>

<span class="hljs-keyword">let</span> mySchool = <span class="hljs-string">"Dhaka College."</span> <span class="hljs-comment">// Dhaka College.</span>
<span class="hljs-keyword">let</span> myIdNumber = <span class="hljs-number">12345678</span>; <span class="hljs-comment">// 12345678</span>

<span class="hljs-keyword">const</span> facebookAuthor  = <span class="hljs-string">"Mark Zuckerberg"</span>; <span class="hljs-comment">// Mark Zuckerberg</span>
<span class="hljs-keyword">const</span> piValue = <span class="hljs-number">3.14159</span>; <span class="hljs-comment">// 3.14159</span>
</code></pre>
<p>এবার এখানে প্রশ্ন আসতে এখানে ভেরিয়েবল ঘোষনা দেওয়ার সময় শুধুমাত্র <strong>var</strong> কিওয়ার্ড ব্যবহার না করে <strong>var , let , const</strong> এই কিওয়ার্ড গুলো কেনো ব্যবহার করা হয়েছে??</p>
<h3 id="heading-4kak4ka4ka54kay4kehiocmmucmsucngecmqcdgpogpqzgpr7gprag4kas4ka4ka44ken4kak4ka4kaw4ka4kakiocmnocnhcmqocnhydgpqjgp4fgpppgp5gpr4g4kav4ka4kavlq">তাহলে চলুন এবার বিস্তারিত জেনে নেওয়া যাক-</h3>
<p><strong>var , let , const</strong>কেনো ব্যবহার হয়েছে জানতে হলে প্রথমে জানতে হবে socpe কী?</p>
<blockquote>
<p>স্কোপ কোডের বিভিন্ন অংশ থেকে ভেরিয়েবল, অবজেক্ট এবং ফাংশনগুলির অ্যাক্সেস যোগ্যতা নির্ধারণ করে।</p>
</blockquote>
<h3 id="heading-scope">জাভাস্ক্রিপ্টে ৩ ধরণের স্কোপ(Scope) রয়েছে:</h3>
<ol>
<li>ফাংশন (লোকাল )</li>
<li>গ্লোবাল স্কোপ (Scope)</li>
<li>ব্লক স্কোপ (Scope)</li>
</ol>
<blockquote>
<p><strong>var</strong> কিওয়ার্ড ফাংশন এবং গ্লোবাল স্কোপ সাপোর্ট করে কিন্তু ব্লক স্কোপ সাপোর্ট করে না।</p>
</blockquote>
<h3 id="heading-4kar4ka4kac4ka24kaokocmsucnicmlecmvucmsikg4ka44ken4kav4kel4kaqlq">ফাংশন(লোকাল) স্কোপ-</h3>
<p>যখন কোনও ফাংশনের অভ্যন্তরে কোনও ভেরিয়েবল সংজ্ঞায়িত করা হয় , এটি কেবলমাত্র সেই ফাংশনের জন্য লোকাল হবে এবং বাইরে ব্যবহার করা যাবে না।</p>
<pre><code class="lang-js"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">local</span>(<span class="hljs-params"></span>)</span>{ 
  <span class="hljs-keyword">var</span> number = <span class="hljs-number">1</span>; 
  <span class="hljs-built_in">console</span>.log(number); <span class="hljs-comment">// 1 gets printed </span>
} 
<span class="hljs-built_in">console</span>.log(number); <span class="hljs-comment">// undefined</span>
</code></pre>
<h3 id="heading-4kax4ken4kay4kel4kas4ka4kayiocmuocnjecmlecnicmqg">গ্লোবাল স্কোপ</h3>
<p>যখন কোনও ফাংশনের বাইরে কোনও ভেরিয়েবল ঘোষণা করা হয় বা <strong>var</strong> কীওয়ার্ড ছাড়াই তখন তা গ্লোবাল হয়ে যাবে এবং যে কোনও জায়গা থেকে অ্যাক্সেসযোগ্য হবে।</p>
<pre><code class="lang-js"><span class="hljs-keyword">var</span> number = <span class="hljs-number">1</span>; 
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">local</span>(<span class="hljs-params"></span>) </span>{ 
   <span class="hljs-built_in">console</span>.log(number); <span class="hljs-comment">// 1 gets printed </span>
} 
<span class="hljs-built_in">console</span>.log(number); <span class="hljs-comment">// 1 gets printed</span>
</code></pre>
<h3 id="heading-4kas4ken4kay4kaviocmuocnjecmlecnicmqg">ব্লক স্কোপ</h3>
<p>curly braces { }, if-else cases এবং for loops হলো block-scoped</p>
<pre><code class="lang-js">### ভুল নিয়ম-
<span class="hljs-keyword">if</span>(<span class="hljs-literal">true</span>){
   <span class="hljs-keyword">let</span> letVariable = <span class="hljs-string">"This is let Variable"</span>;
}
<span class="hljs-built_in">console</span>.log(letVariable) <span class="hljs-comment">// Uncaught ReferenceError: letVariable is not defined</span>

### সঠিক নিয়ম-
<span class="hljs-keyword">if</span>(<span class="hljs-literal">true</span>){
   <span class="hljs-keyword">let</span> letVariable = <span class="hljs-string">"This is let Variable"</span>;
   <span class="hljs-built_in">console</span>.log(letVariable) <span class="hljs-comment">// This is let Variable</span>
}
</code></pre>
<h3 id="heading-var">var</h3>
<ol>
<li>একবার ডিক্লেয়ার করলে পুনরায় আবার একই নামে ডিক্লেয়ার করা যায়।</li>
<li>বারবার ভেলু পরিবর্তন করা যায়।</li>
<li>একই নামে ভেরিয়েবল ডিক্লেয়ার করা যাবে কিন্তু সবার নিচে যে ভেরিয়েবল থাকবে ঐটা প্রিন্ট হবে।</li>
</ol>
<pre><code class="lang-js"><span class="hljs-keyword">var</span> number = <span class="hljs-number">1</span>; <span class="hljs-comment">// first declaration </span>
<span class="hljs-keyword">var</span> number = <span class="hljs-number">2</span>; <span class="hljs-comment">// same variable redeclared with the same name console.log(number); // And we see no errors</span>
<span class="hljs-built_in">console</span>.log(number) <span class="hljs-comment">// 2</span>
</code></pre>
<h3 id="heading-let">let</h3>
<p>এটা ব্লক স্কোপ ও একবার ডিক্লেয়ার করলে পুনরায় ডিক্লেয়ার করা যায় না। এর মান পরিবর্তন করা যায়।</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658665588115/pRaP7nmsm.png" alt="image.png" /></p>
<h3 id="heading-const">const</h3>
<p>এই কিওয়ার্ড ব্যবহার করা হয় যখন আমরা কোনো কিছুর মান নির্দিষ্ট করে রাখার জন্য। <strong>var , let</strong> থেকে কিছুটা আলাদা কারণ এর ভ্যালু পরিবর্তন করা যায় না। শুধু মাত্র একবার ডিক্লেয়ার করা যায়।</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1658665614777/mMkRdqVPk.png" alt="image.png" /></p>
]]></content:encoded></item></channel></rss>