با React-Bootstrap کامپوننت های ساده و کارآمد بسازید


اکثریت ترافیک وب اکنون می آید از دستگاه های تلفن همراه، نه دسکتاپ. به این ترتیب، برنامه های کاربردی وب مدرن باید به آسانی با وضوح، نسبت ابعاد و دستگاه های مختلف سازگار شوند. کتابخانه React-Bootstrap از دو چارچوب محبوب (React و Bootstrap) برای تسهیل ایجاد برنامه‌های کاربردی وب مؤثر، کارآمد و پاسخگو استفاده می‌کند.

این مقاله بلوک‌های ساختمان و مزایای React-Bootstrap را مورد بحث قرار می‌دهد و نمونه‌های دقیق را در یک برنامه نمونه بررسی می‌کند و تجربه توسعه‌یافته‌ای را برای پروژه وب بعدی شما ارائه می‌دهد.

مبانی: چیستی و چرایی React-Bootstrap

بوت استرپ که بر روی CSS و جاوا اسکریپت ساخته شده است، یک چارچوب CSS است که طراحی وب سایت واکنشگرا را با استفاده از طرح شبکه ای از ردیف ها و ستون ها امکان پذیر می کند. بیایید React-Bootstrap را در چارچوب‌های CSS و vanilla Bootstrap بررسی کنیم تا پروژه‌هایی را که می‌تواند به بهترین نحو ممکن ارائه دهد، شناسایی کنیم.

Bootstrap و CSS Frameworks

هنگام ساخت یک وب سایت، CSS عناصر بصری یک صفحه را توصیف می کند و تغییر CSS یک سایت می تواند یک تغییر بسیار ضروری را ایجاد کند. با این حال، در طراحی وب مدرن، CSS به تنهایی کافی نیست – طراحی وب پاسخگو اجباری است و چارچوب ها زندگی توسعه دهندگان CSS را آسان تر می کنند.

طراحی وب ریسپانسیو به برنامه ها اجازه می دهد تا طرح ها و عناصر را بر اساس انواع دستگاه ها و اندازه پنجره یا صفحه تغییر دهند. چارچوب‌های CSS مزایای دیگری مانند توسعه سریع، کاهش تکرار کد و بهبود قابلیت نگهداری پایه کد را ارائه می‌کنند.

چارچوب های زیادی برای ساده کردن نوشتن CSS وجود دارد. Tailwind CSS و پایه دو گزینه محبوب هستند. با این حال، Bootstrap یک انتخاب استاندارد برای CSS پاسخگو به دلیل مزایایی مانند:

  • یک جامعه قوی و مستندات گسترده.
  • یک اکوسیستم تثبیت شده با انواع اجزای سبک، از جمله بلوک های از پیش ساخته، تم ها و قالب ها.
  • قابلیت سفارشی سازی و سازگاری بین مرورگرها.

بیایید هنگام تصمیم‌گیری بین React-Bootstrap و Vanilla Bootstrap، مبادلات را بررسی کنیم.

Bootstrap در مقابل React-Bootstrap

با وجود مزایای بسیار زیاد، چرا نخواهیم از Bootstrap ساده برای برنامه های React استفاده کنیم؟ پاسخ در نحوه ساخت React نهفته است.

React توصیه نمی کند که توسعه دهندگان DOM را مستقیماً تغییر دهند. در عوض، آن را در درجه اول به کار می گیرد DOM مجازییا VDOM، برای ردیابی تمام تغییرات DOM. React می‌تواند تغییرات خارج از VDOM را از دست بدهد و منجر به باگ‌ها، خطاها و رفتارهای غیرمنتظره شود.

نسخه های قبلی بوت استرپ به شدت به jQuery متکی هستند که مستقیماً DOM را تغییر می دهد و بنابراین می تواند این نتایج نامطلوب را ایجاد کند. React-Bootstrap را وارد کنید، کتابخانه ای که دسترسی به هر مؤلفه Bootstrap را فراهم می کند و به جای jQuery به جاوا اسکریپت خالص وابسته است و فقط VDOM را تغییر می دهد.

React-Bootstrap علاوه بر جلوگیری از رفتار نامطلوب مربوط به DOM، نحوی تمیز و خوانا را نیز ارائه می دهد. بیایید همان کارت نمونه را با استفاده از Bootstrap و React-Bootstrap برای مقایسه ایجاد کنیم:

یک کارت React با (از بالا به پایین) تصویری از آرم React، an

کد کارت بوت استرپ ما حاوی تعداد زیادی است div برچسب ها، شناسایی هر جزء را دشوار می کند:

<div className="card">
  <img src=" className="card-img-top" alt=" />
  <div className="card-body">
      <h5 className="card-title">Example Card</h5>
      <p className="card-text">This is an example React card</p>
      <a href="#" className="btn btn-primary">Example Button</a>
    </div>
