[程序系列翻譯] Storybook-寫故事

這是Storybook翻譯系列第二篇,教你如何寫故事

翻譯正文

顧名思義,Storybook就是就是寫故事。通常情況一個故事包含一個組件的一種狀態,就像一個組件的測試用例。

從技術上講,一個故事就是一個可以把組件渲染到屏幕上的一個函數。

一本Storybook,包含了多個故事。

在哪裡寫故事?

一般沒有明確規定。但是大家約定成俗,一般和組件寫在一起,更加容易維護。

比如:

  • 故事和組件在一起

└── src
└── components
└── button
├── button.js
└── button.stories.js
  • 在組件目錄裡

└── src
└── components
└── button
├── button.js
└── stories
└── button.stories.js
  • 在組件外

├── src
│ └── components
│ └── button.js
└── stories
└── button.stories.js

在你的項目或團隊中,你可以選擇上面任何一種方案。

開始寫故事

下面是一個基本的故事(假設我們有一個叫Button的組件,在src/components/Button.js):
[程序系列翻譯] Storybook-寫故事

我們將添加Button的故事如下:
[程序系列翻譯] Storybook-寫故事

將會使用到Storybook的基本API,更高級的功能可以參考Storybook官網和第三方插件。

動態加載故事

有時候,我們需要動態加載故事,而不是在配置文件中配置故事。
比如,你的應用中的故事都在src/components目錄裡,且以.stories.js作為後綴。那麼在.storybook/config.js文件中可以這樣動態加載:
[程序系列翻譯] Storybook-寫故事

Storybook使用了Webpack的require.context實現的動態加載,如果想深入瞭解,可以去webpack官網看下require.context的文檔。
需要特別注意的是,React Native 打包器會在構建時解析所有的引入,因此不能實現動態加載。不過,有第三方實現了動態加載,請參考 react-native-storybook-loader。

裝飾器的使用

裝飾器是一種用通用組件包裝故事的一種方式。以下是集中所有組件的示例:
[程序系列翻譯] Storybook-寫故事

這個是僅僅將裝飾器應用到當前的故事集。在此示例中,裝飾器僅添加到MyComponent故事組。
當然了,裝飾器也可以應用到所有的故事集上。比如在storybook的配置文件:
[程序系列翻譯] Storybook-寫故事

使用Markdown

從Storybook3.3版本開始,Markdown被設置為默認使用。用戶可以導入一個md文件,Storybook會自動提取md中的文本,然後可以在支持markdown的任何插件中使用該字符串,例如notes和info 

[程序系列翻譯] Storybook-寫故事

故事嵌套

故事可以使用'/'作為嵌套分隔符。
[程序系列翻譯] Storybook-寫故事

基於__dirname生成嵌套路徑

嵌套路徑可以使用模板文字以編程方式生成,因為故事名稱是字符串。比如:
[程序系列翻譯] Storybook-寫故事

當然,這個案例需要使用babel-plugin-macros

運行多個故事書

通過在啟動腳本中指定不同的端口號,可以在單個存儲庫中為不同類型的故事或組件構建多個故事書
[程序系列翻譯] Storybook-寫故事

總結

這篇篇幅稍微長點,在翻譯過程中,我也瞭解到了storybook的基本故事的含義和用法。

如果對你有幫助,或者發現問題,請留言討論,謝謝!!


分享到:


相關文章: