For the complete documentation index, see llms.txt. This page is also available as Markdown.

迁移指南

本指南介绍将组件从 UI1(decentraland-ui)到 UI2(decentraland-ui2).

何时迁移

迁移可以基于三个有效原因开始:

1. 技术改进

你希望迁移某个组件的原因有:

  • 更好的主题支持

  • 改进的 TypeScript 类型

  • 与其他 UI2 组件保持一致

  • 性能优化

  • 可访问性改进

2. 更新组件

  • 某个 UI1 组件需要更新

  • 目前还没有对应的 UI2 版本

  • 要求:先在 UI2 中创建它,然后再使用

3. 项目需求

  • 该组件将用于新项目或现有项目

  • 有足够时间正确完成迁移

  • 项目资源允许进行彻底迁移


迁移流程

步骤 1:规划

在开始迁移之前:

  1. 识别依赖

    • 它使用了哪些其他组件?

    • 目前有哪些项目在使用它?

    • 是否计划了任何破坏性变更?

  2. 审查当前使用情况

    • 有多少项目使用这个组件?

    • 最常用的是哪些属性?

    • 是否存在已知问题?

  3. 定义范围

    • 这会是 1:1 迁移吗?

    • 是否有计划中的改进?

    • 时间安排是什么?

步骤 2:创建 UI2 组件

遵循 自定义组件 UI2 候选组件指南。

要求:

  • styled-components 使用对象语法

  • 只使用主题值(不使用任意值)

  • 添加完整的 Storybook stories

  • 编写完整测试

  • 记录所有属性和行为

示例结构:

步骤 3:保持兼容性

UI2 组件 必须 应暴露与 UI1 版本相同的属性和行为。

相同的属性

向后兼容的更改

如果你需要更改或添加属性:

  1. 首先,先将新属性作为可选项添加到 UI1

  2. 然后,将 UI1 的使用方迁移为使用这些新属性

  3. 最后,使用新的 API 创建 UI2 组件

步骤 4:将 UI1 组件标记为弃用

在 UI1 组件中添加弃用提示:

步骤 5:逐步采用

不要强制立即迁移。允许逐步采用:

  1. 发布 UI2 组件

  2. 记录 迁移路径

  3. 更新 新项目以使用 UI2

  4. 迁移 在合适时机迁移现有项目

  5. 规划 最终移除 UI1(附带通知)


迁移示例

示例 1:简单组件

迁移一个基础 Card 组件:

UI1 版本

UI2 版本

示例 2:带变体的组件

迁移一个 Button 及其变体:

UI1 版本

UI2 版本


迁移清单

每次组件迁移都使用此清单:

规划阶段

实施阶段

弃用阶段

采用阶段


常见迁移模式

从 CSS 到 Styled Components

从类名到属性

从固定值到主题值


破坏性变更

有时需要破坏性变更。请谨慎处理:

何时可接受破坏性变更

  • 安全修复

  • 严重漏洞

  • 主版本更新

  • 移除已弃用功能(附带通知)

如何处理破坏性变更

  1. 尽早宣布 - 提前充分传达变更

  2. 提供迁移路径 - 记录如何更新

  3. 版本升级 - 遵循语义化版本控制

  4. 弃用期 - 留出迁移时间

  5. 代码转换工具 - 如果可能,提供自动化迁移工具

示例:移除已弃用的属性


测试迁移

确保迁移后的组件正常工作:

视觉回归测试

以视觉方式比较 UI1 和 UI2 组件:

行为测试

确保属性的工作方式相同:


文档更新

迁移后,更新文档:

更新 UI1 组件文档

创建 UI2 组件文档


下一步

最后更新于