当一个软件为了达到一定的业务扩展性时(产品上线后限定范围内的用户需求无需变更代码,通过简单的配置可满足用户的要求),必然要求软件是可配置的。

笔者过去开发过很多配置型的管理软件,从可配置的表单设计(Form Designer),报表设计(Report Designer),到工作流设计(Workflow Designer),不管技术如何日新月异,需求总是不变的在那里,不增、不减:一个支持设计时和运行时可视化组件设计的轻量级开放平台,这里有几个关键概念:可视化、运行时、设计时、轻量级,以及最重要的特征:基于web。因为随着移动化的发展,轻应用,重前端逐步成为趋势,下载安装应用的成本越来越高,而且不能跨平台,所以应用场景从过去本地可执行应用c/s形式变为了网页端的b/s方式。可视化组件设计器的应用场景还是很广泛的:办公管理或生产管理类软件的工作流设计(图1),流程设计,电子电路设计,物联网数据采集和监控的组态设计等图形化设计(图2)。

工作流设计(图1,图片来源网络)

数据采集与监控组态设计(图2,图片来源网络)

我希望将过去所做过的一些项目和技术组合起来,将实现过程写成一系列的技术文章,通过从零起步,实现一个Web可视化组件设计器,并允许开发者进行二次开发,扩展设计时和运行时的组件。同时在这个过程中介绍一些基础的知识,技巧,模式与实践,也希望整个实现过程的思路和分析能够对有需要同学有所借鉴的意义,不论是学习的新手还是程序猿都能从获益。对我自已而言,也是一个回顾和总结的机会。每篇文章的未尾都会附上源码(不过自已敲代码更加提升印象),对初学者来说需要提前掌握的技术有html\javascript\jquery的基础。

技术分析:

随着互联网技术和应用的不断发展,应用软件从单机或客户(Client)/服务器(Server)逐步往浏览器Browser/Server服务器的模式发展,笔者自身一直工作在微软系的开发技术栈上,从vb、c++到c# winform再到asp.net web开发不断转型的过程。近年来Web前端的技术发展很快,虽然出现了许多优秀的web前端应用框架,但可视化组件设计器技术往往还是停留在基于偏客户端的独立exe应用,或是早些年前偏客户端的web应用如:activeX/flex/Silverlight/WPF等,随着html5技术的快速发展,纯js、跨平台的组件设计被提出,在运行时组件可视图可兼容不同的浏览器显示,无需安装任何插件(想想都很激动,笔者就曾经被ActiveX的浏览器安全,flex和silverlight的插件安装烦到爆)。基于canvas和svg的第三方图形化js库有很多,如:GraphicsJS、Raphaejs、PaperJS、glfx.JS等等。后续将选择paperjs库作为本项目的第三方图形api库,用来在浏览器渲染图片、文字和动画。

初步设想本项目最终的输出的成果只有一个js文件和css样式文件,初步命名为visualDesigner.js和visualDesigner.css吧,并定义成jquery插件的形式,方便大家使用。

用户场景:

一.设计时(实施时管理员设计好)

1.用户初始化设计器(组件拖动、选择、组件封装、继承等)

2.用户扩展组件(自定义组件,比如在图2组态设计中各种组件的展现形式和运行状态都是不同的,用户可自已增加)

3.用户扩展设置组件状态(比如图中某一个电器的待机、运行、暂停、关机等状态)

4.用户扩展组件的事件(比如依赖输入的参数来确定后续动作(也可是调用接口))

5.用户设置组件的状态变化订阅接口(如组态的某一元件状态的读取接口)

5.用户扩展设器的保存(通常设计为回调函数,用户将回调的设计器布局、元素、事件设置等保存起来)

二.运行时

1.用户初始化运行时设计器

2.用户从本地加载保存的设计文件,打开。

3.用户设置各组件的状态,

4.设计图更新组件状态(可定时以周期订阅的形式刷新)

目录:

1.概述

2.JS组件概念

3.鼠标Drag/Drop事件

4.设计时的组件选择与移动

5.javascript OOP编程:封装、继承

6.设计器元素管理

7.组件连线(贝塞尔曲线)

8.图片组件和动画效果

9.组件大小调整

10.组件连线(折线)

11.删除组件

12.手机端如何拖动组件

13.界面美化

14.折线的中间点调整

15.组件的运行时支持

16.小结:类图

17.组件文本编辑和显示

18.拖动时的辅助对齐线

19.属性设置

(目录中带链接的是已经完成的,黑色字体的只是做了个开发计划)

。。。(待续)

(本系列文字和代码均为原创,如需转载或项目使用请注明出处)

转载于:https://www.cnblogs.com/coolalam/p/9584812.html

