کتابخانه Material UI در ری اکت یکی از محبوب ترین و پرکاربرد ترین کتابخانه های پیاده سازی UI به کمک کامپوننت های از پیش ساخته شده و آمادس! به کمک کتابخانه MUI در ری اکت میتونیم به ده ها کامپوننت آماده دسترسی داشته باشیم! Material UI در ری اکت باعث میشه در مدت زمان خیلی کمتری و با سرعت بیشتری UI خودمون رو پیاده سازی کنیم 🙂
با فِرانت اِندی همراه باشید که میخوایم این کتابخانه خفن رو بررسی کنیم …
کیفیت بالای کامپوننت های Material UI ، سادگی استفاده از اون و جامعه آماری فوق العاده ی این کتابخانه باعث شده که اکثر React Developer ها از MUI در ری اکت استفاده کنن.
همچنین کامپوننت های آماده و از پیش ساخته شده ی Material UI قابل ویرایش هستن و قابلیت شخصی سازی دارن.
تمامی قالب ها و کامپوننت هایی که MUI در اختیار ما میزاره reusable هستن و قابلیت شخصی سازی دارن.
تمامی قالب ها و کامپوننت های MUI در ریکت ریسپانسیو هستن و قابلیت نمایش در صفحات نمایش با سایز مختلف رو دارن. همین موضوع سرعت توسعه اپیکیشن رو بشدت افزایش میده.
کامپوننت های MUI در React کاملا بهینه هستن و نسبت به سایر فرمورک های UI سریعتر بارگذاری میشن.
برای هر کامپوننت و نیاز، چندین نوع قالب وجود داره تا بر اساس سلیقه خودمون بتونیم بهترین انتخاب رو داشته باشیم.
کتابخانه Material UI در react بیش از 2 میلیون دانلود هفتگی در npm داره که نشون میده جامعه آماری فوق العاده ای داره.
بیشتر از 28000 نفر از سراسر جهان در توسعه کتابخانه Material UI نقش داشتن. این کتابخانه هر چند روز یکبار بروزرسانی میشه که جهت رفع مشکلات و افزودن ویژگی های جدید به این کتابخانه هست.
برای نصب MUI در ری اکت کافیه دستور زیر رو تو ترمینال خودمون وارد کنیم :
با npm :
npm install @mui/material @emotion/react @emotion/styled
با yarn :
yarn add @mui/material @emotion/react @emotion/styled
شاید این سوال برامون پیش بیاد که چرا تو دستور های بالا داریم کتابخانه emotion رو هم نصب میکنیم؟
کتابخانه mui برای استایل دهی کامپوننت های خودش در پشت صحنه از emotion استفاده میکنه. به همین دلیل باید به همراه MUI ، کتابخانه emotion روهم نصب کنیم.
خب حالا که MUI در ریکت نصب شد بریم ببینیم چه استفاده هایی میشه ازش کرد 🙂
کتابخانه MUI ده ها کامپوننت کاربردی و خفن داره که ما میتونیم ازشون استفاده کنیم.
تو این مقاله میخوایم چند مورد از کاربردی ترین کامپوننت های Material UI در ری اکت رو بررسی کنیم ( به همراه مثال ) و ببینیم چه جاهایی کاربرد دارن.
کامپوننت Typographi در Material UI به ما اجازه میده که متن های اپیکیشن خودمون رو با استایل از پیش تعریف شده نمایش بدیم.
این کمک میکنه که تمام متن های اپیکیشن ما یک ساختار یکسان و هماهنگ باهم داشته باشن.
تو تیکه کد زیر ما از کامپوننت Typography در ری اکت استفاده کردیم :
import Typography from "@mui/material/Typography"
export default function App() {
return (
<div className="App">
{/*For h1 Tag */}
<Typography variant="h1"> هر متنی که میخوای اینجا بزار </Typography>
</div>
);
}
اگه فِرانت اِند دولوپر باشید حتما اسم normalize.css به گوشتون خورده.
بطور خلاصه و ساده فایل normalize.css میاد و استایل هایی که بصورت پیشفرض به اِلِمان ها و صفحات داده شده رو پاک میکنه ( استایل هارو نرمال میکنه )
اما اگه از Material UI در ری اکت استفاده میکنیم، دیگه نیازی به normalize.css نداریم!
چون خود MUI در ری اکت همین کار رو برای ما میکنه ( به کمک Css Baseline ).
کامپوننت CSSBaseline کارهای زیر رو برای ما انجام میده :
برای استفاده از کامپوننت CSSBaseline در MUI باید بصورت زیر عمل کنیم :
import CssBaseline from "@mui/material/CssBaseline"
export default function App() {
return (
<div>
<CssBaseline /> {/* اعمال normalize.css */}
{/* کد های اپیکیشن ما که نرمالایز میشن */}
</div>
);
}
همونطور که میدونیم کامپوننت ها و صفحاتی که به کمک Material UI در ریکت ایجاد میکنیم کاملا Responsive هستن و قابلیت نمایش در صفحات با سایز های مختلف رو دارن.
اعمال این ویژگی Responsive در MUI به کمک سیستم گرید ( Grid ) 12 ستونه انجام میشه.
در حقیقت کامپوننت Grid در Material UI ویژگی های زیر رو در اختیار ما میزاره :
تو تیکه کد زیر از کامپوننت Grid در Material UI استفاده کردیم :
import Grid from "@mui/material/Grid"
import Typography from "@mui/material/Typography"
// تو تیکه کد زیر یک کامپوننت ساده ساختیم
// کامپوننت زیر یک اِلِمان سادس
function ColoredComponent({ color }) {
return (
<div
style={{
backgroundColor: color,
color: "white",
paddingTop: "8px",
paddingBottom: "8px",
textAlign: "center"
}}
>
<Typography variant="body1">Sample piece of text</Typography>
</div>
);
}
// اینجا از کامپوننت گرید استفاده کردیم :
export default function App() {
return (
<div className="App">
<Grid container spacing={1}>
<Grid item xs={12} sm={8} md={6}>
<ColoredComponent color="#764abc" />
</Grid>
<Grid item xs={12} sm={4} md={6}>
<ColoredComponent color="#f57482" />
</Grid>
</Grid>
</div>
);
}
آیکن ها همیشه یکی از مهمترین اجزای صفحات فِرانت اِند بودن. به کمک کامپوننت Icon در MUI میتونیم به صدها آیکن زیبا و کاربردی دسترسی داشته باشیم.
بطور مثال برای قسمت “حذف” میتونیم از آیکن سطل زباله استفاده کنیم.
ما توسط 3 متود زیر میتونیم از آیکن های Material UI استفاده کنیم:
کامپوننت SvgIcon از ما یک props میگیره ( svg path element ) که این svg path رو تبدیل به یک کامپوننت ری اکتی میکنه و بصورت آیکن نمایش میده.
این متود برای استفاده از آیکن های ligature کاربرد داره.
تو این متود ما میتونیم از آیکن Material UI در ری اکت استفاده کنیم. برای استفاده از آیکن های خود MUI باید پکیج آیکن MUI رو به کمک دستور زیر نصب کنیم :
با npm :
npm install @mui/icons-material
یا با yarn :
yarn add @mui/icons-material
حالا میتونیم به صدها آیکن آماده در Material UI دسترسی داشته باشیم. با کلیک روی دکمه زیر میتونیم این لیست رو ببینیم :
برای اینکه طرز استفاده از آیکن در Material UI رو متوجه بشیم، به تیکه کد زیر نگاهی بندازید :
// فراخوانی کامپوننت هایی که لازم داریم نمایش بدیم
import FavoriteIcon from "@mui/icons-material/Favorite"
import FavoriteBorderOutlinedIcon from "@mui/icons-material/FavoriteBorderOutlined"
export default function App() {
return (
<div>
<FavoriteIcon style={{ width: "100%", height: "20px" }} />
<FavoriteBorderOutlinedIcon style={{ width: "100%", height: "20px" }} />
</div>
);
}
یکی از کاربردی ترین کامپوننت های Material UI در ریکت ، کامپوننت Button هست.
دکمه ها این امکان رو میدن که کاربر روی یک بخش کلیک کنه تا یک اتفاقی رخ بده. ( مثلا برای خرید یک محصول، برای رفتن به یک صفحه دیگه ، برای حذف یک آیتم و .. )
برای استفاده از کامپوننت Button در Material UI باید بصورت زیر عمل کنیم :
import Button from '@mui/material/Button';
export default function App() {
return (
<Button color="success" variant="contained">
من یه دکمه قشنگم که رنگم سبزه
</Button>
);
}
دکمه های Material UI میتونن Props های زیادی از ما بگیرن. ( لیست کامل Props های هر کامپوننت رو میشه تو داکیومنت اصلی MUI دید ) مثل رنگ، اندازه و ..
جدای از این موضوع ما میتونیم چند نوع دکمه ( Button ) نمایش بدیم …
دکمه های Flat در Material UI خیلی ساده هستن و صرفا یک متن دارن. ( هیچ رنگ پس زمینه و حاشیه ای ندارن )
برای استفاده از Flat Buttons در Material UI باید بصورت زیر عمل کرد :
<Button variant="text">من دکمه فلت هستم</Button>
دکمه های Outlined در Material UI خیلی شبیه Flat Buttons ها هستن با این تفاوت که یک استایل و طرح جزئی دارن.
بصورت زیر میشه از Outlined Buttons استفاده کرد :
<Button variant="outlined">من یک دکمه آوتلاین هستم</Button>
از کامپوننت AppBar در ری اکت میتونیم برای نوار منوی اندروید اپیکیشن خودمون استفاده کنیم.
این نوار منو معمولا توی موبایل نمایش داده میشه و میتونه شامل قابلیت جستجو، متن صفحات مختلف و .. باشه.
تو تیکه کد زیر از کامپوننت AppBar در Material UI استفاده کردیم :
import AppBar from "@mui/material/AppBar"
import Toolbar from "@mui/material/Toolbar"
import Typography from "@mui/material/Typography"
import HomeIcon from "@mui/icons-material/Home"
<div>
<AppBar position="static">
<Toolbar> // کامپوننت تولبار
<Typography>
آیکن خانه برای صفحه اصلی <HomeIcon />
</Typography>
</Toolbar>
</AppBar>
</div>;
برای نمایش یک لیست از محتوا تو صفحات خودمون میتونیم از کامپوننت Lists در ری اکت استفاده کنیم.
کامپوننت Lists در MUI برای ما یک لیست عمودی از محتوای خواسته شده رو render میکنه که هر آیتم میتونه شامل یک آیکن یا نماد باشه.
تو تیکه کد زیر ما از کامپوننت Lists در Material UI استفاده کردیم و اطلاعات خودمون رو بصورت عمودی نمایش دادیم :
import List from "@mui/material/List"
import ListItem from "@mui/material/ListItem"
import Typography from "@mui/material/Typography"
export default function App() {
return (
<div>
<Typography variant="h4"> لیست اسامی شما :</Typography>
<List>
<ListItem> عاطفه </ListItem>
<ListItem> جمشید </ListItem>
<ListItem> چراغعلی </ListItem>
</List>
</div>
);
}
لطفا برای مطالعه ادامه مقاله + تیکه کد ها و مثالهای بیشتر روی لینک زیر کلیک کنید :