디자인 시스템: 구성 요소의 조합 철학
7079 단어 reactcssjavascript
디자인 시스템을 구성 요소로 구체화한 팀에게 가장 큰 도전은 회사의 신속한 발전을 보여주고 제품 팀에게 구성 요소 가치를 계속 제공하는 것이다.한 조직의 개발자는 제품이 끊임없이 발전하고 있기 때문에 실현을 초월하기를 희망하지만, 그들 중 일부는 실현만을 따르려고 한다.
이러한 환경에서 매우 큰 도전이 있다. 디자인 분야의 디자인 시스템 팀은 서로 다른 방법을 취해 디자인을 특정한 구성 요소 사례에 제한하거나 기초(예를 들어 색깔, 레이아웃, 간격, 격자, 레이아웃...)만 만들 수 있다.아니면 이 두 가지 상황을 동시에 만족시킬 수도 있다.모든 상황은 결점과 장점이 있기 때문에, 당신은 모든 상황이 어떻게 당신의 조직 환경에서 더욱 잘 일하는지 이해해야 한다.
다른 한편, 구성 요소 라이브러리의 개발자는 다른 방법을 취할 수 있다.
이 점을 바로잡고 처리하는 것은 매우 복잡하지만, 우리는 어떻게 해야 합니까?우리 회사Liferay는 과거에 디자인 시스템에서 고정 구성 요소를 따르는 방법에 따라 개발자가 예상을 훨씬 초과할 수 없도록 했다. 300여 명의 엔지니어와 여러 개의 제품 팀을 보유한 회사 환경에서 이것은 잘못된 결정으로 인해 그룹의 채용률이 비교적 낮았다. 원인은 다음과 같다.
우리는 이것이 나쁜 결정이라는 것을 알고 이듬해 우리는 신속하게 다른 방법으로 방향을 바꿨다.우리는 구성 요소 라이브러리에서 유연성과 전용 구성 요소 사이의 균형을 실현하는 방법을 채택했다.
이 문제를 처리하는 것이 더 쉬운 것 같지만, 우리는 어떻게 이 생각을 실현합니까?Dell은 여러 계층의 API 라이브러리라고 하는 어셈블리를 블렌드하는 방법을 사용합니다.
다중 계층 API 라이브러리
다중 계층 구성요소는 다음과 같은 두 가지 방법으로 구성요소를 제공합니다.
저수준
하단 구성 요소는 하단 구성 요소를 구축하는 작은 블록과 같은 조합을 따른다.
<ClayDropDown />
<ClayDropDown.Action />
<ClayDropDown.Item />
<ClayDropDown.ItemList />
<ClayDropDown.Search />
높은 수준
고급 구성 요소도 조합을 따를 수 있지만, 더욱 구체적인 구성 요소일 수도 있고, 많은 단체에서 공통점을 가지고 있다.
<ClayButtonWithIcon />
<ClayCardWithHorizontal />
<ClayCardWithNavigation />
<ClayDropDownWithItems />
고급 어셈블리는 유지 보수는 줄어들지만 사용 가능한 API의 표면은 늘어날 수 있는 하위 레벨로 구성됩니다.이렇게 하면 더 많은 사람들이 이런 방법을 사용하고 다양한 품격의 팀을 참여시킬 수 있는 혼합 방법을 생각해 낼 수 있다는 장점이 있다.
당신은 우리composition approach in our documentation in our component library에 대한 더 많은 정보를 읽을 수 있습니다.
이런 방법의 결과는 우리의 부품이 서로 다른 팀과 서로 다른 환경에서의 제품에서 고도로 채용되어 팀이 제품을 더욱 빨리 납품하고 그들을 더욱 즐겁게 하도록 돕는 것이다.
이것은 사용자 차원의 문제를 해결한 것 같지만, 우리는 저급과 고급 구성 요소를 어떻게 구분하고 구축하며 구축하는지에 관한 몇 차례의 토론에 참여했다.이 방면에 대한 나의 생각들은 이론이나 개념성을 따르려는 시도와 시간의 추이에 따라 조정하려는 시도와는 다르다.
추이 이론
이것을 장미효과 이론과 혼동하지 마라.
꼬리 이론은 양쪽 또는 꼬리 부분의 밧줄 규범으로 한쪽 끝에 두 가지 유형의 조립품, 저급과 고급을 배치할 수 있다.그들 사이의 거리는 커다란 고통이나 큰 성공을 초래할 수 있다. 이것이 전부 혹은 전부다!
이 그림은 가설적인 것으로, 여기에는 실제 데이터를 사용하지 않았지만, 내가 장기적으로 구성 요소 라이브러리를 사용한 경험을 바탕으로 한다.
몇 가지 특별한 것들: 단기와 장기적으로 우리는 아주 좋은 저급 업무를 할 수 있고 변화가 거의 없을 것이다. 이것은 우리에게 이상적인 장면이다. 그러나 중간에 우리는 노력과 개발 경험을 잃을 수 있다. 이것은 사람들이 라이브러리 구성 요소를 사용하고 힘들이지 않고 구축하는 관건이다.
시간의 추이에 따라 매우 구체적인 구성 요소는 짧은 시간 안에 많은 변화가 발생할 수 있다. 어느 때 우리는 구성 요소의 팽창 원인을 낮출 수 밖에 없다. 이것은 어떤 구성 요소에서 발생할 수 있지만 사람들이 그것을 사용하기 전에 우리는 유지보수 문제와 끊임없이 갱신하는 투쟁에 직면하게 될 것이다.우리는 이러한 구성 요소의 사용 수명을 연장하고 유지 보수를 줄일 수 있으며, 이렇게 하면 구성 요소 이외의 개선이나 구축을 걱정할 수 있다.
내가 부품을 밧줄의 중간에 점점 가까워지게 밀면 양쪽 사이의 거리가 줄어든다는 것은 우리가 양쪽의 통증을 줄였지만 가까워질수록 뚜렷한 차이가 없고 혼란을 초래할 수 있다는 것을 상상해 보자.매번 우리가 높은 수준의 사람들에게 유연성을 주고 그들을 밧줄 사이로 밀어내면 체험이 더욱 좋아지고 통증도 줄어든다.
우리는 쌍방에 가입하고 싶지 않지만 끝부분은 극단적이고 극단은 대가가 있다. 우리는 거리를 유지하고 싶을 뿐이다. 우리는 고위층 부품에 유연성을 제공하고 저층 부품의 유연성을 낮춰야 한다.
이 점을 감안하면 우리는 다음과 같이 할 수 있다.
비록 가장 큰 장점은 높은 차원에 있지만 낮은 차원은 영향을 받을 것이다. 왜냐하면 우리가 그의 자연 유연성을 박탈하면 시간의 추이에 따라 변화량을 약간 증가시키고 그것에 대한 유지도 증가하지만 이것은 필요한 것이다. 왜냐하면 우리는 반드시 균형을 만들어야 하기 때문에 둘 사이의 차이가 뚜렷하지 않다.
나는 이 이론을 견지하는 것이 비교적 쉽다고 믿는다.이해하게 되면 어셈블리에 더 큰 유연성이 필요한 시기나 API를 유지 관리해야 하는 시기를 자연스럽게 결정할 수 있습니다.
Github을 통해 액세스할 수 있는 Liferay 구성 요소 라이브러리는 오픈 소스입니다.
우리의 Github 저장소는 매우 재미있는 생각과 강연으로 가득 차 있다.우리의 문제와 관계를 탐색하다🙂.
인사해!👋 !
Reference
이 문제에 관하여(디자인 시스템: 구성 요소의 조합 철학), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/matuzalemsteles/design-system-compositional-philosophy-of-components-1cc4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)