`
achun
  • 浏览: 315109 次
  • 性别: Icon_minigender_1
  • 来自: 河南郑州
社区版块
存档分类
最新评论

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

阅读更多

我们知道 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 属性来传递命令,所有的逻辑就是这么简单.

 

 

1
0
分享到:
评论

相关推荐

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 ...• SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和...

    利用FPGA设计DSP (内含代码)

    2. **VLSI设计**:对于高速的乘法器设计,可以采用更复杂的电路结构,如Wallace树或者Karatsuba算法来提高计算速度和效率。 #### 数据管理 数据管理部分主要涉及如何有效地管理和控制数据流,以支持信号处理器的...

    allegro板框设置方法.pdf

    ### Allegro板框设置方法详解 #### 一、导入网表及准备工作 ##### 1....在导入网表之前,通常...以上就是关于Allegro板框设置方法的详细介绍,希望能够帮助您更好地掌握Allegro的使用技巧,提升PCB设计的效率和质量。

    allegro基础知识汇

    Allegro提供了精细的元件移动与旋转选项,使设计者能够在不破坏设计整体性的情况下微调元件位置。首先,通过`Edit->Move Options Rotation Point`选择用户指定的旋转点,然后选择需要移动的组,利用`Ctrl+去除`完成...

    Allegro Book I.pdf

    - **注意**: 确保不影响整体结构。 **4.13 Edit/Text命令** - **描述**: 添加或编辑文本。 - **用途**: 添加注释、标记等信息。 **4.14 View/Zoom命令** - **功能**: 放大或缩小视图。 - **技巧**: 快速定位特定...

    idea-开发常用快捷键

    - **功能描述**:显示当前文件的方法、字段等结构。 - **应用场景**:查看当前文件的概览,便于了解整体架构。 7. **Go to a particular line number (Ctrl+G / Cmd+L)** - **功能描述**:直接跳转至指定行号。 ...

    PPT 毕业设计模板

    6. **编辑提示**:模板中的“Click to edit title style”提示表明你可以自定义标题样式以适应你的设计需求。通过调整字体、大小、颜色和对齐方式,确保标题与内容相协调。 7. **内容组织**:在“DiagramContents”...

    清新树叶答辩模板-白绿-PPT模板.pptx

    每个时间点下都有提示“Easy to edit the template editor, have any questions contact Spring and Autumn in Bazhong City, Sichuan Province ads.”,这表明如果在编辑过程中遇到问题,可以联系模板的设计者——...

    一种改进的基于树路径匹配的网页结构相似度算法 (2012年)

    这种方法不仅考虑了路径本身的相似性,还考虑了路径在整体结构中的位置关系。 2. **树路径位置相似度**:引入了位置相似度的概念,用于衡量树路径在网页中的相对位置。通过这种方式,可以更全面地评估网页结构的...

    587 School light ppt模板.ppt

    这包括字体、颜色、大小和对齐方式的调整,以确保与整体设计保持一致。 6. **内容组织**:文件中的“Content 01”,“Content 02”,“Content 03”等是示例内容标签,提醒用户在实际使用时替换为自己的文本。这种...

    oracle小结.ppt

    - 数据库系统:由数据库、DBMS、应用系统、DBA(数据库管理员)和用户组成的整体。 2. 数据库系统的特点: - 数据结构化:数据以结构化的形式存储,如关系型数据库中的表格。 - 高共享性、低冗余:多个用户可以同时...

    template-set1PPT模板.ppt

    "CLICK TO EDIT TITLE STYLE" 提醒用户可以根据需要自定义标题的样式,包括字体、大小、颜色和对齐方式,确保与内容主题和整体设计保持一致。 2. **内容填充**:模板中的“ADD TEXT”提示表明用户需根据自己的需求...

    matlab封装子系统

    在 MATLAB 中,封装子系统(或称为子模块)是一种组织和管理复杂模型的有效方法,它遵循模块化设计原则,能够提高代码的可读性和可维护性。子系统封装允许我们将独立的功能封装在一个单独的模块中,使其在Simulink...

    计算机常用英语下载,欢迎使用

    84. **Template** - 模板,预先设计好的布局,用于创建类似文档。 85. **Password** - 密码,用于验证身份的保密字符串。 86. **Code** - 代码,编程语言的指令或源文件。 87. **Print Preview** - 打印预览,查看...

    594 family light ani ppt模板.ppt

    在创建和编辑PPT演示文稿时,设计和布局是至关重要的元素,它们能有效传达信息并提升观众的观感。"594 family light ani ppt模板.ppt" 提供了一个设计精美的模板,适用于家庭主题的展示。该模板可能包含动画效果,使...

    571 business light ppt模板.ppt

    - 时间效率:预设的内容结构和设计元素减少了从零开始设计的时间,使用户可以专注于内容的准备和编辑。 - 图像版权:模板中的图像已经获得授权,仅供在PowerPoint模板内部使用,确保了合法合规性。 2. 如何自定义...

    Directshow_SDK笔记

    - **架构设计**: 介绍 DirectShow 的整体架构,以及各组成部分之间的关系。 ##### 2.4 Filter Graph 及其组成 - **Filter Graph**: 由多个滤镜(Filter)通过引脚(Pin)连接而成的数据处理流水线。 - **组件介绍**: ...

    powerpoint高级素材-很好很强大.pptx

    4. **标题样式编辑**:“Click to edit title style”提示用户可以个性化标题的字体、大小、颜色和对齐方式,以适应演示文稿的整体风格。 5. **3-D Pie Chart**:这种图表类型能更立体地呈现数据比例,增加视觉冲击...

    对日软件外包用语.doc

    - **アイデア(idea)**:指在软件设计过程中的创意或构思。 - **アイデンティファイ(identifier, ID)**:用来唯一标识某个对象的名称或编号。 - **アウト(out)**:表示“外部”或“外出”的概念。 - **アウトプット...

Global site tag (gtag.js) - Google Analytics