SchemaEditor - schema 编辑工具
SchemaEditor 是一个强大的 schema 编辑和预览工具,提供 HTML 模板和 JSON schema 的实时编辑功能,底层使用 AceEditor 来编辑 schema 中的 HTML 内容。
功能特性
- 🎨 实时编辑: 支持 HTML 模板和 JSON schema 的实时编辑
- 👀 实时预览: 实时显示编辑结果,支持模板变量替换
- 🔍 语法高亮: 使用 AceEditor 提供 HTML 和 JSON 语法高亮
- ⚡ 错误提示: 自动检测 schema 格式错误并显示提示
- 📱 响应式设计: 支持不同屏幕尺寸的适配
- 🛡️ 安全渲染: 支持配置允许的 HTML 标签和属性
- 🔧 类型安全: 完整的 TypeScript 类型支持
- 🎯 模板引擎: 支持 Mustache 模板语法
基本用法
API 参考
Props
previewConfig
高级用法
自定义预览配置
隐藏预览
配置错误处理:
复杂 Schema 示例
Schema 格式
SchemaEditor 使用 LowCodeSchema 类型定义,主要包含以下字段:
组件属性类型
示例 Schema
模板语法
SchemaEditor 支持 Mustache 模板语法,可以在 HTML 中使用 {{变量名}} 来插入动态内容。
基本变量
条件渲染
循环渲染
嵌套对象
错误处理
SchemaEditor 提供了完善的错误处理机制:
验证错误
- Schema 格式验证: 自动检测 JSON 格式错误
- 类型验证: 验证组件属性类型
- 必填字段验证: 检查必填字段是否提供
渲染错误
- 模板语法错误: 检测 Mustache 模板语法错误
- 变量未定义: 提示模板中使用的未定义变量
- HTML 安全: 过滤不安全的 HTML 标签和属性
错误边界
SchemaEditor 使用 React Error Boundary 来捕获渲染过程中的错误,并提供友好的错误提示。
注意事项
- 安全性: 在生产环境中,建议配置
previewConfig来限制允许的 HTML 标签和属性 - 性能: 大型 schema 可能会影响编辑性能,建议适当分页或懒加载
- 兼容性: 组件依赖 AceEditor,确保在支持的环境中运行
- 模板语法: 目前支持 Mustache 模板语法,未来可能支持更多模板引擎
- 浏览器支持: 需要支持 ES6+ 的现代浏览器
- 依赖要求: 需要安装
ace-builds依赖包
示例文件
本文档提供了以下示例文件,您可以直接导入使用:
SchemaEditorBasicDemo.tsx- 基本用法示例SchemaEditorComplexDemo.tsx- 复杂 Schema 示例SchemaEditorReadonlyDemo.tsx- 只读模式示例SchemaEditorErrorDemo.tsx- 错误处理示例
相关组件
- SchemaRenderer - Schema 渲染器(含 SchemaForm 使用说明)
- AceEditor - 代码编辑器(见
src/Plugins/chart内实现)
更新日志
v1.2.0
- 新增完整的
LowCodeSchema类型支持 - 新增页面配置、数据源配置等功能
- 优化错误处理和验证机制
- 改进响应式设计
v1.1.0
- 新增 Mustache 模板语法支持
- 新增安全渲染配置
- 优化 AceEditor 集成
- 改进样式系统
v1.0.0
- 初始版本发布
- 支持基本的 HTML 和 JSON 编辑
- 支持实时预览功能
