Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 267fc4d

Browse files
authored
Update and rename 2021年10月25日-Symfony新闻 to 2021年10月25日-Symfony新闻-重新设计 Symfony Docs 网站.md
1 parent 11060ba commit 267fc4d

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

‎_posts/blog/2021-10-25-Symfony新闻‎

Whitespace-only changes.
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
---
2+
title: 新版SymfonyDoc设计实现方法
3+
permalink: /blog/25.html
4+
description_auto: 0
5+
description: 新版SymfonyDoc设计实现方法
6+
tags: phpzlc,symfony,开源社区
7+
author_no: 1
8+
img_all: 1
9+
---
10+
11+
## 构建 Symfony Doc
12+
13+
Symfony 项目的文档是开源的,并使用[github.com/symfony/symfony-docs](github.com/symfony/symfony-docs)存储库进行管理 。来自世界各地的数千人为这些文档做出了贡献。它是整个开源领域最受欢迎的文档项目之一。
14+
15+
`Symfony Docs` 使用 `reStructuredText`(或简称 RST)格式来编写其内容。然后,我们使用`Sphinx`,一种文档构建工具,将这些 RST 文件转换为我们网站上提供的 HTML 内容。
16+
17+
这种设置多年来一直很好地为我们服务,但它给我们带来了一些严重的问题。首先,Sphinx 以及大部分与 RST 相关的工具都是用 Python 编程语言编写的,我们不太了解。其次,更新和维护Sphinx给我们带来了很多麻烦,因为它过于严格和无情。
18+
19+
这就是为什么在 2019 年左右我们开始认真寻找基于 PHP 的替代方案。
20+
21+
## 坚持 RST 格式
22+
23+
一个明显的解决方案是将 Symfony Docs 切换到 Markdown,这是最流行的文档格式。由于 Symfony Docs 的内容量巨大(将它们全部转换为 Markdown 将花费我们永远),这很快就被丢弃了。
24+
25+
在继续之前,让我们玩一个游戏:你能猜出整个 Symfony Docs 的大小(以行、词和字符为单位)吗?我会在这篇博文的最后告诉你答案。
26+
27+
除了内容大小之外,还有另一个问题。Markdown 适用于简单的内容,但不适用于复杂的技术文档。RST 提供了您在编写复杂文档时需要的所有功能,例如对内部文档部分的交叉引用和用于创建自定义内容块的可编程"指令"。在 Markdown 中,这是不可能的,或者您需要使用不属于标准的技巧。
28+
29+
用 PHP 构建 RST 解析器
30+
构建一个文档解析器并不是一件简单的事,对于像 RST 这样的全功能格式来说更是如此。幸运的是,Symfony 并不是唯一需要 RST 解析器的 PHP 相关项目。Doctrine 项目也使用 RST 作为其文档,并且还想摆脱 Sphinx 来构建他们的文档。
31+
32+
这就是为什么一些 Doctrine 人 基于以前但不完整的 RST 解析器创建(并开源)了学说/rst-parser项目的原因。它不是一个完全兼容的 RST 解析器,但它超级快速、易于使用并且涵盖了我们所有的 RST 需求。
33+
34+
RST 解析器问题现已解决。接下来,我们需要创建一个完整的"文档构建器"来替换 Sphinx。
35+
36+
## 在 PHP 中创建文档生成器
37+
38+
由于 Doctrine 的 RST 解析器的灵活性,我们可以在它之上构建一个名为symfony-tools/doc-builder的应用程序。简而言之,这个工具找到 RST 文件,将它们解析为 HTML(包括代码突出显示),并将它们保存在具有 symfony.com 期望的特定结构的 JSON 文件中。
39+
40+
这个文档构建器还定义和处理所有在 Symfony Docs 中使用的自定义 RST 指令。例如,当您浏览Symfony 路由文章时,您可以选择某些代码块的格式(注释、属性、YAML、XML 等)。这不是 RST 标准的一部分,但与 Markdown 相反,在 RST 中有一个扩展格式的标准方法。
41+
42+
这就是 Symfony Docs 使用专有.. configuration-block:指令的原因,该指令在我们的文档构建器的ConfigurationBlockDirective 类中进行处理。
43+
44+
## 在 symfony.com 中更新 Doc Internals
45+
46+
用我们自己的 PHP Doc Builder 替换 Sphinx/Python 的所有必要部分都已准备就绪。最后一步是更新 symfony.com 代码以使用它。由于过去几年积累的"技术债务",这比我们预期的要长一些。
47+
48+
幸运的是,我们进行了一些 PHPUnit 测试来检查文档是否按预期工作(例如预期的页面标题和目录、文档导航等)。这让我们在开始大规模重构之前有一些信心。
49+
50+
我们最终删除了大部分与 docs 相关的现有代码,并将其替换为一些从 doc builder 生成的 JSON 文件创建的 DTO。这些 DTO 包含完全呈现页面所需的所有数据(其目录项、内容的区域设置、发布页面的其他 Symfony 版本等)这帮助我们从控制器中删除了所有逻辑和模板。
51+
52+
Sphinx 和 Python 现在消失了。RST 解析器和 Doc Builder 已经完全集成在 symfony.com 中。接下来是什么?重新设计文档部分!
53+
54+
## 引用评论
55+
56+
本文中很多内容直接摘抄于[Symfony 新闻: 重新设计 Symfony Docs 网站](https://symfony.com/blog/redesigning-the-symfony-docs-website#building-symfony-docs).
57+
58+
摘抄部分是技术背景和技术实现部分,有很强的学习作用。
59+
60+
PHPZlc一直都在学习Symfony,之前为了实现Symfony Doc,开发了组件 md-bundle,看到这篇消息,又打开了新的大门,敬请期待。

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /