以样式指南驱动的开发和原子文档

Avatar of Nick Berens
Nick Berens

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 $200 免费积分!

以下是由 Nick Berens 的客座文章,他是 wisnet.com 的高级前端开发人员。 Nick 和他的团队多年来一直通过自定义样式指南构建网站。 在这些年中,Nick 一直在构建和改进一个工具来帮助这个过程。 我会让 Nick 解释理念和工具。

我敢打赌你听说过样式指南。 也许你听说过样式指南驱动的开发 (SDD)?

我是 wisnet.com 的前端开发人员,这是一家专门从事 PHP 和 WordPress 开发的代理机构。 这是关于样式指南和我们团队在样式指南驱动开发方面的经验的简要介绍。

在过去两年中,我一直使用我编写的名为 Atomic Docs 的工具来实践 SDD,这是一个前端样式指南生成器和 Sass 部分管理器。 我想介绍 Atomic Docs 和它的一些功能,这些功能使 SDD 成为我们工作流程中一个简单而必不可少的组成部分。

什么是样式指南?

在 wisnet,我们使用两种类型的样式指南:静态设计样式指南和更动态的前端样式指南。

设计样式指南

我们的设计样式指南是静态 Photoshop (PSD) 文件,用于编目项目的全局设计元素。 它们记录了项目的颜色、字体、标题、按钮状态、链接状态、列表等。

来自 Medialoot 的示例样式指南

前端样式指南

我们的前端样式指南由 Atomic Docs 生成,提供与项目前端组件相关的代码的文档。 想想 Bootstrap 文档网站。 它为每个组件提供注释和标记示例,使其易于参考、理解和使用每个组件。

动态样式指南

动态样式指南是一个系统,允许样式指南中的组件与网站中的组件保持同步,而无需在两个地方都更新代码!

对于大型项目,动态样式指南是成功系统的关键。

什么是样式指南驱动的开发?

为了说明,我将简要概述我们在 wisnet 的流程。

从设计开始

在 wisnet,我们的样式指南流程从我们的设计师开始。 他们交接的每个项目都有两个交付成果。 一个传统的 PSD 完整页面布局的样本,以及一个记录项目全局样式的设计样式指南。

进入前端

完成后,PSD 样本和设计样式指南将交接给前端开发人员。 我做的第一件事是打开 Atomic Docs 并开始记录设计样式指南中定义的全局设计元素。

添加全局设计元素后,我会打开 PSD 样本,其中包含完整的样本。 由于我使用 Brad Frost 的 原子设计 原则,此时我开始分析设计并确定哪些设计元素将组合在一起构成设计的原子、分子、有机体、模板和页面。 以这种方式组织和管理组件是 Atomic Docs 真正有帮助的地方。

所有组件都构建、分类并记录在 Atomic Docs 中后,只需像使用乐高积木一样使用这些组件即可构建页面和视图。

后端

如果项目是一个应用程序,我会将静态视图以及 Atomic Docs 样式指南交接给后端开发人员。 使用样式指南作为参考,后端开发人员可以轻松地根据需要对前端进行调整,而无需通过将它交回给前端开发人员来中断他们的工作流程。

正如你可能猜到的那样,开发过程永远不会完全是线性的(团队之间仍然可以来回很多次),但是使用样式指南提供了一种通用的设计语言,它在项目的整个生命周期中强制执行设计和代码一致性。

SDD 的优势是什么?

通过在任何上下文中构建组件,你将获得模块化且可自由地在你的网站或应用程序中移动的代码

我们不是在设计页面,而是在设计组件系统。

Stephen Hay 的引言是 SDD 的核心。

我们不再构建一个在侧边栏上下文中为红色的按钮。 我们现在只构建一个红色按钮,无论它是在侧边栏、页脚还是页眉中,它都是红色的。

当你无视上下文进行构建时,副作用是前端代码库的可扩展性、模块化性和可维护性要高得多。

使组件更易于不太精通前端的后端开发人员和设计师使用

样式指南鼓励我们的设计师和初级开发人员在不深入了解 HTML/CSS/JS 的情况下快速构建页面和视图。 而且由于每个组件都是隔离的,因此更容易理解创建它的代码。

我完成的每个项目都有一个类似于 Bootstrap 的文档,展示了与每个组件相关的 HTML/CSS

无论项目大小,我们的团队完成的每个项目都对其前端设计系统进行了完整的文档记录。 这使得每个项目都更加易于维护。 它对我们合作过的拥有内部开发团队的组织尤其有用。 它使这些团队更容易进行更改和扩展其项目,并且非常有价值。

强制品牌完整性

由于样式指南包含项目的颜色和字体定义以及徽标和其他图形资产,因此可以将其视为设计真实来源。

关于 Atomic Docs

Atomic Docs 具有两个主要功能。

SCSS 部分管理器

能够将我的 CSS 分解成小的部分文件是我最喜欢的 Sass 功能之一。 管理所有这些部分文件并非如此。

这是一个分子类别和根 `molecules.scss` 文件的屏幕截图。

创建这种结构对于组织和整体开发人员理智来说是 **很棒的**。 但是随着项目的增长,创建和管理部分文件在我的工作流程中成为一个痛点。

Atomic Docs 提供了一个 GUI 来处理这些部分文件的创建和管理,以及将 `@import my-component` 字符串写入相应的根 `.scss` 文件。 通过此界面,您还可以重命名文件、将它们移动到不同的类别以及删除它们。

您可能认为我超级懒惰,创建部分文件并不是什么大不了的事,但它确实是我最喜欢的 Atomic Docs 部分。

(生成的)样式指南

使用 Atomic Docs 的最大优势也许是使用样式指南是多么容易。

  • 没有复杂的配置文件
  • 无需向 CSS 文件添加冗余的标记注释
  • 随意命名您的组件和类别
  • 对您使用的预处理器没有意见。 您可以使用 Grunt、Gulp、Code Kit、Prepros 或任何其他工具。

这并不是要贬低那些本质上更复杂的项目。 这种复杂性使它们能够拥有某些非常高级的功能。 我只是想要一个更简单的解决方案,我们的团队可以轻松上手,并且几乎没有摩擦。

使用 Atomic Docs 作为动态样式指南

Atomic Docs 可以配置为动态样式指南。 如果文件 atomic-head.php 位于项目的根目录中,Atomic Docs 会将其包含在它的 `<head>` 部分中。 因此,如果您正在使用简单的 PHP 应用程序,例如,在 atomic-head.php 中,您可以包含 `<?php require_once(my-path/db.php); ?>` 将数据库连接到 Atomic Docs 以及 `<?php require_once(my-path/functions.php); ?>` 共享您的应用程序的功能。

现在,您可以在创建的组件中使用应用程序的数据和功能。 然后,只需包含 `<?php include(components/modules/my-component.php); ?>` 到您的应用程序中即可。 由于此组件已包含在 Atomic Docs 中,因此您在 `components/modules/my-component.php` 中进行的任何更改都会反映在样式指南中以及您在应用程序中包含该组件的任何地方。

其他资源

Atomic Docs 非常适合我们在 wisnet 的工作流程和开发栈。 如果它不适合您,还有很多很棒的解决方案。

  • Styleguides.io 收集了许多很棒的文章、书籍、工具和演讲,帮助您为您的团队做出正确的决定。
  • 要更深入地了解样式指南,请查看 Medium 上这篇文章:文章

结论

两年后,样式指南驱动开发已成为我们 wisnet 工作流程中宝贵的补充。 无论您使用的是 Atomic Docs 还是其他任何很棒的工具,我认为您都会发现 SDD 将有助于为您的所有项目提供设计一致性和可扩展性。