|
1 | 1 | # 初探富文本之React实时预览 |
2 | 2 | 在前文中我们探讨了很多关于富文本引擎和协同的能力,在本文中我们更偏向具体的应用组件实现。在一些场景中比如组件库的文档编写时,我们希望能够有实时预览的能力,也就是用户可以在文档中直接编写代码,然后在页面中实时预览,这样可以让用户更加直观的了解组件的使用方式,这也是很多组件库文档中都会有的一个功能。那么我们在本文就侧重于`React`组件的实时预览,来探讨相关能力的实现。文中涉及的相关代码都在`https://github.com/WindrunnerMax/ReactLive`,在富文本文档中的实现效果可以参考`https://windrunnermax.github.io/DocEditor/`。 |
3 | 3 |
|
4 | | -* [初探富文本#1-富文本概述](./初探富文本之富文本概述.md) |
5 | | -* [初探富文本#2-编辑器引擎](./初探富文本之编辑器引擎.md) |
6 | | -* [初探富文本#3-OT协同算法](./初探富文本之OT协同算法.md) |
7 | | -* [初探富文本#4-OT协同实例](./初探富文本之OT协同实例.md) |
8 | | -* [初探富文本#5-CRDT协同算法](./初探富文本之CRDT协同算法.md) |
9 | | -* [初探富文本#6-CRDT协同实例](./初探富文本之CRDT协同实例.md) |
10 | | -* [初探富文本#7-React实时预览](./初探富文本之React实时预览.md) |
11 | | -* [初探富文本#8-文档diff算法](./初探富文本之文档diff算法.md) |
12 | | -* [初探富文本#9-在线文档交付](./初探富文本之在线文档交付.md) |
13 | | -* [初探富文本#10-划词评论能力](./初探富文本之划词评论能力.md) |
14 | | -* [初探富文本#11-文档虚拟滚动](./初探富文本之文档虚拟滚动.md) |
15 | | -* [初探富文本#12-搜索替换算法](./初探富文本之搜索替换算法.md) |
16 | | -* [初探富文本#13-序列化与反序列化](./初探富文本之序列化与反序列化.md) |
| 4 | +* [初探富文本编辑器#1-富文本概述](./初探富文本之富文本概述.md) |
| 5 | +* [初探富文本编辑器#2-编辑器引擎](./初探富文本之编辑器引擎.md) |
| 6 | +* [初探富文本编辑器#3-OT协同算法](./初探富文本之OT协同算法.md) |
| 7 | +* [初探富文本编辑器#4-OT协同实例](./初探富文本之OT协同实例.md) |
| 8 | +* [初探富文本编辑器#5-CRDT协同算法](./初探富文本之CRDT协同算法.md) |
| 9 | +* [初探富文本编辑器#6-CRDT协同实例](./初探富文本之CRDT协同实例.md) |
| 10 | +* [初探富文本编辑器#7-React实时预览](./初探富文本之React实时预览.md) |
| 11 | +* [初探富文本编辑器#8-文档diff算法](./初探富文本之文档diff算法.md) |
| 12 | +* [初探富文本编辑器#9-在线文档交付](./初探富文本之在线文档交付.md) |
| 13 | +* [初探富文本编辑器#10-划词评论能力](./初探富文本之划词评论能力.md) |
| 14 | +* [初探富文本编辑器#11-文档虚拟滚动](./初探富文本之文档虚拟滚动.md) |
| 15 | +* [初探富文本编辑器#12-搜索替换算法](./初探富文本之搜索替换算法.md) |
| 16 | +* [初探富文本编辑器#13-序列化与反序列化](./初探富文本之序列化与反序列化.md) |
17 | 17 |
|
18 | 18 | ## 概述 |
19 | 19 | 首先我们先简单探讨下相关的场景,实际上当前很多组件库的`API`文档都是由`Markdown`来直接生成的。例如`Arco-Design`,实际上是通过一个个`md`文件来生成的组件应用示例以及`API`表格,那么其实我们用的时候也可以发现我们是无法直接在官网编辑代码来实时预览的,这是因为这种方式是直接利用`loader`来将`md`文件根据一定的规则编译成了`jsx`语法,这样实际上就相当于直接用`md`生成了代码,之后就是完整地走了代码打包流程。那么既然有静态部署的`API`文档,肯定也有动态渲染组件的`API`文档,例如`MUI`,其同样也是通过`loader`处理`md`文件的占位,将相应的`jsx`组件通过指定的位置加载进去。只不过其的渲染方式除了静态编译完成后还多了动态渲染的能力,官网的代码示例就是可以实时编辑的,并且能够即使预览效果。 |
|
0 commit comments