返回博客

Angular 12 的 Storybook

支持下一代渲染管道

loading
Michael Shilman
@mshilman
最后更新于

Storybook,最受欢迎的组件工作台,正在迎来其有史以来最大规模的 Angular 升级。Storybook for Angular 已被彻底重写,并在从渲染引擎到自动文档支持的方方面面都得到了改进。

Storybook 6.3 中的新版本包括

🖼 支持 Ivy 渲染
🎛 自动生成的控件、文档、动态源代码片段
🎁 零配置设置,内置 TypeScript 支持
📚 更新的教程和文档
📦 支持 Webpack 5

所有这些都是在 Angular 用户已可用的庞大开发、测试和文档插件生态系统之外新增的功能。请继续阅读,全面了解新功能!

押注 Angular

Angular 在 Storybook 生态系统中占有特殊的地位。它是我们在 2017 年集成合作的最早的社区之一。它还将 TypeScript 引入了 Storybook;自那时起,我们已因此项工作而将整个代码库迁移到了 TS。

自那时以来,@storybook/angular 的使用量已增长到每月超过 500,000 次 npm 下载。Angular 生态系统也采纳了我们,提供了一流的 nx 集成

零配置设置

要开始使用,在现有 Angular 项目的根目录中运行以下命令

npx sb@next init

这会检测项目类型,安装 @storybook/angular,并添加一些示例文件以演示 Storybook 的基础知识。运行 yarn storybook 将提供以下零配置设置

当你在本地访问 Storybook 时,你将看到如何编写 Angular stories 的示例、常见配置的链接以及 Storybook 附带的“基本”插件

内置了 TypeScript 支持。Webpack 5 支持——Angular 12 中一项重要的底层升级——也已内置。如果你正在升级现有的 Storybook/Angular 项目,请遵循迁移说明进行升级。在官方文档中了解更多信息。

支持 Ivy 渲染

Storybook for Angular 现在支持 Ivy 渲染管道。

Ivy 会提前 (AoT) 编译组件,从而生成更小、更简单、更快速的应用。它于 2018 年首次作为“下一代”技术引入,并自 Angular 9 起成为默认设置。

支持它是一场艰苦的战斗,进行了长达一年的实验。维护者 Kai RöderThibaud AvenierMinko Gechev (Angular 核心团队成员) 合作,最终在 Storybook 6.3 中,我们自豪地发布了实验性的 Ivy 渲染。新安装 Storybook 和升级到最新版本都会默认启用 Ivy。

自动生成的控件和文档

Storybook 从 compodoc 读取 docgen 信息,根据你的 stories 和组件自动生成控件和文档。

上一节中的示例将生成以下 UI,用于交互式地探索你的组件状态

它还会自动生成组件文档,无需额外工作,其中包含所有关键状态,并列出了从组件源代码中提取的属性。

你的组件控件和文档始终是最新状态,因为它们是根据源代码自动生成的。每当组件的 API 发生变化时,你无需跟踪 UI 文档,Storybook 会为你完成。

我们注重细节。Angular stories 现在在文档页面中内联渲染(而不是像以前那样在 iframe 中),这意味着页面可以根据你需要的故事数量进行扩展。而且文档的源代码片段现在是真正的 Angular 模板,并且当你使用控件编辑组件属性时会动态重新渲染。

非常适合 UI 测试

当你在 Storybook 中构建 UI 时,你会免费获得测试能力。Storybook 围绕着“stories”的概念展开,这些 stories 捕获了你的 UI 组件所支持的状态。

在开发过程中,你可以手动确认你的 stories “看起来正确”,并使用一系列插件从其他维度测试你的 story,例如可访问性移动友好性

在持续集成中,你可以分别使用快照测试和可视化测试自动检测你的 stories 的结构和视觉变化。

测试你的 stories 非常有用,因此有多个商业服务与 Storybook 集成,在云端和跨浏览器运行测试。值得注意的是,由 Storybook 维护者创建的 Chromatic 与 Storybook 紧密集成,提供免费的自动化发布和视觉差异检测。

更重要的是,你的 stories 可以在不同的工具之间移植。Storybook 开创了组件 Story 格式 (CSF),这是一种基于 JavaScript ES6 模块的组件示例开放标准。这使得你可以在单元测试和端到端测试中重用 stories——没有锁定。

300+ 插件供你选择

Storybook 多年来一直在完善其跨框架兼容性。这意味着 Storybook 的数百个插件几乎都可以供 Angular 用户使用。插件解锁了诸如可访问性测试设计交付集成样式实用工具模拟网络请求等超级功能。

下一步

Storybook for Angular 现已推出 6.3 RC 版本。通过在项目根目录中运行以下命令进行安装。然后查看更新的教程参考文档

npx sb@next init

升级现有项目

npx sb upgrade --prerelease

Webpack 5 支持会自动包含在新安装中,但对于升级,你需要手动安装

我们为 Angular 计划了重大改进,特别是在通过builders与官方 Angular CLI 更紧密的集成方面。

参与其中

Storybook 由 1,300 多名开源贡献者维护,并由一个顶级维护者指导委员会指导。Storybook for Angular 由Thibaud AvenierKai Röder 维护,他们负责了本文中描述的大部分升级工作。Angular 支持最初由Carlos Vega贡献。

如果你有兴趣贡献,请在 GitHub 上查看 Storybook,创建一个 issue 或提交一个 pull request。在 Open Collective 上捐赠。加入我们的 Discord 聊天群——通常有维护者在线。在 Twitter 上关注 Storybook 的最新消息,并通过下方注册我们的邮件列表。

加入 Storybook 邮件列表

获取最新消息、更新和发布

7,180开发者及仍在增长

我们正在招聘!

加入 Storybook 和 Chromatic 背后的团队。构建被数十万开发者用于生产环境的工具。远程优先。

查看职位

热门文章

Storybook for Vite

基于原生 ES 模块的闪电般快速开发
loading
Michael Shilman

Storybook 6.3

为 UI 开发优化
loading
Michael Shilman

必备的布局调试

使布局调试变得轻松便捷的 Storybook 插件
loading
Varun Vachhar
加入社区
7,180开发者及仍在增长
原因为什么选择 Storybook组件驱动的 UI
文档指南教程更新日志遥测
社区插件参与其中博客
案例展示探索项目组件词汇表
开源软件
Storybook - Storybook 中文

特别感谢 Netlify CircleCI