SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
Line Entry의
Atomic Design 적용기
& ,
목 차
Atomic Design 을 도입한 이유
Atomic Design 의 5단계
Atomic Design 적용하기
Atomic Design 의 효율을 높이기 위한 방법
작업 후기
Atomic Design을 도입한 이유
기존의 마크업 방식
AtomicDesign을 도입한 이유
컴포넌트 단위의 마크업
AtomicDesign을 도입한 이유
기준
ㅁㅁㅁㅁ
) ,( .
Atomic Design
AtomicDesign을 도입한 이유
Atomic Design의 5단계
ATOMS
label
input[type=“text”]
button
AtomicDesign의 5단계
MOLECULES
AtomicDesign의 5단계
ORGANISM
AtomicDesign의 5단계
TEMPLATES
AtomicDesign의 5단계
PAGES
AtomicDesign의 5단계
Atomic Design적용하기
ATOMS MODULES TEMPLATES
AtomicDesign적용하기
ATOMS
AtomicDesign적용하기
web
components
atom1
index.js
index.stories.js
…
module1
index.js
…
index.stories.js
atoms
modules
templates
AtomicDesign적용하기
Atomic Design
. -
import React from 'react';
import PropTypes from 'prop-types';
import styled from 'styled-components';
const Button = styled.button`
width: 160px;
height: 60px;
background-color: ${(props) => props.theme.$default_green};
border-radius: 8px;
border: 1px solid ${(props) => props.theme.$default_green};
font-size: 20px;
font-weight: bold;
color: ${(props) => props.theme.$default_green};
line-height: 56px;
&:hover {
border-color: #03cf5d;
color: #fff;
}
`;
)
AtomicDesign 효율 높이기
1 Styled-Component(함수형 컴포넌트)
- . 1 2
$(props) => props.cancel && `
backgrkound-color: #666;
color: #666;
&:hover {
border-color: #666;
}
`;
const WrapButton = (props) => {
const { children } = props;
return (
<Button {...props}>{children}</Button>
);
};
export default WrapButton;
).
AtomicDesign 효율 높이기
<WrapButton>저장하기</WrapButton>
<WrapButton cancel>취소하기</WrapButton>
. - . ).
Styled-Component(함수형 컴포넌트)
3
const Button = styled.button`
background-color: ${(props) => props.BgColor ? props.BgColor : '#333’};
...
`;
const FormBtnBox = (props) => {
const { BgColor, children } = props;
return (
<Button BgColor={BgColor}>{children}</Button>
);
};
export default FormBtnBox;
)-
AtomicDesign 효율 높이기
<FormBtnBox BgColor="#03cf5d">저장하기</FormBtnBox>
<FormBtnBox>취소하기</FormBtnBox>
-. - )-
1 Styled-Component(함수형 컴포넌트)
4 -1
import React from 'react';
import PropTypes from 'prop-types';
import styled from 'styled-components';
import breakpoint from 'styled-components-breakpoint';
const ModalDsc = styled.p`
display: block;
text-align: center;
font-size: 24px;
color: ${(props) => props.theme.gray1};
line-height: 40px;
${breakpoint('tablet')`
font-size: 15px;
line-height: 26px;
`}
`;
)
AtomicDesign 효율 높이기
. Styled-Component(함수형 컴포넌트)
)1 G
const theme = {
breakpoints {
tablet: 768,
},
default_green: '#03cf5d',
default_gray: '#333',
...
};
...
export default theme;
1 ).)
AtomicDesign 효율 높이기
import React from 'react';
import { ThemeProvider, createGlobalStyle } from 'styled-components';
import theme from './theme';
const withGlobalStyles = (storyFn) => {
return (
<ThemeProvider theme={theme}>
<React.Fragment>
{storyFn()}
</React.Fragment>
</ThemeProvider>
);
};
export default withGlobalStyles;
1 1 )
Styled-Component(함수형 컴포넌트)
Styled-Component(함수형 컴포넌트)
1
import { configure, addDecorator } from '@storybook/react';
import withGlobalStyle from '../src/styles/WithGlobalStyle';
const req = require.context(
'../src/components',
true,
/.stories.(js|jsx)$/,
);
function loadStories() {
req.keys().forEach(filename => {
req(filename)
})
};
addDecorator(withGlobalStyle);
configure(loadStories, module);
1./ .. . )
AtomicDesign 효율 높이기
2 ) I
AtomicDesign 효율 높이기
) Storybook의 사용
AtomicDesign 효율 높이기
storiesOf('Atoms/CommonModalTextareaBox', module)
.add('기본', () => <CommonModalTextareaBox />)
.add('포커스 상태', () => <CommonModalTextareaBox focus={true} />)
.add('에러 메시지', () => <CommonModalTextareaBox error={'한글자 이상 적어주세요.'} />)
...
);
12/ //- /.) 1
Storybook의 사용
) Storybook의 사용
2 - .
AtomicDesign 효율 높이기
Official Addons Info Addon
- Storybook의 사용
)2 3 .
AtomicDesign 효율 높이기
I
I
.
<WrapperStyle>
<HeaderBoxWrapStyle>
<Header {...props} />
</HeaderBoxWrapStyle>
<ContainerBoxStyle>
<ContentBoxStyle>
<ContentInner />
</ContentBoxStyle>
</ContainerBoxStyle>
<FooterBoxWrapStyle>
<Footer />
</FooterBoxWrapStyle>
</WrapperStyle>
U J
const DownloadBtnStyle = styled.a`
display: block;
width: 130px;
height: 100px;
background-color: ${(props) => props.theme.default_green};
text-align: center;
color: #fff;
span {
font-size: 12px;
letter-spacing: -0.12;
line-height: 18px;
}
`;
L
c t . 6
l
l
a R , 6
S 6
E E . e 6
!

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

