51
Component Driven Development with Storybook Chris Foster

Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Component Driven Development with StorybookChris Foster

Page 2: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

CDD: The backstory

Page 3: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

CDD: The backstory

Page 4: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

CDD: The backstory

Page 5: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

CDD: The backstory

Page 6: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

CDD: The backstory

Page 7: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

CDD: The backstory

Page 8: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

What are components?

Page 9: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

What are components?

Page 10: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

How do we normally build an app?

Page 11: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Component Driven Development

Page 12: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

The CDD Workflow

1. Build each component

2. Create component library

3. Combine components

Page 13: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Storybook is a rich tool for exploring and

building component libraries

It supports most popular

Javascript frameworks, and is

growing extensively in industry

Page 14: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story
Page 15: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story
Page 16: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Let’s get started!

# Create our application:npx create-react-app democd demo

# Add Storybook:npx -p @storybook/cli sb init

Page 17: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

npm start

Page 18: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

npm test

Page 19: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

npm run storybook

Page 20: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Demo: Task Component & Story

Page 21: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefits of Component Driven Development

Page 22: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefit One: Focus Your Development

Page 23: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefit One: Focus Your Development

Manipulating your whole app is a waste of time

Certain states are difficult to achieve in development

Page 24: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefit One: Focus Your Development

Manipulating your whole app is a waste of time

Certain states are difficult to achieve in development

CDD isolates the component you’re really building

Page 25: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefit Two: Increase UI Coverage

Page 26: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefit Two: Increase UI Coverage

Traditional development can leave state “blind spots”

Page 27: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefit Two: Increase UI Coverage

Traditional development can leave state “blind spots”

CDD encourages enumerating all component states

You can confidently put new components into production

Page 28: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefit Three: Receive Targeted Feedback

Page 29: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefit Three: Receive Targeted Feedback

Developers can deploy their Storybook easily and rapidly

Page 30: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefit Three: Receive Targeted Feedback

Developers can deploy their Storybook easily and rapidly

Sharing a proposed UI change is as easy as a URL

Focus conversations on one single component at a time

Page 31: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefit Four: Build a component library

Page 32: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefit Four: Build a component library

CDD encourages high quality, robust components

Better components are more reusable components

Page 33: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefit Four: Build a component library

CDD encourages high quality, robust components

Better components are more reusable components

Supercharge code reuse within your organization

Use your stories to generate detailed documentation

Page 34: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefit Five: Parallelize development

Page 35: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefit Five: Parallelize development

Split work across components -- not pages

Page 36: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefit Five: Parallelize development

Split work across components -- not pages

Mocks. Never be blocked by the backend team again!

Page 37: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefit Five: Parallelize development

Split work across components -- not pages

Mocks. Never be blocked by the backend team again!

Provide clean, complete iterations to stakeholders earlier

Page 38: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefit Six: Test Visually

Page 39: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefit Six: Test Visually

Easily validate your entire user interface at a glance

Page 40: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Benefit Six: Test Visually

Easily validate your entire user interface at a glance

Programmatically validate previously difficult UI code

Storybook integrates with powerful automated testing plugins

Page 41: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Exploring the ecosystem

Page 42: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Knobs

Page 43: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Responsive Design

Page 44: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Storybook your email templates!

Page 45: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

TDD Integration

Page 46: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Story Shots

Page 47: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Easy visual regression checks

Page 48: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Built-in Auto-documentation with DocsPage

Page 49: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Summary

● CDD is a powerful paradigm for building user interfaces

● Storybook is a feature-rich component explorer

Combined, they’re a new, better way to build frontend apps!

Page 50: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Source code: https://github.com/chrisfosterelli/cdd-with-storybook

Learn Storybook: https://www.learnstorybook.com/

Do you use Storybook right now, or want to? Let’s chat!

https://twostoryrobot.com

@chrisfosterelli

Thanks!

Page 51: Component Driven Development · npx create-react-app demo cd demo # Add Storybook: npx -p @storybook/cli sb init. npm start. npm test. npm run storybook. Demo: Task Component & Story

Sourceshttps://dev.to/giteden/a-guide-to-component-driven-development-cdd-1fo1

https://blog.hichroma.com/component-driven-development-ce1109d56c8e

https://www.learnstorybook.com/react/en/get-started

https://addyosmani.com/first/

https://fontawesome.com

https://github.com/mthuret/storybook-addon-specifications

https://github.com/storybookjs/storybook/tree/master/addons/knobs