</div>

از سوی دیگر، کد کارت React-Bootstrap ما به وضوح هر جزء را برچسب گذاری می کند:

<Card>
  <Card.Img variant="top" src=" />
  <Card.Body>
    <Card.Title>Example Card</Card.Title>
    <Card.Text>This is an example React card</Card.Text>
    <Button variant="primary">Example Button</Button>
  </Card.Body>
</Card>

آیا این دو مزیت React-Bootstrap را از هر نظر برتر از Bootstrap می کند؟ نه. از نسخه 5، بوت استرپ دیگر از jQuery استفاده نمی کند و می تواند با React استفاده شود. و تا همین اواخر، React-Bootstrap هیچ پشتیبانی از Bootstrap 5 نداشت، به این معنی که توسعه دهندگان نمی توانستند پروژه های React-Bootstrap خود را با نسخه های جدید Bootstrap ارتقا دهند. React-Bootstrap v2 این مشکل را حل می کند.

اگر قصد دارید پروژه خود را از React به چارچوب دیگری مانند Vue منتقل کنید، Bootstrap بهترین انعطاف پذیری را ارائه می دهد. شما می توانید از بیشتر کدهای ساده بوت استرپ مجددا استفاده کنید، اما کاربران React-Bootstrap باید کد خود را تبدیل کنند. Bootstrap و React-Bootstrap هر کدام مزایا و معایب خود را دارند و اینکه کدام یک را انتخاب می کنید به نیازهای خاص شما بستگی دارد. در مورد ما، ما خوانایی را بالاتر از انعطاف پذیری برای مهاجرت اولویت بندی می کنیم.

پیاده سازی: اجزای زیبا با React-Bootstrap

برای بررسی یک پیاده‌سازی کاربردی React-Bootstrap، اجازه دهید یک رابط کاربری استاندارد وب‌سایت با نوار ناوبری، پاورقی و یک شبکه واکنش‌گرا ایجاد کنیم.

یک وب سایت React حاوی از بالا به پایین: نوار ناوبری آبی با متن

راه اندازی و اصول

ابتدا بیایید یک برنامه React جدید در ترمینال ایجاد کنیم:

npx create-react-app react-bootstrap-example --template typescript

در مرحله بعد، هر دو React-Bootstrap و Bootstrap را نصب کنید (نصب Bootstrap ضروری است زیرا شامل تمام سبک های اجزای React-Bootstrap است):

npm install bootstrap react-bootstrap

اگر نمی‌خواهید سبک‌های پیش‌فرض Bootstrap را لغو کنید، در این مرحله ضروری است که شیوه نامه Bootstrap را وارد کنید. bootstrap/dist/css/bootstrap.min.css، در src/App.tsx فایل. (برای استفاده از استایل سفارشی، سبک های پیش فرض بوت استرپ را لغو می کنیم، بنابراین نیازی به انجام این مرحله نداریم.)

به طور کلی، دو راه برای وارد کردن اجزای React-Bootstrap وجود دارد. روش اول از این نحو استفاده می کند:

import Button from 'react-bootstrap/Button';
import Container from 'react-bootstrap/Container';

با این حال، من ترجیح می‌دهم از واردات تخریب‌شده استفاده کنم، زیرا آنها کد را برای چندین مؤلفه فشرده و ساده می‌کنند:

import { Button, Container } from 'react-bootstrap';

در نهایت، یک کامپوننت React-Bootstrap را با این نحو ارائه می کنیم:

<Button>This is a button</Button>

سبک های سفارشی

سبک‌های پیش‌فرض بوت استرپ (مانند رنگ‌ها) را می‌توان با استایل سفارشی برای طراحی وب منحصربه‌فردتر نادیده گرفت. بیایید Bootstrap را نادیده بگیریم 13 رنگ متن با خودمون ابتدا Sass را نصب می کنیم:

npm install sass

بعد، نام را تغییر دهید App.css فایل به App.scss، نشان می دهد که یک فایل Sass است و import './App.scss'; در App.tsx فایل. در ما App.scss قبل از وارد کردن شیوه نامه Sass Bootstrap، رنگ های اصلی و ثانویه را نادیده می گیریم:

$primary: #204ecf;
$secondary: #262d3d;

@import '~bootstrap/scss/bootstrap';

همیشه قبل از وارد کردن شیوه نامه های بوت استرپ، سبک ها را نادیده بگیرید. در غیر این صورت، سبک های سفارشی اعمال نمی شوند.

ظروف

کانتینرها اساسی ترین و اساسی ترین جزء React-Bootstrap هستند. آنها یک بلوک ساختمانی در اجرای اجزای پیچیده تر مانند شبکه ها هستند. ظروف به صورت اختیاری محتویات درون خود را در مرکز و به صورت افقی قرار می دهند.

قبل از افزودن نوار ناوبری، پاورقی و سیستم شبکه به وب‌سایت خود، بیایید ببینیم که کانتینرها چگونه بر محتوای آنها تأثیر می‌گذارند. ما یک متن ساده ایجاد می کنیم (p) داخل یک بخش عمومی (div) به طور موقت در src/App.tsx. ما بخش را آبی و پس‌زمینه کلی خود را خاکستری می‌کنیم تا نمایش طرح‌بندی آسان‌تر شود:

<div className="bg-primary">
  <p>Example</p>
</div>

بدون یک ظرف React-Bootstrap، محتوای ما بدون صفحه است و پاسخگو نیست:

پس‌زمینه خاکستری حاوی نوار آبی و بدون لایه با رنگ سفید

بیایید همان کد را با یک React-Bootstrap امتحان کنیم Container به جای یک ژنریک div (باید وارد کنیم Container قبل از استفاده):

<Container className="bg-primary">
  <p>Example</p>
</Container>

اکنون، محتوای ما با padding ظاهر می شود:

پس‌زمینه خاکستری حاوی نوار آبی، پرشده و وسط با رنگ سفید

عرض پنجره مرورگر را تغییر دهید تا طراحی واکنشگرا را در عمل ببینید.

اولین مؤلفه ای که به سایت نمونه ما اضافه می شود، است نوار ناوبری. ایجاد یک کامپوننت React جداگانه برای نوار ناوبری (برخلاف نوشتن آن در کنار سایر کدها) یافتن کامپوننت ها و ایجاد تغییرات را آسان تر می کند.

ایجاد یک src/components پوشه و فایل را اضافه کنید ResponsiveNavbar.tsx. ما وارد می کنیم Navbar و سایر اجزای ضروری سپس، یک نوار ناوبری اولیه را اضافه می‌کنیم که در ریسپانسیو پیچیده شده است Container جزء، که لوگو یا عنوان سایت ما را نمایش می دهد (Navbar.Brand):

import { Navbar, NavDropdown, Nav, Container } from 'react-bootstrap';

const ResponsiveNavbar = () => {
  return (
    <Navbar bg="primary" collapseOnSelect expand="sm">
      <Container>
   <Navbar.Brand href=" Site</Navbar.Brand>
 </Container>
    </Navbar>
  );
};

export default ResponsiveNavbar;

ما در حال ارسال سه آرگومان به نوار ناوبری هستیم:

  • bg بر رنگ نوار ناوبری تأثیر می گذارد.
  • collapseOnSelect هنگامی که کاربر یک مورد را انتخاب می کند، نوار ناوبری به طور خودکار جمع می شود.
  • expand تعیین می کند که چه زمانی نوار ناوبری جمع می شود (sm به این معنی است که در عرض 768 پیکسل فرو می ریزد).

برای نوار ناوبری پیشرفته‌تر، یک منوی همبرگر تغییر یافته اضافه می‌کنیم (Navbar.Toggle) نمایش بخش های “Home”، “Link” و “Drop-down”. Navbar.Toggle در حالت دسکتاپ نامرئی است. با این حال، هنگام مشاهده وب سایت در صفحه های کوچکتر، بخش های افقی را فشرده می کند Navbar.Collapse، به منوی همبرگر مناسب برای موبایل.

<Navbar bg="primary" collapseOnSelect expand="sm">
  <Container>
    <Navbar.Brand href=" Site</Navbar.Brand>
    <Navbar.Toggle aria-controls="navbar-toggle" />
    <Navbar.Collapse id="navbar-toggle">
      <Nav className="me-auto">
        <Nav.Link href="
        <Nav.Link href="
        <NavDropdown title="Drop-down" id="nav-dropdown">
          <NavDropdown.Item href=" 1</NavDropdown.Item>
          <NavDropdown.Item href=" 2</NavDropdown.Item>
          <NavDropdown.Item href=" 3</NavDropdown.Item>
        </NavDropdown>
      </Nav>
    </Navbar.Collapse>
  </Container>
</Navbar>

Navbar.Toggle و Navbar.Collapse ابزارهای قدرتمندی هستند که به توسعه دهندگان کمک می کنند تا نوارهای ناوبری پاسخگو با چند خط کد ایجاد کنند.

بالاخره ما import ResponsiveNavbar from './components/ResponsiveNavbar'; و آن را در قسمت اصلی ما قرار دهیم App:

<div className="d-flex flex-column">
  <ResponsiveNavbar />
</div>

می توانید هر زمان که بخواهید برنامه را با اجرا آزمایش کنید npm start برای مشاهده به روز رسانی آن با هر جزء اضافه شده.

