inEdit 的设计方法--整体结构

inEdit编辑器设计
inEdit是一款基于JavaScript的WYSIWYG编辑器,采用扩展方式实现面向对象编程。设计中包含inCore、inQueue和inI18N等多个模块,支持多实例编辑,并通过简化事件处理提高效率。

我们知道 OOP 的编程方法是为多数开发者喜欢的.javascript 作为 OO 的语言也具有对 OOP 的支持,

但是 javascript 不同于其他的语言,javascript 里并没有 class 的概念.

我认为 javascript 在 OOP 实现上其实都是扩展的方法,因此在设计 inEdit 的时候我决定完全用扩展的方法来进行设计.因此在 inEdit 里是见不到 prototype 原型定义这种方法的,了解 inEdit 的设计方法对使用和扩展 inEdit 是很必要的.

为完成这个目标,首先我设计了

  1. inMixin :混入对象,其实就是其他库里面常见的 extent 了,不过由于实现不同,就起了一个新的名字
  2. inCore :提供了 javascript 编程里面常用的函数支持,比如字符串trim,数组/对象的遍历,ElementNode的遍历/style设置/属性设置等
  3. inQueue :队列,我认为队列是一组顺序执行的function,因此Event也属于队列的一种,所以在设计inQueue时,把Event的处理也包括进来,对于命令式的function队列虽然也实现了,可我自己都不知道什么时候用,所以目前仅仅在理论上存在这种需求.


另外对于WYSIWYG编辑器来说,国际化支持是很必要的,因此设计了inI18N,

inEdit 就是在inCore,inQueue的基础上扩展而来的.对inI18N来说扩展这个词不合适,用inEdit 混入了 inI18N比较合适,看了代码也许大家就明白我为什么这么说了,但这样说却不会有错误:

inEdit 混入了 inCore,inQueue, inI18N.

因为对于 javascript 编程来说Mixin混入的概念仍然不确定,我这样用了当然可以用自己的理解来定义这个词.并且从词义上这种说法也可以通过.

要全面介绍这几个对象的实现还不如直接看源代码,源代码里多数函数都做了注释.
这里仅仅介绍 inEdit 在结构上的设计.

inEdit 认为:

  1. 多数情况下在一个页面上不管有多少需要 WYSIWYG编辑的元素,仅仅需要一个编辑面板就够了,当然如果需要多个面板 inEdit 也是支持的.也就是说 inEdit 支持所谓的多实例 编辑.
  2. 一个编辑器在视觉上仅仅需要三部分组成,面板(panel),弹出层(modalPanel),实例(Instance,当然可以有多个).而inEdit在设计 modalPanel 时把它作为 panel 的子节点设计了,原因很简单某一时刻只可能有一个点击行为,不管你点的按钮在 panel 上还是 modalPanel 上,因此 modalPanel 仅仅是 panel 中的一个特殊的可以隐藏或显示的按钮组罢了.
  3. 经过上面的阐述该说说事件的处理了,常见的编辑器为不同的点击命令( 触发 Element)增加了各自的 Event , inEdit 事实上把所有的触发 Element 都置于 panel 下,那其实只需要对 panel 加一个 click Event,然后通过分析触发事件的 target||srcElement 就可以了, inEdit 正是把参数以 inEditButton 对象附加到这些Element 或其 parentNode 上来完成整个 触发事件的分发
  4. 上面说的是事件,具体到 inEdit 对象上其实具体体现到成员函数上了, inEditButton对象中有 command 属性,inEdit 首先判断有没有与 command 同名的成员函数有的话,就调用,没有的话就当作 document.execCommand 的命令转发出去了.
  5. 因此 inEdit 的结构是平板式的,函数就是 inEditButton 中的command 属性,inEditButton 附身于 panel (modalPanel),inEdit 监听panel的chick事件,捕获后通过分析 target||srcElement 的 inEditButton 属性来传递命令,所有的逻辑就是这么简单.

 

 

【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值