1. 概述--从零起步实现基于Html5的WEB设计器Jquery插件相关推荐

  1. 8.图片组件和动画效果--从零起步实现基于Html5的WEB设计器Jquery插件(含源码)...

    前面示例我建立了三种形状的组件,圆.矩形.椭圆,本节我将再扩展两种类型:图片和动画,并通过这个过程来论证前面OOP的编程是如何简化扩展工作的: 首先要在工具条里增加这两个组件,以便可以拖动: < ...

  2. 7.组件连线(贝塞尔曲线)--从零起步实现基于Html5的WEB设计器Jquery插件(含源码)...

    上节讲到如何创建组件,清除设计器视图,以及设计视图的持久化和恢复,本节将重点讲如何实现组件间的连线,前面章节有提到为了方便从持久化文件中恢复,组件和连线是分别存放的:nodes和lines对象,两个组 ...

  3. html5 倒计时插件,基于HTML5 time元素的倒计时jquery插件

    这是一款简单的基于HTML5 time元素的倒计时jquery插件.该jquery倒计时插件提供默认的翻牌样式,可以在所有支持HTML5 time元素的浏览器中正常工作. 安装 可以通过npm来安装j ...

  4. html圆圈倒计时,基于HTML5 canvas圆形倒计时器jQuery插件

    这是一款基于html5 canvas的圆形倒计时器jQuery插件.它可以使你非常轻松的创建圆形的倒计时器.该jQuery倒计时器插件有12种themes,它们基于 HTML5 canvas 来渲染各 ...

  5. 基于HTML5移动web应用

    一.基于HTML5移动web应用 1.canvas 绘图 2.多媒体 3.本地存储 4.离线应用 5.使用地理位置 6.移动web框架 二.具体说明 1.HTML5标准最大的变化就是支持Web绘图功能 ...

  6. 基于地图的工作流设计器,及基于地图的业务流程办理界面(二)

    基于地图的工作流设计器,及基于地图的业务流程办理界面(二) ---------------------------------------------------------------------- ...

  7. 基于J2EE+JBPM3.x/JBPM4.3+Flex流程设计器+Jquery+授权认证)企业普及版贝斯OA与工作流系统...

    基于J2EE+JBPM3.x/JBPM4.3+Flex流程设计器+Jquery+授权认证)企业普及版贝斯OA与工作流系统 课程学习地址:http://***/goods.php?id=173 本项目是 ...

  8. 基于Vue实现的Activiti工作流Web设计器

    真正的大师,永远都怀着一颗学徒的心! 一.项目简介 基于Vue实现的Activiti工作流Web设计器 二.实现功能 支持生成xml文件 支持生成子流程 支持连线 组件有:起点.终点.判断.条件.任务 ...

  9. 基于bpmn-js的流程设计器

    文章目录 基于bpmn-js的流程设计器 一.技术栈 二.功能列表 三.代码 1.package.json 2.路由 3.样式 4.高亮 5.下载文件 6.国际化 7.vue组件 参考资料 基于bpm ...

最新文章

  1. 微软虚拟学院开学了!
  2. mvc html.displayfor,我想了解@ Html.DisplayFor(modelItem = item.FirstName)中的lambda表达式...
  3. drools dmn_DMN 1.1 XML:从建模到使用Drools 7.0的自动化
  4. Python学习笔记之if语句(一)
  5. zookeeper多种方式安装
  6. java利用穿透_Java本地的項目,怎么可以讓別人通過外網訪問-內網穿透
  7. wamp php不可用_解析wamp的php.ini设置不生效
  8. npm audit fix
  9. 错误:'BasicLSTMCell' object has no attribute '_kernel'
  10. 微信小程序架构图与开发
  11. MSF+APK注入绕过手机防护上线远控及安全防护建议
  12. CSDN账号注销问题
  13. Anroid通过设置“自启动管理”让应用被杀死也能收到推送消息
  14. 天气预报接口应该怎么开通?
  15. 关于日程权限、黄历App功能使用流程
  16. vue3 - 网页大转盘抽奖功能,支持后端接口确定最终奖品,可自定义轮盘宽高、颜色、字号、按钮等等(超详细的示例代码及注释开箱即用,稍微改改就能应用到你的项目中)
  17. PTA 最大和最小 (10 分)请使用指针法(间接访问)编写程序,程序的功能是从键盘输入 10 个数,求其最大值和最小值的差。
  18. 计算机信息系统安全管理的主要原则有哪些,网络系统安全性设计原则有哪些
  19. 读书笔记:软件工程(7) - 软件过程模型:螺旋模型、迭代开发
  20. Armv8-R系列之ARM Cortex-R52 由来

热门文章

  1. C#中具有进程间通信的Singleton应用程序
  2. 用于数据输入的基本WPF窗口功能
  3. CentOS 7.7(1908)发布
  4. coreldraw凹槽_CorelDRAW教程 打造逼真静物写生油画
  5. arm 大端还是小端_用C/C++带您了解计算机中大端小端之谜
  6. java的k-means算法_k-means聚类算法的java实现描述!
  7. 杭电第七次作业c语言短学期,杭电短学期:算法与编程.doc
  8. phpcms9.6 ueditor_Phpcms v9深度整合百度编辑器Ueditor
  9. proxmox换源_关于Proxmox 5.x的国内有效镜像源
  10. mysql故障切换_MySQL故障切换笔记之应用无感知设计详解