서비스 운영을 위한 디자인시스템 프로젝트
서비스 운영을 위한 디자인시스템 프로젝트서비스 운영을 위한 디자인시스템 프로젝트
서비스 운영을 위한 디자인시스템 프로젝트
 
디자인 시스템 디자인하기
디자인 시스템 디자인하기디자인 시스템 디자인하기
디자인 시스템 디자인하기
 
2조 프로젝트 보고서 김동현
2조 프로젝트 보고서 김동현2조 프로젝트 보고서 김동현
2조 프로젝트 보고서 김동현
 
UX/UI design process - Studio CreativeMe
UX/UI design process - Studio CreativeMeUX/UI design process - Studio CreativeMe
UX/UI design process - Studio CreativeMe
 
Wordpress essential training - Wordpress Presentation PPT
Wordpress essential training - Wordpress Presentation PPTWordpress essential training - Wordpress Presentation PPT
Wordpress essential training - Wordpress Presentation PPT
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
 
Design System - Fail, Learn, Build, Test
Design System - Fail, Learn, Build, TestDesign System - Fail, Learn, Build, Test
Design System - Fail, Learn, Build, Test
 
UI/UX foundations - Intro to Design
UI/UX foundations - Intro to DesignUI/UX foundations - Intro to Design
UI/UX foundations - Intro to Design
 
UI/UX Courses
UI/UX Courses UI/UX Courses
UI/UX Courses
 
Ui design
Ui designUi design
Ui design
 
What is UX?
What is UX?What is UX?
What is UX?
 
React vac pattern
React vac patternReact vac pattern
React vac pattern
 
UX is not UI!
UX is not UI!UX is not UI!
UX is not UI!
 
Building a Design System: A Practitioner's Case Study
Building a Design System: A Practitioner's Case StudyBuilding a Design System: A Practitioner's Case Study
Building a Design System: A Practitioner's Case Study
 
Design System 101
Design System 101Design System 101
Design System 101
 
[UX Series] 1 - UX Introduction
[UX Series] 1 - UX Introduction[UX Series] 1 - UX Introduction
[UX Series] 1 - UX Introduction
 
UI UX Introductory session
UI UX Introductory sessionUI UX Introductory session
UI UX Introductory session
 
UI vs UX workshop
UI vs UX workshopUI vs UX workshop
UI vs UX workshop
 
16 ui ux design in the daily basis
16 ui ux design in the daily basis16 ui ux design in the daily basis
16 ui ux design in the daily basis
 
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
 

Ähnlich wie Line Entry의 Atomic Design 적용기

Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
yongwoo Jeon
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
Jaeseung Ha
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
탑크리에듀(구로디지털단지역3번출구 2분거리)
 

Ähnlich wie Line Entry의 Atomic Design 적용기 (20)

Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
 
Angular2를 위한 컴포넌트 분석과 개발
Angular2를 위한 컴포넌트 분석과 개발Angular2를 위한 컴포넌트 분석과 개발
Angular2를 위한 컴포넌트 분석과 개발
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
 
조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]
조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]
조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]
 
Meteor React Tutorial 따라하기
Meteor React Tutorial 따라하기Meteor React Tutorial 따라하기
Meteor React Tutorial 따라하기
 
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 TestOkjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
 