نوار ناوبری ما کامل است، پس بیایید روی فوتر سایت کار کنیم. همانطور که با ResponsiveNavbar، باید اعلام کنیم Footer و آن را به صورت جدید صادر کنید Footer.tsx فایل. ما با استفاده از متن، پیوندها و a یک فوتر اولیه ایجاد می کنیم Container:

<div className="bg-secondary mt-auto">
  <Container className="p-3">
    <p className="text-center text-white">Thank you for visiting this website</p>
    <p className="text-center mt-5 text-white">Follow us on social media:</p>
    <a href="
    <a href="
    <a href="
  </Container>
</div>

کلاس ها p-3 و mt-5 نشان دهنده padding و margin-top است و مقادیر آنها می تواند بین صفر تا پنج باشد (مثلا p-5 و mt-1 نیز گزینه هایی هستند) یا روی تنظیم شوند auto. اضافه کردن نیز مهم است mt-auto، زیرا پس از اضافه کردن، پاورقی را به پایین صفحه فشار می دهد Footer به ما App در مرحله بعدی

در مرحله بعد، برای نمایش پیوندهای اجتماعی در کنار هم با فاصله صحیح، a را اضافه می کنیم Row کامپوننت و تودرتو هر پیوند را در یک Col (ستون) جزء (ما همچنین باید اضافه کنیم Row و Col به واردات React-Bootstrap ما):

<div className="bg-secondary mt-auto">
  <Container className="p-3">
    <p className="text-center text-white">Thank you for visiting this website</p>
    <p className="text-center mt-5 text-white">Follow us on social media:</p>
    <Row>
      <Col className="text-center">
        <a href="
      </Col>
      <Col className="text-center">
        <a href="
      </Col>
      <Col className="text-center">
        <a href="
      </Col>
    </Row>
  </Container>
</div>

آخرین مرحله ما این است که پاورقی را در پایین صفحه خود در ما قرار دهیم App:

<div className="d-flex flex-column min-vh-100">
  <ResponsiveNavbar />
  <Footer />
</div>

در اینجا، ما همچنین حداقل ارتفاع صفحه وب را روی آن تنظیم کرده ایم 100vh; این ارتفاع کامل صفحه نمایش (100٪ ارتفاع درگاه دید) است و تضمین می کند که پاورقی به جای اینکه مستقیماً زیر سایر محتواها ظاهر شود در پایین واقعی صفحه نمایش داده می شود.

سیستم های شبکه

وقتی نوار ناوبری و پاورقی در جای خود قرار دارند، وب سایت را با افزودن یک به پایان می رسانیم سیستم شبکه ای به صفحه شبکه ما شامل خواهد شد Card کامپوننت هایی که ما آنها را در قالب جدید تعریف و صادر می کنیم Item.tsx فایل:

<Card style={{ minWidth: '18rem', margin: '20px' }}>
  <Card.Img variant="top" src=" />
  <Card.Body>
    <Card.Title>Example Card</Card.Title>
    <Card.Text>This is an example React card</Card.Text>
    <Button variant="primary">Example Button</Button>
  </Card.Body>
</Card>

اکنون می توانیم به آن بازگردیم App.tsx و یک شبکه پویا از سطرها و ستون ها بین نوار ناوبری و پاورقی اضافه کنید. ما باید سیستم شبکه خود را در یک بپیچیم Container:

<Container className="mt-5">
  <Row>
    {Array.from(Array(numberOfItems).keys()).map(number => (
      <Col key={number}>
        <Item />
      </Col>
    ))}
  </Row>
</Container>

ما می توانیم یک ثابت برای numberOfItems برای کنترل چند بار Item جزء ارائه شده است. ستون ها به طور خودکار اندازه می شوند و برای همه اندازه های صفحه نمایش پاسخگو هستند. سعی کنید اندازه پنجره مرورگر خود را برای آزمایش تغییر دهید نتیجه نهایی.

React-Bootstrap Screen Recording.gif

توسعه وب پاسخگو آسان شد

سینتکس تمیز React-Bootstrap و اجزای ساده، طراحی واکنشگرا را برای اجرای هر پروژه ای ساده می کند. توانایی کار با Bootstrap و React-Bootstrap برای توسعه دهندگان front-end ضروری است. با استفاده از این ابزارها در مجموعه مهارت های خود، برای طراحی ساده تر برنامه وب و نمونه سازی آماده هستید.

تیم تحریریه وبلاگ مهندسی تاپتال از شما تشکر می کند گفت خولوف برای بررسی نمونه کدها و سایر مطالب فنی ارائه شده در این مقاله.



منبع

Matthew Newman

Matthew Newman Matthew has over 15 years of experience in database management and software development, with a strong focus on full-stack web applications. He specializes in Django and Vue.js with expertise deploying to both server and serverless environments on AWS. He also works with relational databases and large datasets
[ Back To Top ]