首页
/ 极速上手Flowgram.ai微前端:createPlaygroundReactPreset零代码搭建指南

极速上手Flowgram.ai微前端:createPlaygroundReactPreset零代码搭建指南

2026-02-05 04:20:00作者:咎岭娴Homer

为什么选择Playground React Preset?

还在为微前端架构配置繁琐而头疼?createPlaygroundReactPreset提供了"开箱即用"的解决方案,通过预设插件体系将初始化时间从小时级压缩到分钟级。该工具已深度集成到Flowgram.ai的微前端生态中,被demo-vitedemo-react-16等12个官方示例项目采用,日均调用量超过5000次。

读完本文你将掌握:

  • 3分钟完成Playground环境搭建
  • 自定义背景/快捷键等核心功能
  • 集成第三方插件的最佳实践
  • 生产环境性能优化技巧

核心API解析

createPlaygroundReactPresetplayground-react模块提供的预设工厂函数,定义于playground-react-preset.ts第19行:

export function createPlaygroundReactPreset<CTX extends PluginContext = PluginContext>(
  opts: PlaygroundReactProps<CTX>,
  plugins: Plugin[] = []
): PluginsProvider<CTX>

参数说明

参数名 类型 默认值 说明
opts.background boolean|object true 背景配置,对象类型时可指定网格颜色/密度
opts.shortcuts (registry, ctx) => void undefined 快捷键注册函数
opts.playground {autoFocus?: boolean, autoResize?: boolean} {autoFocus: false} 画布行为配置
plugins Plugin[] [] 预加载插件列表

生命周期钩子

该预设提供完整的生命周期管理,关键回调包括:

{
  onBind: (bindConfig) => {},       // 配置绑定阶段
  onInit: (ctx) => {},              // 初始化完成
  onReady: (ctx) => {},             // 画布就绪
  onAllLayersRendered: () => {},    // 所有图层渲染完成
  onDispose: () => {}               // 实例销毁
}

快速开始:3分钟搭建演示环境

1. 安装依赖

# 通过官方CLI创建项目
npx @flowgram.ai/create-app my-playground
cd my-playground
npm install @flowgram.ai/playground-react

2. 基础使用示例

创建src/editor.tsx

import { PlaygroundReact } from '@flowgram.ai/playground-react';
import { createPlaygroundReactPreset } from '@flowgram.ai/playground-react/preset';

// 自定义快捷键配置
const preset = createPlaygroundReactPreset({
  background: { grid: true, color: '#f5f5f5' },
  shortcuts: (registry) => {
    registry.register('delete', 'backspace', () => {
      console.log('删除选中元素');
    });
  },
  onReady: (ctx) => {
    console.log('画布初始化完成', ctx);
  }
});

export default function Editor() {
  return (
    <div style={{ width: '100vw', height: '100vh' }}>
      <PlaygroundReact preset={preset} />
    </div>
  );
}

3. 运行效果

启动开发服务器后将看到带网格背景的空白画布,按backspace键可触发删除逻辑。完整示例可参考demo-fixed-layout-simple项目。

高级配置:定制你的微前端画布

背景定制

支持三种背景模式:

// 1. 默认网格背景
createPlaygroundReactPreset({ background: true })

// 2. 自定义网格
createPlaygroundReactPreset({
  background: {
    grid: { size: 20, color: 'rgba(0,0,0,0.05)' },
    image: 'url("/bg.png")' // 背景图片
  }
})

// 3. 禁用背景
createPlaygroundReactPreset({ background: false })

快捷键配置

通过shortcuts参数注册自定义快捷键:

createPlaygroundReactPreset({
  shortcuts: (registry, ctx) => {
    registry.register('save', ['mod+s'], () => {
      const data = ctx.playground.exportData();
      localStorage.setItem('flow-data', JSON.stringify(data));
    });
    registry.register('undo', ['mod+z'], () => {
      ctx.history.undo();
    });
  }
})

集成第三方插件

minimap-plugin为例:

import { createMinimapPlugin } from '@flowgram.ai/minimap-plugin';

const preset = createPlaygroundReactPreset(
  { playground: { autoResize: true } },
  [createMinimapPlugin({ width: 200, height: 150 })]
);

实战案例:构建企业级编辑器

项目结构

推荐采用以下目录组织:

src/
├── plugins/           # 自定义插件
├── layers/            # 扩展图层
├── editor.tsx         # 编辑器入口
└── presets/           # 预设配置
    ├── basic.ts       # 基础预设
    └── full-featured.ts # 全功能预设

性能优化策略

  1. 按需加载插件
// 使用动态导入延迟加载非核心插件
const preset = createPlaygroundReactPreset({
  plugins: (ctx) => [
    import('@flowgram.ai/minimap-plugin').then(m => m.createMinimapPlugin())
  ]
})
  1. 禁用自动调整
{
  playground: {
    autoResize: false,  // 禁用自动尺寸调整
    autoFocus: false    // 关闭自动聚焦
  }
}

常见问题解决

Q: 如何自定义图层顺序?

A: 通过registerLayers方法显式控制:

createPlaygroundReactPreset({
  layers: [CustomLayer1, CustomLayer2]
})

Q: 预设冲突如何处理?

A: 使用plugins参数覆盖默认插件:

// 替换默认背景插件
createPlaygroundReactPreset(
  { background: false }, // 先禁用内置背景
  [customBackgroundPlugin()] // 加载自定义实现
)

相关资源

结语

createPlaygroundReactPreset作为Flowgram.ai微前端架构的核心组件,通过预设机制大幅降低了编辑器开发门槛。无论是快速原型验证还是构建企业级应用,都能提供一致的开发体验。建议结合fixed-layout-editorfree-layout-editor实现更复杂的布局需求。

关注项目CHANGELOG.md获取最新功能更新,欢迎通过CONTRIBUTING.md参与贡献。

本文档版本对应Flowgram.ai v2.3.0,不同版本可能存在API差异

登录后查看全文

项目优选

收起
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
471
465
kernelkernel
deepin linux kernel
C
32
16
atomcodeatomcode
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get Started
Rust
2.09 K
218
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
700
1.4 K
docsdocs
暂无描述
Dockerfile
780
5.08 K
pytorchpytorch
Ascend Extension for PyTorch
Python
758
968
flutter_flutterflutter_flutter
本仓库是 Flutter SDK 与 Flutter Engine 的 OpenHarmony 适配版本,由 CPF-Flutter 团队维护。开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,3.35.7 及以后的适配版本可基于本仓库源码构建支持 OpenHarmony 的 Flutter Engine。
Dart
1.04 K
271
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
880
2.03 K
mindquantummindquantum
MindQuantum is a general software library supporting the development of applications for quantum computation.
Python
183
111
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
1.11 K
682