3D Modeling
3D Modeling3D Modeling
3D Modeling
 
3D 모델러 ADDIN 개발과정 요약
3D 모델러 ADDIN 개발과정 요약3D 모델러 ADDIN 개발과정 요약
3D 모델러 ADDIN 개발과정 요약
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
Enterprise Java web Deployment Strategy
Enterprise Java web Deployment StrategyEnterprise Java web Deployment Strategy
Enterprise Java web Deployment Strategy
 
StarUML NS Guide - Design
StarUML NS Guide - DesignStarUML NS Guide - Design
StarUML NS Guide - Design
 
Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기
 
Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기
 
Hoons닷넷 좌충우돌 10년, 그리고 새로운 패러다임
Hoons닷넷 좌충우돌 10년, 그리고 새로운 패러다임Hoons닷넷 좌충우돌 10년, 그리고 새로운 패러다임
Hoons닷넷 좌충우돌 10년, 그리고 새로운 패러다임
 
ModelSim 기초 매뉴얼
ModelSim 기초 매뉴얼ModelSim 기초 매뉴얼
ModelSim 기초 매뉴얼
 
알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web Animations알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web Animations
 
Asp.net Razor
Asp.net Razor Asp.net Razor
Asp.net Razor
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
 
Image styling with_web_components
Image styling with_web_componentsImage styling with_web_components
Image styling with_web_components
 
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
 

Mehr von NAVER Engineering

Learning Disentangled Representation for Robust Person Re-identification
Learning Disentangled Representation for Robust Person Re-identificationLearning Disentangled Representation for Robust Person Re-identification
Learning Disentangled Representation for Robust Person Re-identification
NAVER Engineering
 

Mehr von NAVER Engineering (20)

200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)
200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)
200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)
 
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
 
200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기
200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기
200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기
 
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
 
200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출
200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출
200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출
 
200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우
200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우
200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우
 
200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...
200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...
200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...
 
200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법
200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법
200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법
 
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
 
200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기
200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기
200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
 
200819 NAVER TECH CONCERT 06_놓치기 쉬운 안드로이드 UI 디테일 살펴보기
200819 NAVER TECH CONCERT 06_놓치기 쉬운 안드로이드 UI 디테일 살펴보기200819 NAVER TECH CONCERT 06_놓치기 쉬운 안드로이드 UI 디테일 살펴보기
200819 NAVER TECH CONCERT 06_놓치기 쉬운 안드로이드 UI 디테일 살펴보기
 
200819 NAVER TECH CONCERT 04_NDK로 안드로이드에 C++ 끼얹기
200819 NAVER TECH CONCERT 04_NDK로 안드로이드에 C++ 끼얹기200819 NAVER TECH CONCERT 04_NDK로 안드로이드에 C++ 끼얹기
200819 NAVER TECH CONCERT 04_NDK로 안드로이드에 C++ 끼얹기
 
200819 NAVER TECH CONCERT 02_안드로이드의 '안'자도 몰랐던 나는 어떻게 안드로이드 개발자가 되었을까?
200819 NAVER TECH CONCERT 02_안드로이드의 '안'자도 몰랐던 나는 어떻게 안드로이드 개발자가 되었을까?200819 NAVER TECH CONCERT 02_안드로이드의 '안'자도 몰랐던 나는 어떻게 안드로이드 개발자가 되었을까?
200819 NAVER TECH CONCERT 02_안드로이드의 '안'자도 몰랐던 나는 어떻게 안드로이드 개발자가 되었을까?
 
200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수
200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수
200819 NAVER TECH CONCERT 01_100만 달러짜리 빠른 앱을 만드는 비법 전수
 
Apache Nemo
Apache NemoApache Nemo
Apache Nemo
 
Redux
ReduxRedux
Redux
 
Learning Disentangled Representation for Robust Person Re-identification
Learning Disentangled Representation for Robust Person Re-identificationLearning Disentangled Representation for Robust Person Re-identification
Learning Disentangled Representation for Robust Person Re-identification
 
An expanding and expansive view of computing research
An expanding and expansive view of computing researchAn expanding and expansive view of computing research
An expanding and expansive view of computing research
 
새로운 웹 스타일링, 안 본 사람 없게 해주세요
새로운 웹 스타일링, 안 본 사람 없게 해주세요새로운 웹 스타일링, 안 본 사람 없게 해주세요
새로운 웹 스타일링, 안 본 사람 없게 해주세요
 

Line Entry의 Atomic Design 적용기