취업 지원 중 한 회사에서, "Ant Design"을 활용하여 UI를 스타일링 하라는 과제물을 받았었다.
디자인 라이브러리는 Bootstrap, Material UI 등 많이 들어보았으나, 학원에서는 기본기를 다지기를 더 원했어서 사용해볼 기회가 없었었다.
좋은 기회로 한번 체험 해보게 되어 사용기를 적어보고자 한다.
관리자 페이지를 만들기에 적합한 디자인 라이브러리 중 하나로 중국을 주축으로 많은 국가에서 사용하는 라이브러리다.
참고) 디자인 라이브러리 사용이 처음이여서 어떻게 보면 antd의 장점이 아닌, 디자인 라이브러리의 장점으로 보일 수도 있는 점 양해 부탁드립니다.
(AntD만의 단점인지는 잘 모르겠지만) Less
기반이여서 styled-components
와의 호환이 너무 좋지 않았다.
오히려 styled-component
로 오버라이딩을 일일이 해야되어서 코드 양이 늘어나고.비효율적인 면이 좀 많았다. (근데 생각해보니까 필요한 부분만 less로 처리해도 좋지 않았을까 싶다)
➡️ MUI 같은 경우 styled-components로도 호환이 잘 되는 것 같아 해당 전처리기를 사용하는 사람들은 MUI가 더 편하지 않을까 싶다.
<NavWarpper>
<CartLink to="/cart">
<ShoppingCartOutlined />
</CartLink>
<StyledMenu style={menuStyle} theme="dark" mode="horizontal">
<Menu.Item>
<NavTitle to="/home">Home</NavTitle>
</Menu.Item>
<Menu.Item>
<Link to="/beerlist">Beer List</Link>
</Menu.Item>
</StyledMenu>
</NavWarpper>
예를 들어 antd의 navigation component를 활용하면 큰 스타일링 없이 뚝딱 네비게이션 바를 만들 수 있지만..
const NavWarpper = styled.div`
width: 80%;
margin: 0 auto;
`;
const NavTitle = styled(Link)`
float: left;
color: #fff;
font-size: 25px;
font-weight: 700;
`;
const StyledMenu = styled(Menu)`
.ant-menu-item {
&:hover {
background-color: #f3b9cc !important;
}
}
.ant-menu-item-selected {
background-color: #f3b9cc !important;
font-weight: 700;
}
`;
const CartLink = styled(Link)`
float: right;
color: #fff;
font-size: 25px;
&:hover {
cursor: pointer;
color: #fff;
}
`;
styled-components
로 테마 컨트롤이 힘들어 일일이 오버라이딩 해주게 되어 오히려 비효율적으로 작업하게 되었다. craco
를 활용하여 설정을 변경해주면 물론 테마 변경이 가능하지만..큰 규모의 작업을 진행하지도 않는데 너무 이것저것 설치를 많이하는게 아닌가..라는 생각이 들어서 정이 그렇게까지 많이 가진 않는다.
다른 UI 라이브러리를 사용하면 이정도로 config니 뭐니 복잡해질 필요가 없으니 아무래도 좀..사용이 꺼려진다.
이벤트 컨트롤이 제한적이다.
버튼 컴포넌트의 경우 onclick이벤트 정도나 사용이 가능하다.
antd에서 제공해주는 이벤트 외의 이벤트를 사용하기 위해 div를 사용하여 감싸주어 처리했는데..이게 맞나 싶다. 오히려 코드가 더러워지기에 썩 반갑지는 않았다.
아무래도 사용한 경험이 짧아 십분 활용하지 못하는 것 같기도 하다. (아래에 작성했지만)허나 조금 아쉬운 것은, 문서가 조금 더 디테일하게 작성되어있었다면 초보가 응용하기에도 좋지 않았을까 싶다.
2% 부족한 문서
styled-components
만 사용하고 싶은 경우라면 조금 고민해보는게 좋지 않을까 싶다..차라리 MUI가 좋지 않을까 싶다.styled-components
와 함께 사용하기 편리해보여 눈길이 조금 가고 있어..한번 사용해보고자 한다. (다음에 시간 남으면 사용해봐야지..☺️)