lowcodeEngine 怎么生成一个左侧面板

初始化流程

如何生成一个左侧面板

  1. 初始化插件时往skeleton.leftArea新增按钮,新增按钮时往skeleton.leftFloatArea新增面板对象
  2. 点击按钮时,调用panel方法,处理面板的显示隐藏
  3. workBench-->leftFloatArea --> skeleton.leftFloatRea.container.items.map(item=>item.content)--->Panel-->PanelView(widget-view)

主要类

lowcodeEngine有很多同名的类,shell下为对外开放的API, 保持内部类的引用

Designer:

设计器主体,保存editor, project, dragon等索引。

designer模块创建和管理所有ComponentMeta ,其他模块通过 designer 来获取指定的 ComponentMeta 实例;

注册dragon.onDrag onDragend等事件

Dragon:

拖拽引擎(Dragon)核心完成的工作是将被拖拽对象拖拽到目标位置, 内部有自己的EventEmiter对象(与editor的EventEmitter相互独立)

editor:

编辑器上下文 editor,主要包含:消息通知、插件引用等

继承EventEmitter来处理事件, 保存skeleton,plugins,designer等对象,

skeleton:

提供API能力, 内部保存inner-skeleton

inner-skeleton(editor-skeleton):

整体面板的管理扩展(对象保存,创建)

存放containers(widgetContainer实例,与Area对象中的container 是同一个对象实例),Area对象(leftArea,rightArea, toolBar等), widgets(存放具体的组件)

Area:

Area对象的管理(新增,删除,显示 ,隐藏),内部有WidgetContainer对象实例

WidgetContainer:

Widget对象的管理(存放实例对象items, 新增,删除,读取)。新增时是调用skeleton的createWidget方法创建Widget实例(根据不同类型生成PanelDock, Dock, Widget)

PanelDock对象

mobx化之后的content对应左侧面板的按钮

Panel控制类 LeftFloatPane组件展示

面板的显示隐藏

模型系统

官方介绍很详情,移步官方介绍

项目模型(Project)

项目模型提供项目管理能力,模型系统最顶层的模型。项目模型实例下可以持有多个文档模型的实例,其他模型实例(Document , Node, Prop等)均需要通过 project 来获得

文档模型(DocumentModel)

文档模型提供文档管理的能力,每一个页面即一个文档流,对应一个文档模型。文档模型包含了一组 Node 组成的一颗树,类似于 DOM。

节点模型(Node)

节点模型聚焦于单层级的 schema 相关操作:

属性模型(Props, Prop)

组件描述模型(ComponentMeta)

每一个组件对应一个 ComponentMeta 的实例,其属性和方法就是描述协议中的所有字段,所有 ComponentMeta 都由设计器器的 designer 模块进行创建和管理,其他模块通过 designer 来获取指定的 ComponentMeta 实例,尤其是每个 Node 实例上都会挂载对应的 ComponentMeta 实例。

最新文章

  1. Coding4Fun Toolkit支持本地化解决办法
  2. ZeroMQ接口函数之 :zmq_ctx_term - 终结一个ZMQ环境上下文
  3. DataTable汇总
  4. [.NET领域驱动设计实战系列]专题八:DDD案例:网上书店分布式消息队列和分布式缓存的实现
  5. ubuntu下整合eclipse和javah生成jni头文件开发android的native程序(转)
  6. 我的android学习经历12
  7. A06_RelativeLayout的属性设置
  8. 我的前端之旅--SeaJs基础和spm编译工具运用[图文]
  9. 指针参数的传递(节选 C++/C 高质量编程 林锐)
  10. AngularJs 常用的过滤器
  11. Sublime text 添加lua
  12. Android特效专辑(十一)——仿水波纹流量球进度条控制器,实现高端大气的主流特效
  13. druid数据源连接oracle10g报错:not support oracle driver 1.0
  14. [转]What is Blue Prism?
  15. C++对象的构造、析构与拷贝构造
  16. LOJ540 游戏 构造
  17. CSS-定位(Position)
  18. CodeForces - 616F:Expensive Strings (后缀自动机)
  19. angularjs数据交互
  20. jquery实现根据所选时间生成页面元素

热门文章

  1. java入门与进阶 P-3.2+P-3.3+P3.4
  2. Salesforce LWC学习(四十一) If:true 即将弃用?
  3. Python风格规范(转载)
  4. Python实用代码片段(1)-rot13加密
  5. (一) MdbCluster分布式内存数据库——基础架构介绍
  6. .NET周报 【2月第2期 2023-02-11】
  7. 解析sensor_msgs::PointCloud2 ROS点云数据
  8. 基础雷达图(radar)
  9. Python常见面试题006 类方法、类实例方法、静态方法有何区别?
  10. 跳板攻击之:Socks 代理转发