农村的师傅的博客

一个迫于生计,无法放飞自我,导致喜欢上了前端开发,并即将成长为强者(指头发)的程序猿。

0%

前端团队文档建设思考

本篇文章思考了为什么要建立前端文档,以及用什么样的形式去建设前端文档。后续会尝试整理出针对不同类型的文档的建设方案。

前端文档建立的考量点

为什么要建立前端文档,并将其视为一个前端基础建设?

  • 帮助快速熟悉项目、融入团队
  • 作为团队的知识沉淀,知识传递,防止断档
  • 将技术知识固化共享
  • 利于项目的可维护性
  • 更好的理解和沟通,提高效率

前端文档需要写什么?

从文档内容去考虑的话,主要有以下类型的文档:

这里主要从两个方面去考虑文档的内容:

  • 从团队角度(下文以知识库文档代指此类文档)
    • 新人文档(工具、资源的开通)
    • 研发流程
    • 约定俗成
    • 规范文档
      • 各类技术规范
      • 代码规范
    • 各类技术类文档(大部分应该是会通过项目中沉淀下来)
  • 从开发角度(下文以项目文档代指此类文档)
    • 业务项目文档
    • 公共库、组件库文档

知识库文档是面向整个团队的,这些文档的建立,是为了能够沉淀出针对某个方面有价值、能够受益于整个团队成员的知识内容。

而文档的内容和项目本身息息相关的文档则是项目文档,这种文档的目的是为了让不了解的人能快速了解、熟悉这个项目。

文档建设有哪方面的考量?

不管是知识库文档还是项目文档都有以下几点共性:

  • 文档需要易于维护性
    • 语法格式统一
    • 协作性
  • 文档内容要保持时效性
    • 及时维护
  • 文档内容便于查找
    • 清晰的文档目录结构
    • 特定类别文档的模板(组件库、npm包)

除此之外,对于知识库文档来说,其重点面向的是所有团队成员,所以其文档建设会更加偏向于在线协作和知识分享等特性。

而项目文档因为和某个具体的项目具有较强的耦合,且其维护通常会伴随项目的更新迭代,所以,它更加适合同项目本身放在一起。

如何建立?

根据文档类型的特点,我考虑将知识库文档建立在在线协作平台上面,类似于飞书知识库、语雀这种,而项目文档则直接和项目源码维护在一起。

知识库文档:在线协作平台

因为我们公司办公用的飞书,所以自然想到的是将知识库文档维护在飞书知识库,所以这里以它为例,其他在线协作平台(比如语雀)的特点也是差不多的:

  • 在线文档
  • 多人协作
  • 丰富的内容形式:强大的表格、思维导图、流程图、其他扩展内容等强大的功能,以多种形式,让你更好的表现知识内容。

它的缺点是:

  • 受限平台:文档语法格式的兼容、迁移问题(可能存在)

至少以飞书知识库来说,目前(2022.5)飞书知识库都无法进行迁移到飞书自己其他组织下的知识库,也无法导出markdown,如果文档需要迁移了,那么会是个非常大的麻烦。

项目文档:markdown文件

这里的项目文档不止是包含了业务项目中的文档,同时也包含了组件库、npm公共包等包项目文档。而且,发布到npm上面的包所包含的文档还和业务项目文档有所差别。

对于开发来说,写项目文档通常会直接写markdonw,并将markdown文件和项目源码放在一起。

业务项目文档

如果是简单的业务项目,那么一个README.md可能就足矣,然而,事实远没有那么简单,通常一个较为复杂的项目,其文档包含的内容是涵盖许多方面的,这时候你需要建立一个专门的docs目录来存放和组织你的项目文档。

而如果你还想要将文档发布到线上,那么可以考虑使用docsify这种在线生成文档网站的工具。

使用markdonw编写文档的好处呢是不受平台限制,且语法通用,这对于迁移来说是比较友好的。

它的缺点也很明显:

  • 纯粹的markdown的表现力没有在线协作平台那样丰富
  • 文档的多人协作问题
  • 如果文档需要发布到线上,还需要额外的部署

库文档

这里的库文档,包含了公共npm包、组件库这种类型项目的文档。通常这些文档的介绍不会特别复杂,当然,即使复杂也能接受写在一个README.md文件里面,因为npm仓库就只认一个README.md文件作为文档。(当然,你也可以使用docsify这种工具来更好的组织你的文档)

而这些库文档,通常还会包含另外的一种文档:如果是公共npm包这种,会包含API文档,而如果是组件库,则会包含UI组件文档,而这两种都有专门的工具来生成,不过肯定是需要你将这些文档发布到线上的。

总结

其实这里不仅仅只是限于前端,对于一个公司的整个开发团队来说,文档的沉淀是团队的财富。当然,对于一个团队来说,我们不只是在开头建立起团队文档就够了,还需要后续培养团队的文档氛围,让团队的每个成员都能受益于文档,同时也自愿维护文档,贡献文档。这样,团队的文档才能慢慢沉淀下来,变成真正的财富。