lowcodeEngine设计器源码简析(创建流程,主要对象), 怎么生成一个左侧面板
lowcodeEngine 怎么生成一个左侧面板
初始化流程
如何生成一个左侧面板
- 初始化插件时往skeleton.leftArea新增按钮,新增按钮时往skeleton.leftFloatArea新增面板对象
- 点击按钮时,调用panel方法,处理面板的显示隐藏
- 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 实例。
lowcodeEngine设计器源码简析(创建流程,主要对象), 怎么生成一个左侧面板的更多相关文章
- Flink源码阅读(一)——Flink on Yarn的Per-job模式源码简析
一.前言 个人感觉学习Flink其实最不应该错过的博文是Flink社区的博文系列,里面的文章是不会让人失望的.强烈安利:https://ververica.cn/developers-resource ...
- SpringMVC学习(一)——概念、流程图、源码简析
学习资料:开涛的<跟我学SpringMVC.pdf> 众所周知,springMVC是比较常用的web框架,通常整合spring使用.这里抛开spring,单纯的对springMVC做一下总 ...
- django-jwt token校验源码简析
一. jwt token校验源码简析 1.1 前言 之前使用jwt签发了token,里面的头部包含了加密的方式.是否有签名等,而载荷中包含用户名.用户主键.过期时间等信息,最后的签名还使用了摘要算法进 ...
- 0002 - Spring MVC 拦截器源码简析:拦截器加载与执行
1.概述 Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理.例如通过拦截器可以进行权限验证.记录请求信息的日 ...
- OpenStack之Glance源码简析
Glance简介 OpenStack镜像服务器是一套虚拟机镜像发现.注册.检索. glance架构图: Glance源码结构: glance/api:主要负责接收响应镜像管理命令的Restful请求, ...
- spring ioc源码简析
ClassPathXmlApplicationContext 首先我们先从平时启动spring常用的ClassPathXmlApplicationContext开始解析 ApplicationCont ...
- AFNetworking源码简析
AFNetworking基本是苹果开发中网络请求库的标配,它是一个轻量级的网络库,专门针对iOS和OS X的网络应用设计,具有模块化的架构和丰富的APIs接口,功能强大并且使用简单,深受苹果应用开发人 ...
- ElementUI 源码简析——源码结构篇
ElementUI 作为当前运用的最广的 Vue PC 端组件库,很多 Vue 组件库的架构都是参照 ElementUI 做的.作为一个有梦想的前端(咸鱼),当然需要好好学习一番这套比较成熟的架构. ...
- DRF之APIView源码简析
一. 安装djangorestframework 安装的方式有以下三种,注意,模块就叫djangorestframework. 方式一:pip3 install djangorestframework ...
- 并发系列(二)——FutureTask类源码简析
背景 本文基于JDK 11,主要介绍FutureTask类中的run().get()和cancel() 方法,没有过多解析相应interface中的注释,但阅读源码时建议先阅读注释,明白方法的主要的功 ...
随机推荐
- 方法的调用-JDK的JShell简单使用
方法的调用 方法在定义完毕后,方法不会自己运行,必须被调用才能执行,我们可以在主方法main中来调用我们自己定义好的方法.在 主方法中,直接写要调用的方法名字就可以调用了. public static ...
- Java JDK1.5: 泛型 新特性的讲解说明
Java JDK1.5: 泛型 新特性的讲解说明 每博一文案 听到过这样一句话:"三观没有标准.在乌鸦的世界里,天鹅也有罪." 环境.阅历的不同,造就了每个人独有的世界观.人生观. ...
- 命令行部署repmgr管理集群+switchover+切换测试
本次部署未使用securecmd/kbha工具.无需普通用户到root用户的互信. 建立系统数据库安装用户组及用户,在所有的节点执行 root用户登陆服务器,创建用户组及用户并且设置密码 [root@ ...
- el-table 在第一行添加合计行和操作按钮
1.预计效果如下 2.前端及样式部分 1)el-table <el-table size="small" stripe style="width: 100%&quo ...
- ASP.NET Core开发者指南(2022版路线图)
ASP.NET Core开发者指南 2022年 ASP.NET Core 开发者指南: 在下面,您可以看到一个图,说明可以采用的路径以及要成为ASP.NET Core开发人员所想要学习的库.我将此图作 ...
- keypoint数据结构
公有属性 (float)angle:角度,表示关键点的方向,-1为初值. (int)class_id:当要对图片进行分类时,我们可以用class_id对每个特征点进行区分,未设定时为-1,需要靠自己设 ...
- vant ui rem配置流程
参考地址 https://www.cnblogs.com/WQLong/p/7798822.html 1.下载lib-flexible 使用的是vue-cli+webpack,通过npm来安装的 n ...
- Prettier 在 Vite 项目下格式化报错
Prettier 配置文件有很多种格式,有.json..js..yml等.因为 Vite 默认项目用的模块机制是 ES6,我的配置文件又正好是.js,且用的模块机制是 CommonJS.所以就是如上图 ...
- SVN提交到服务器退回至指定版本(撤销操作)
一.撤销已提交内容如果不小心把修改错误的文件提交到服务器上去了 可对其进行复原(指定单个文件撤销) 解决方法: 查看修改的日志 查看错误提交的文件 可以查看到这个文件改了什么 复原此版本作出的修改 然 ...
- 【转载】python解决文本乱码问题及文本二进制读取后的处理
转自:https://blog.csdn.net/u011316258/article/details/50450079 python解决文本乱码问题及文本二进制读取后的处理 吲哚乙酸 当文本中含有很 ...