# 区块的标记表示
区块通过独特的[基于HTML的语法](https://developer.wordpress.org/block-editor/explanations/architecture/key-concepts/#data-and-attributes)存储在数据库或HTML模板中,这种语法以HTML注释作为清晰的区块分隔符。这确保了区块标记在技术上是有效的HTML。
以下是定义区块标记的几条准则:
- 核心区块以`wp:`前缀开头,后跟区块名称(例如`wp:image`)。值得注意的是,`core`命名空间被省略。
- 自定义区块以`wp:`前缀开头,后跟区块命名空间和名称(例如`wp:namespace/name`)。
- 注释可以是单行、自闭合或HTML内容的包装器。
- 区块设置和属性以JSON对象形式存储在区块注释内部。
以下是图像区块的简化标记表示:
```html
```
区块标记在区块编辑器和前端显示区块时都至关重要:
- WordPress在编辑器内分析区块标记以提取其数据,并向用户呈现可编辑版本。
- 在前端,WordPress再次解析标记以提取数据并渲染最终HTML输出。
有关区块数据在WordPress中如何解析的深入探讨,请参阅
数据流文章。
当区块保存时,会执行`save`函数(在[客户端注册区块](https://developer.wordpress.org/block-editor/getting-started/fundamentals/registration-of-a-block/#registration-of-the-block-with-javascript-client-side)时定义)以生成存储在数据库中的标记,并用区块分隔符注释包裹。对于动态渲染的区块(通常将`save`设置为`null`),仅保存带有区块属性的占位符注释。
以下是动态渲染区块(`save` = `null`)的标记表示。请注意,除了注释外没有HTML标记。
```html
```
当区块具有`save`函数时,区块编辑器会检查`save`函数创建的标记是否与保存到数据库的区块标记相同:
- 差异将触发[验证错误](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-edit-save/#validation),通常是由于`save`函数输出的更改引起的。
- 开发者可以通过实现[区块弃用](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-deprecation/)来解决潜在的验证问题,以应对更改。
如上例所示,动态渲染区块的存储标记非常简洁。通常,这只是一个包含区块属性的分隔符注释,不受区块编辑器验证的约束。这种方法反映了这些区块的动态特性,实际HTML在服务器端生成,不存储在数据库中。
## 附加资源
- [数据流与数据格式](https://developer.wordpress.org/block-editor/explanations/architecture/data-flow/)
- [静态与动态区块:有何不同?](https://developer.wordpress.org/news/2023/02/27/static-vs-dynamic-blocks-whats-the-difference/) | 开发者博客
- [区块弃用教程](https://developer.wordpress.org/news/2023/03/10/block-deprecation-a-tutorial/) | 开发者博客
- [模板入门 > 区块标记](https://developer.wordpress.org/themes/templates/introduction-to-templates/#block-markup) | 主题手册