首页 > 其他分享 >飞码LowCode前端技术之画布的设计

飞码LowCode前端技术之画布的设计

时间:2023-11-27 14:14:03浏览次数:25  
标签:LowCode 目标 画布 设计 组件 飞码 拖拽

简介

本章节从精准定位、分层设计、异步组件、拖拽四个方面分析飞码画布设计。

一、精准定位设计

飞码画布是一个套件,可对外提供画布能力。精准定位有两种情况,一是目标组件无子组件,而是目标组件有子组件。

无子组件:目标组件分为支持与不支持放子组件两种情况。

有子组件:鼠标相对于子组件(目标组件)对角线位置。详见图1

图1

当目标组件不支持放子组件时,需要计算拖拽组件放在目标组件的左侧、上侧、右侧、还是下侧?其计算方法如图2

图2

通过鼠标位置,目标组件,组件对角线坐标位置可推导出图1右侧图拖拽组件与目标组件位置关系。

问题:飞码为何不提供尺度(x、y),这样可以精准知道组件大小?

实际使用过程中,搭建人员并不关心组件的具体x,y。一般关注一行几列与组件宽度。

二、分层设计

低代码画布设计有很多方案,飞码采用的是双层设计模式。该设计模式优势很多,与画布中组件是解耦关系。开发过iOS,安卓native的同学较容易理解。如图3

图3

画布中底层是组件渲染层,根据页面DSL渲染组件布局,在组件渲染层上还有一层canvas-mask视图。当点击某一个组件之后,根据组件会在组件最边框添加颜色,组件右侧上方(根据页面布局自动切换到下方)添加工具条(更多、上移、下移、复制、删除),hover区域。支持组件宽度拖拽调整,组件的最右侧有一个呼吸道效果的线条,鼠标可以对该组件宽度进行拖拽调整。这样极大方便了样式调整操作。

问题:既然支持了组件左右大小调整,为何不支持组件的上下大小调整?

飞码对div,form等容器组件在编辑态中上下大小会根据子组件高度进行自动调整。飞码并不知道组件的宽度大小。

三、异步组件

飞码提供常用的组件能力,飞码搭建业务定制化的组件困难。飞码提供动态加载组件能力,动态组件加载分为编辑态与运行态。编辑态在组件拖到页面的时候会根据组件数据中type判断当前组件类型。若type=2,飞码引擎会创建script下载相关url对应的组件,之后做缓存。运行态思路一致。

四、拖拽设计

拖拽组件的时,每一个组件需要混入一些特定处理,例如form表单的子组件是不是el-form-item等情况。见图4

图4

组件拖拽开始会记录currentTarget获取到组件id,并对dataTransfer进行设置image。这样就可以看到拖拽组件的样式。混入方法使用hoc,增强组件的一个方法。详见图5所示。

图5

四:小结

本章节分析了飞码画布在精准定位、分层设计、异步组件、拖拽四个方面的设计。飞码的目标是:便捷、稳健、0测试,使前端web单页面快速投产。感谢产品同学和服务端同学的大力支持。

作者:京东科技 王光辉

来源:京东云开发者社区 转载请注明来源

标签:LowCode,目标,画布,设计,组件,飞码,拖拽
From: https://www.cnblogs.com/jingdongkeji/p/17858870.html

相关文章

  • 简单的低开编辑器(三):实现组件画布内拖拽
    好家伙,0.代码已开源Fattiger4399/lowcode-demo:一个简单的低代码编辑器技术栈:Vue3element-plusjsx(github.com) 本篇实现效果如下: 1.分析这玩意的思路很好理解本质上就是给组件绑个拖拽方法拽到哪里,就把位置更新给组件就好了,简单粗暴当然,需要做选中判定,知道我......
  • 飞码LowCode前端技术:如何便捷配置出页面
    简介飞码是京东科技平台研发部研发的低代码产品,可使营销运营域下web页面快速搭建。本文将从三个方面来讲解如何便捷配置出页面,第一部分从数据、事件、业务支持三个方面进行分析,第二部分从模板与页面收藏与升级、页面UI结构、画布功能三个方面进行分析,第三部分从监控、页面配置、......
  • 飞码LowCode前端技术:如何便捷配置出页面 | 京东云技术团队
    简介飞码是京东科技平台研发部研发的低代码产品,可使营销运营域下web页面快速搭建。本文将从三个方面来讲解如何便捷配置出页面,第一部分从数据、事件、业务支持三个方面进行分析,第二部分从模板与页面收藏与升级、页面UI结构、画布功能三个方面进行分析,第三部分从监控、页面配置、页......
  • 阿里低代码引擎 | LowCodeEngine - 如何将新组件库接入物料,以TDesign为例
    阿里低代码引擎默认提供了以antd为例的物料,并搭建了以antd为物料的示例demo,但实际中我们使用的不一定就是antd,有可能是别的组件库,也有可能是自己公司的组件库,这里就以自己为例告诉大家如何将新组件库接入阿里低代码引擎的物料中,以腾讯的组件库tdesign为例。先看阿里低代码引擎的d......
  • 飞码LowCode前端技术系列(一):数据结构设计
    简介飞码是京东科技研发的低代码产品,可使营销运营域下web页面快速搭建。飞码是单web页面搭建工具,从创建页面到监测再到投产的一站式解决方案。会通过七篇文章介绍飞码,分别是:(1)背景与数据结构设计,(2)如何便捷配置出页面-1,(3)如何便捷配置出页面-2,(4)如何便捷配置出页面-3,(5)如何便捷配置出......
  • visio调整画布大小和画大括号
    一、visio调整画布大小第一步,打开Visio,并新建一个空白文档。第二步,按住“Ctrl”键,将光标移到画布的边缘或者四角处,就可以看到光标变成了两边都有箭头的黑色光标了,然后移动鼠标,就可以改变画布的大小了。二、visio画大括号在Visio文档中,依次点击“文件(File)”—“形状(Shapes)”--......
  • HTML Canvas 画布
      HTML <canvas>画布元素用于通过脚本(通常是JavaScript)动态绘制图形。 <canvas> 画布元素只是图形的容器。您必须使用脚本来实际绘制图形。 <canvas>有几种用于绘制路径、框、圆、文本和添加图像的方法。绘制canvas<!DOCTYPEhtml><htmllang="en"><head><met......
  • 柱状图,折线图 坐标轴距离画布的距离
     grid:{left:"3%",//坐标轴距离左侧right:"4%",//坐标轴距离右侧bottom:"10%",//坐标轴距离底部containLabel:true,}, 参考下面理解 ......
  • Canvas之画布操作
    目录Canvas之画布操作作者微博: @GcsSloop【本系列相关文章】上一篇Canvas之绘制基本形状中我们了解了如何使用Canvas绘制基本图形,本次了解一些基本的画布操作。本来想把画布操作放到后面部分的,但是发现很多图形绘制都离不开画布操作,于是先讲解一下画布的基本操作方法。一.Canv......
  • unity 关于如何调整Canvas画布的大小
    如何调节Canvas画布大小呢?1.先在Hierarchy面板选择Canvas对象2.然后在Inspector找到Canvas3.最后找到RenderMouse,在下拉列表中选择WorldSpace选项;即可更改画布的大小。    ......