-
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 05WEB Dev/ToyProject 2021. 12. 8. 00:33728x90
๐ท CloneTodo โ - Todomate Clone Project | Team CloneMate
CloneTodo : ๋ง์ ์ฌ๋๋ค์ด ์ฌ๋ํ๋ ํฌ๋๋ฉ์ดํธ๋ฅผ ํด๋ก ํ์ฌ ์น ์๋น์ค๋ฅผ ๋ฐฐํฌํด๋ณด๋ ํ๋ก์ ํธ
์ด์ ๋ ํด๋ํธ๋ฆฌ๋ฅผ ๊ทธ๋ ค๋ณด์๊ณ ์ค๋์ MUI ์ค์ต์ ํ๋ ค๊ณ ํ๋ค.
'์ฝ๋์ ๋น ์ง๋ค' ๋ผ๋ ๋ธ๋ก๊ทธ์์ ์ข์ ์ค์ต ์๋ฃ๊ฐ ์๋ ๊ฒ ๊ฐ์์ ๊ทธ๋๋ก ๋ฐ๋ผํ๋ฉด์ ์ด๊ฒ ์ ๊ฒ ์ปดํฌ๋ํธ๋ฅผ UI๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฝ์ ํด๋ณด๋ ค๊ณ ํ๋ค.
์ด๋ฒ ์ฐ์ต์ ๋ฆฌ์กํธ ๊ฐ์๋ฅผ ๋ค์๋ ์ฝ๋ฉ์ ํ ์ค์ตํ์ผ์ MUI๋ฅผ ์ถ๊ฐํด์ ์ด๊ฒ์ ๊ฒ ์ง๋ณด๋ ค๊ณ ํ๋๋ฐ
์๋
๊นํ๋ธ ์๋๋ฅผ ํ๋๋ผ๋ ๋ ์ฑ์์ผ ํ๊ธฐ ๋๋ฌธ์..!
๐ธ MUI Material-UI๋?
๋ฆฌ์กํธ์๋ ์ธ์ง๋๊ฐ ๋์ ๋ถํธ์คํธ๋ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ง๋ง ์์ฆ์ Material-UI ๋ผ๊ณ ํ์๋ถ๋ค์ด ํ์ ์ ์ฒ์ ์๊ฒ ๋์๋ค. ์ญ์ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ํ์ด ๋นจ๋ฆฌ์ง๋๋ค. ์๋ ์๋ง ํด๋ ๋น์ฐํ ๋ถํธ์คํธ๋ฉ ์ด๋ค๊ณ ๋ฐฐ์ ๋๋ฐ ^^
Material-UI๋ ์ธ๊ณ์์ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๋ฆฌ์กํธ UI ํ๋ ์์ํฌ๋ผ๊ณ ํ๋ค.
์ฐ๋ฆฌ๊ฐ ์ฝ๋๋ฅผ ์์ฑํ๋ค๊ฐ ์ ๋ชจ๋ฅด๋ ๋ถ๋ถ์ ๊ตฌ๊ธ๋งํด์ ๋ค๋ฅธ ์ฌ๋์ ๋ธ๋ก๊ทธ์์ ์ฝ๋ ํ ๋ถ๋ถ์ ๋ณต์ฌ-๋ถ์ฌ๋ฃ๊ธฐ ํ๋ ๊ฒ ์ฒ๋ผ ๋ฏธ๋ฆฌ ๋์์ธํด ๋ง๋ค์ด ๋ ๋ค์ํ ๋ฒํผ, ํ ์ด๋ธ, ๋ฐฐ๋ ๋ฑ์ ์ฝ๋๋ฅผ ๋ ๋ผ์์ ๋ด ์ฝ๋ ์์ ๋ถ์ฌ ๋ฃ์ด ๋ง๋๋ ๊ฒ์ด UI๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
๋ค ๋ง๋ค์ด์ฃผ์ธ์.. npm ํจํค์ง๋ yarn์ผ๋ก ์ค์น๊ฐ ๊ฐ๋ฅํ๋ค.
styled-components์์๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ์ง๋ง, ์ด๋ฒ์๋ npm์ผ๋ก ์ค์นํด์ ํ๋ ์์ํฌ๋ฅผ ์ํฌํธํด์ ์ฌ์ฉํ๋ ค๊ณ ํ๋ค.
Installation - MUI
Install MUI, the world's most popular React UI framework.
mui.com
๐ธ MUI Material-UI ์ค์นํ๊ธฐ
๋จผ์ MUI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ค.
// with npm npm install @mui/material @emotion/react @emotion/styled // with yarn yarn add @mui/material @emotion/react @emotion/styled
๋๋ npm์ ์ฃผ๋ก ์ด์ฉํ๊ธฐ ๋๋ฌธ์ npm ๋ช ๋ น์ด๋ฅผ ํฐ๋ฏธ๋์ ๋ถ์ฌ๋ฃ์ด ์ค์นํ๋ค. (CDN๋ ๊ฐ๋ฅํ๋ค.)
๊ทธ๋ฆฌ๊ณ Roboto ๊ธ๊ผด๊ณผ ์์ด์ฝ๋ค์ ์ฌ์ฉํ๊ธฐ ์ํด ๊ณต์๋ฌธ์๊ฐ ์ ์ํ๋๋๋ก link ํ๊ทธ๋ฅผ public>index.html์ ์ถ๊ฐํ๋ค.
<!-- Roboto --> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" /> <!-- Material Icons --> <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" />
// with npm npm install @mui/icons-material // with yarn yarn add @mui/icons-material
์ฌ๊ธฐ์ ๋ถ์ฌ๋ฃ๊ฒ ๋ ์ปดํฌ๋ํธ๋ ๊ฐ๊ฐ API(์ฌ์ฉํ ๋ ์กฐ์ ํ ์ ์๋ ์กฐ๊ฑด๋ค)์ ์ ๊ณตํ๋๋ฐ props๋ className, attr๋ก ๊ฐ์ ๋๊ฒจ์ค ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ CSS๋ก ์ปดํฌ๋ํธ๋ฅผ ์์ ํด์ผ ํ๋ ๊ฒฝ์ฐ MUI์์ ์ ๊ณตํ๋ ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋๋ฐ ์ด๋ฅผ ์ํด์ ๋ณ๋์ ํจํค์ง๋ฅผ ํ๋ ๋ ์ค์นํด์ผ ํ๋ค.
// with npm npm install @mui/styles // with yarn yarn add @mui/styles
import ํ ๋ { makeStyles }๋ฅผ @mui/styles์์ import ํด์ค๋ค.
๊ธฐ๋ณธ CSS๋ฅผ ์ฌ์ฉํ ๋์ฒ๋ผ reset.css๋ฅผ ์ค์ ํ๊ณ ์ถ๋ค๋ฉด CssBaseline ํจํค์ง๋ฅผ import ํด์ค์ผ ํ๋ค.
import * as React from 'react'; import CssBaseline from '@mui/material/CssBaseline'; export default function MyApp() { return ( <React.Fragment> <CssBaseline /> {/* The rest of your application */} </React.Fragment> ); }
๐ธ MUI Material-UI ์ฌ์ฉํ๊ธฐ
๋ณ ๋ฌธ์ ์์ด ์ค์น๋์๋ค๋ฉด ์ฒ์์ผ๋ก ํ๋ฉด์ ๋ฒํผ ํ๋๋ฅผ ๋์๋ณด๋ ค๊ณ ํ๋ค.
App.js์ ๋ด๋ถ๋ฅผ ๊น๋ํ๊ฒ ์ง์๋ฒ๋ฆฌ๊ณ npm start๋ก ํ๋ฉด์ ๋ธ๋ผ์ฐ์ ์ ๋์ด๋ค.
import React from "react"; import './App.css'; function App() { return } export default App;
์ด ์ํ์์๋ ์๋ฌด๊ฒ๋ ์๋ ๋น ํ๋ฉด์ด ๋ฑ์ฅํ๋๋ฐ Button UI ์์ ๋ฅผ ๋ฐ๋ผํ๊ธฐ ์ํด MUI๋ฅผ import ํ๋ค.
Button ์ด๋ผ๋ ์ปดํฌ๋ํธ๋ฅผ ์ฐ๊ธฐ ์ํด์๋ MUI-Button์ Button ์ปดํฌ๋ํธ๋ฅผ importํด์ค์ผ ํ๋ค.
import * as React from "react"; import ReactDOM from "react-dom"; import Button from "@mui/material/Button"; import CssBaseline from "@mui/material/CssBaseline";
์๋ ์ปดํฌ๋ํธ๊น์ง ์ ๋ ฅํ๋ฉด ์ด๋ ๊ฒ ๋๋ค.
import * as React from "react"; import ReactDOM from "react-dom"; import Button from "@mui/material/Button"; import CssBaseline from "@mui/material/CssBaseline"; function App() { return ( <React.Fragment> <CssBaseline /> <Button variant="contained">Hello World</Button> </React.Fragment> ); } export default App;
์ด๋ฐ ๋ฒํผ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ ์ ์๋ค. props ๋ก ๋ค์ด๊ฐ variant๋ ๋ฒํผ์ ์ข ๋ฅ(๋์์ธ)์ธ๋ฐ ์๋์ ๊ฐ์ด Text, Contained, Outlined ์ธ ๊ฐ์ง์ ์กฐ๊ฑด์ด ์ ๊ณต๋๋ค.
์์ ๊ฐ์ด ๋ง๋ ๋ฒํผ ์ปดํฌ๋ํธ๋ฅผ ๋ณ๋๋ก ์ธ์ธํ๊ฒ ์์ ํ๊ณ ์ถ๋ค๋ฉด makeStyles ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
(์ด ๋ฐฉ์์ ๋ฆฌ์กํธ V5 ์์๋ถํฐ ๋ ๊ฑฐ์๊ฐ ๋์๋ค ๐ญ๐ญ)
๋ด์ผ์ MUI์์ ์ธ๋ถ CSS๋ฅผ ๋ค๋ฃจ๋ ๋ฒ๊ณผ (๊ทธ๋ฅ SCSS ์ ์ฉํด๋ ๋๋? ํ ์คํธํด๋ณด๋ App.css์ !important๋ก ๋ฐ์ด๋ฃ์ด๋ ๋ฌธ์ ์์ด ์ ์ฉ๋์๋ค.) ๋ฉ์ธ ํ๋ฉด ์ค ๋ก๊ทธ์ธ ํ๋ฉด์ ์ปดํฌ๋ํธ๋ก ์ง๋ด์ผ๊ฒ ๋ค.
Material UI ์คํ์ผ๋ง
Engineering Blog by Dale Seo
www.daleseo.com
MUI: A popular React UI framework
MUI is a simple and customizable component library to build faster, beautiful, and more accessible React applications. Follow your own design system, or start with Material Design.
mui.com
728x90'WEB Dev > ToyProject' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