티스토리 뷰
Storybook 이란?
SPA 개념이 나오면서 페이지 단위가 아닌 컴포넌트 단위로 개발 방식이 바뀌었고
최근에 유행하는 Vue.js, React, Angular 등이 이런 개발을 용이하게 한다.
웹 화면의 모든 UI 구성 요소들을 컴포넌트로 보면 되는데
예를 들어 버튼 같은 컴포넌트 개발 시 만들어지는걸 view 내부에서 확인하면서 고쳐가기가 어렵다. (하면 할 순 있다)
그래서 이런 컴포넌트의 특성을 고려해서 개발할 수 있도록 지원하는 오픈소스 라이브러리가 Storybook 이다.
Vue.js 에서 적용하기
Dependency 추가하기
storybook 라이브러리와
vue 관련된 정보를 우아하게 보여주기 위한 라이브러리를 추가한다.
npm install @storybook/vue npm install storybook-addon-vue-info |
Storybook 디렉토리 추가
아래와 같이 프로젝트 최상위 위치 (package.json 과 같은 레벨) 에 .storybook 디렉토리 추가
여기에 storybook 관련된 config 파일 위치
npm script 등록
package.json 에서 관리되는 npm script 에 추가
"scripts": { |
Storybook config 추가
.storybook 디렉토리에 config.js 파일을 추가한다.
아래는 components의 custom 디렉토리에 있는 컴포넌트들을 추가하기 위한 코드다.
import {configure, addDecorator} from '@storybook/vue'; import {withInfo} from 'storybook-addon-vue-info'; function loadStories() { const load = req => req.keys().map(req); load(require.context('../view/components/custom', true, /.story.js$/)); } addDecorator(withInfo); configure(loadStories, module); |
addons.js 파일 추가
import 'storybook-addon-vue-info/lib/register' |
webpack.config.js 파일 추가
webpack.config.js 파일에 storybook을 위한 웹팩 설정 필요
const path = require('path'); |
컴포넌트 모듈을 위한 story 파일 추가
가볍게 버튼을 추가해보자.
props 에 color 와 버튼의 메시지를 받을 수 있게 해놓고 해당 컴포넌트를 story 에 추가해보자.
|
그리고 해당 컴포넌트가 있는 디렉토리에 custom.story.js 파일을 추가하자.
위 버튼에서 받는 props인 message와 color를 default 값과 다르게 주었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import {storiesOf} from '@storybook/vue';
import 'storybook-addon-vue-info/lib/register';
import Button from './Button';
storiesOf('Custom', module)
.add('Button', () => ({
components: { CustomButton: Button },
template: `<custom-button message='Hello' color='error'/> `,
}),
{
info: {}
});
|
아래와 같이 error 에 정의된 빨간색 컴포넌트로 바뀌는 걸 볼 수 있음.
위 template에서 컴포넌트 사용 코드를 집어 넣으면 view에 적용 전까지 컴포넌트 개발을 하기 용이하다.
그 아래 Info(Vue) 탭에는 소스 사용법과 props 등 개발에 필요한 정보들이 다 나와있다. (addon)
컴포넌트마다 위와 같이 template이나 각종 정보를 입력해야 하는 불편함이 있지만,
자신이 만든 컴포넌트를 어떻게 사용하는지 설명해주는 것 보단 공유 차원에선 생산성이 훨씬 더 좋다.
혼자가 아니고 협업 및 생산성을 고려해서 Storybook 적용을 권장해본다..
※ 아래 공식 가이드 참고
https://storybook.js.org/docs/guides/guide-vue/
'Programming & Solution > Vue.js' 카테고리의 다른 글
Vue.js 네비게이션 가드 관련 이슈 (0) | 2021.03.14 |
---|---|
[Vue.js] Excel Data를 Clipboard에 복사 후 JSON Data로 (2) | 2019.09.10 |
[Vue.js] Excel 파일 JSON Data로 Parsing (1) | 2019.09.10 |
- Total
- Today
- Yesterday
- kubernetes
- architecture
- white paper
- leetcode
- Java
- DP
- 백준
- 암호화폐
- Blockchain
- vuejs
- SpringBoot
- Spring
- Nealford
- 카르다노
- 블록체인
- 사토시 나가모토
- 비트코인
- 동적계획법
- Bitcoin
- Bruteforce
- excel parsing
- k8s
- 알고리즘
- CARDANO
- gRPC
- Vue.js
- Redis
- 스프링
- 스프링 시큐리티
- 아키텍처
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |