UI_DEV_Environment 之 StoryBook
写在前面
由于本文主要集中关注与工具使用,所以不可能完全介绍工具的所有功能,所以要想了解更多,可以自己去各自官方网站上查看。
什么是UI开发环境
UI开发环境专注于用户体验设计师与开发人员之间的协作(UI dev environments),为UI组件的快速迭代提供了综合环境。
通俗点来讲,目前主要应用于个项目中组件的测试、开发以及文档编写中,这样设计人员和开发人员可以通过组件预览的方式来指定设计规范。
目前可以使用的工具主要有:Storybook、React Styleguidist、Compositor和MDX。本文会重点介绍storybook
以及React Styleguidist
。
各工具之间的比较归纳
Tools | React/Angular/Vue | 上手程度 | 主题自定义 | 附加功能(插件) | 测试环境 |
---|---|---|---|---|---|
Storybook | ✔️ / ✔️ / ✔️ | 中等 | 简便、颜色变化 | 丰富(源码/viewport/backgrounds...) | 提供了各种测试案例 |
React Styleguidist | ✔️ / X / X | 简单 | 简便、颜色结构变化 | 无 | Enzyme、jest |
Compositor | ✔️ / X / X | 简单 | 暂不支持 | 无 | Enzyme、jest |
MDX | ✔️ / X / ✔️(Beta) | 简单 | 简便、可以完全自定义 | 一般(remark/rehype ) | Enzyme、jest |
StoryBook
storybook的界面清新脱俗,至少个人认为还是比较好看的,像下面这样:
同时,storybook可以更换主题,具体可以戳这里,更换的只是配色系统,结构方面改动的话可能有点困难。
storybook 可以支持多种语言,包括react
,vue
,angular
...等主流前端库。
storybook中的一个重要概念就是story
,翻译过来就是故事,不过可以通俗的理解为一个组件的一种状态。当然这个状态是你自己添加的,如果添加的故事越多,同时也就表明了你编写的组件复杂度就很高了,这时候你就可以考虑是否要拆分组件来使得组件的功能变得单一纯粹了,这样组件维护的成本才会变少,同时可用性也会更加高。
简单的入门
下面以一个React
小项目来练手,如果对Vue
以及Angular
感兴趣的童鞋,可以去官网了解一下,官方网站上有大量的例子以及新手教程。
Step 1: 创建一个项目名为stroybook
, 同时创建package.json
文件
mkdir stroybook
cd storybook
yarn init
填写你要初始化的信息,下一步。
Step2: 安装依赖
yarn add @storybook/react react react-dom babel-loader @babel/core --dev
Step3: 添加npm脚本
{
"scripts": {
"storybook": "start-storybook -p 6006",
"build-storybook": "build-storybook",
"serve": "yarn build-storybook && npx http-server ./storybook-static"
}
}
storybook
: 运行这个脚本会起一个本地服务器,监听在6006端口build-storybook
: 通过webpack
进行打包,生成静态文件serve
: 使用node服务运行静态文件
Step4: 创建配置文件,让storybook能够找到stories
import { configure } from '@storybook/react';
// 手动添加所有stories
function loadStories() {
require('../stories/index.js');
// You can require as many stories as you need.
}
/**
* 或者匹配指定文件夹下的所有stories
*
function loadStories() {
const req = require.context('../stories', true, /\.stories\.js$/);
req.keys().forEach(filename => req(filename));
}
*/
configure(loadStories, module);
Step5: 编写组件故事
import React from 'react';
import { storiesOf } from '@storybook/react';
import { Button } from '@storybook/react/demo';
storiesOf('Button', module)
.add('with text', () => (
<Button>Hello Button</Button>
))
.add('with emoji', () => (
<Button><span role="img" aria-label="so cool">
UI_DEV_Environment 之 StoryBook的更多相关文章
- storybook实践
很久之前就听说过storybook,一直想实践一下
- storybook配置之基本配置和webpack配置
默认配置 Storybook有一个默认的适合(suits)大型项目开发的webpack配置,假如你使用react app,他类似于创建一个react app的配置,并经过调整(tweaked ),使其 ...
- storybook构建vue组件
最近在研究业务型组件的使用,因为在单独开发组件的时候需要调试,所以为每一个组件都编写一个webpack开发环境,然后上传上去为了其他人可以直接使用又把webpack上传上去,这样会有两个问题: 1:每 ...
- 手动建立storybook
1. Add @storybook/react npm i --save-dev @storybook/react 2. Add react, react-dom, and babel-core np ...
- [React Storybook] Get started with Storybook for React
Storybook is a UI component development environment for React, Vue, and Angular. With that, you can ...
- 加薪攻略之UI组件库实践—storybook
目录 加薪攻略之UI组件库实践-storybook 一.业务背景 二.选用方案 三.引入分析 项目结构 项目效果 四.实现步骤 1.添加依赖 2.添加npm执行脚本 3.添加配置文件 4.添加必要的w ...
- Storybook 最新教程
Storybook 最新教程 Storybook is the most popular UI component development tool for React, Vue, and Angul ...
- 使用react搭建组件库:react+typescript+storybook
前期准备 1. 初始化项目 npx create-react-app react-components --template typescript 2. 安装依赖 使用哪种打包方案:webpack/r ...
- 2017 年值得一瞥的 JavaScript 相关技术趋势
跨年前两天,Dan Abramov在Twitter上提了一个问题: JS社区毫不犹豫的抛出了它们对于新技术的预期与期待,本文内容也是总结自Twitter的回复,按照流行度降序排列.有一个尚未确定的小点 ...
随机推荐
- 【nodejs原理&源码赏析(4)】深度剖析cluster模块源码与node.js多进程(上)
[摘要] 集群管理模块cluster浅析 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 概述 cluster模块是node.js中用于实现和管理 ...
- 技术谈 | SDN 和 NFV 之间的爱与恨
部分开发者经常混淆 SDN 和 NFV,无法看清他们的关系.今天,小编搬出华为技术专家的一篇大稿,给大家掰扯掰扯:SDN 和 NFV 究竟是什么关系. ----文/闫长江 什么是 SDN 回到基本的概 ...
- SpringCache自定义过期时间及自动刷新
背景前提 阅读说明(十分重要) 对于Cache和SpringCache原理不太清楚的朋友,可以看我之前写的文章:Springboot中的缓存Cache和CacheManager原理介绍 能关注Spri ...
- BOM对象学习
location,history,screen <!DOCTYPE html> <html> <head> <meta charset="utf-8 ...
- Python文件头注释的含义,你肯定不懂
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:冰火梦幻 本文档描述了Python语言文件头里典型注释的含义. 1. ...
- 基于RT-Thread的人体健康监测系统
随着生活质量的提高和生活节奏的加快,人们愈加需要关注自己的健康状况,本项目意在设计一种基于云平台+APP+设备端的身体参数测试系统,利用脉搏传感器.红外传感器.微弱信号检测电路等实现人体参数的采集,数 ...
- java发送邮件基础方法(另附部分主流邮箱服务器地址、端口及设置方法)
java发送邮件基础方法,可通过重载简化参数 import java.io.File; import java.io.UnsupportedEncodingException; import java ...
- Java开发数据库设计的14个技巧,你知道几个?
1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对 ...
- 分享一下HttpWatch pro 10.X 支持win10
今天开始学Servlet,第一次安的是10的普通版,但发现功能太过简单不够学习使用,之后换了9的pro版本,发现单击"Record"按钮启动网络监听,会收到"ERROR_ ...
- 区块链学习——HyperLedger-Fabric v0.6环境搭建详细教程
v0.6 的架构相对简单,适合作为实验或学习来使用. 一.环境准备 一台云服务器(笔者使用的是阿里云的1核-2GB内存) Go语言环境 Docker安装 docker-compose安装 二.环境搭建 ...