`
netcome
  • 浏览: 482118 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Dojo widget的析构过程

阅读更多

注:本文来自于李文兵的博客,对我分析javascript内存泄露非常有帮助,谢谢分享!

了解dojo widget(或者说dijit)的析构过程,不仅让你更加了解整个dijit的生命周期,同样也能帮助我们在自己定制化的dijit中如何正确地释放资源。(这里讨论的dojo应该是在0.9或者以上版本的)

下面是dijit的析构过程:

                        destroyRecursive
                    /                      \
                destroy                   destroyDescendants
        /        |        \
uninitialize  disconnect() destroyRendering

一些常见的错误是如下:

  • 使用destroy()去销毁一个dijit。我们应该使用destroyRecursive()去销毁一个dijit,从上面的过程可以看出,destroyRecursive()会销毁其孩子widgets。
  • 使用destory()去销毁定制dijit中的资源。更可怕的是有的代码可能是直接覆盖destroy,而根本不调用_Widget中的destory。uninitialize()才是dijit暴露出来给定制化widget进行析构的stub function。

结论

使用destroyRecursive()去销毁dijit,使用uninitialize()在定制化的dijit来释放自己的资源。destroyDescendants,destroyRendering基本上用不到,也不要去覆盖它们。

分享到:
评论

相关推荐

    基于 HTML5 的 Dojo Widget 开发

    Dojo Widget可以通过Canvas API创建动态图表,例如实时更新的数据曲线图。开发者可以通过JavaScript操作Canvas来动态绘制图表,同时利用Dojo的事件处理机制响应用户交互。 **2. 实现离线数据存储** 通过HTML5的...

    dojo widget安全通讯

    本文档旨在为项目团队提供关于Dojo Widget安全通信的深入理解,以便在实际开发和研究过程中遵循正确的安全实践,确保Widget之间的交互不会受到潜在的安全威胁。 2. **相关背景** 在OpenAjax的背景下,Managed Hub...

    dojo create custome widget

    创建自定义Widget的过程大致分为以下几个步骤: 1. **定义Widget结构**:首先,你需要决定Widget的HTML结构,这通常通过`templateString`或`templatePath`属性来实现。`templateString`直接在JavaScript代码中嵌入...

    Dojo之Widget标签开发 - 我为人人,人人为我 - BlogJava

    本文主要探讨的是在Dojo框架下进行Widget标签开发的技术细节,旨在帮助开发者更好地理解和利用Dojo构建可重用、模块化的Web组件。 首先,我们要了解什么是Widget。在Dojo中,Widget是UI组件的基础,它封装了HTML...

    Dojo的高级运用:Widget的制作

    <<Dojo的高级运用:Widget的制作>> 和 使用Dojo和JSON构建Ajax应用>> 中涉及到的源代码 博文链接:https://tailsherry.iteye.com/blog/102907

    widget-dojo

    Widget的主要目的是简化用户访问各种应用程序和网络服务的过程,提高效率,并增加趣味性。它们通常依赖于特定的Widget引擎来运行,如Yahoo! Widgets。 **Widget的类型与应用** Widget的应用非常广泛,包括但不限于...

    定义自己的dojo组件类

    每个 Dojo widget 都有一系列生命周期方法,如 `postCreate`、`startup` 和 `destroy`,它们在 widget 的创建、初始化、显示和销毁过程中被调用。理解这些方法有助于正确地管理组件的状态和资源。 ### 5. 测试 ...

    dojo dojo实例 dojo例子 dojo资料 dojo项目 dojo实战 dojo模块 dojo编程

    5. **dojo/Widget**:Dojo提供了丰富的UI组件,如按钮、表单、对话框等,它们都继承自`dojo/_base/widget.Widget`。开发者可以通过`dojo/_base/lang.extend`扩展自定义组件。 6. **dojo/Stateful**:这个基类提供了...

    DOJO客户端性能优化

    2. **减少Widget的使用**:每个DOJO Widget都会增加页面的加载时间,因此应谨慎使用,尽量减少不必要的Widget。优化Widget的使用有助于提高整体性能。 3. **更新到最新版本**:新版本的DOJO通常包含性能优化和错误...

    DOJO 学习笔记 dojo

    例如,`dojo.widget.*` 表示包含 Dojo小部件的所有模块,这些小部件是可复用的 UI 组件。当你声明需要使用某个包时,实际上是在要求加载该包下的所有模块。在 Dojo 中,使用 `dojo.require` 来声明所需的模块和包,...

    Dojo教程

    "Dojo Widget Overview"可能详细介绍了Dojo的组件系统,包括按钮、表单元素、布局容器等。Dojo的部件设计灵活,可以进行高度定制,同时支持主题化,以适应不同风格的网站设计。常见的Dojo部件有dijit.form.Button...

    DOJO API 中文参考手册,附加注解实例(精心重新排版DOC文档)

    例如,设置isDebug为true可以在开发过程中开启调试模式,baseScriptUri可以指定Dojo脚本的基础URI,parseWidgets控制是否自动解析页面中的Widget标签。通过正确配置djConfig,开发者能更好地优化Dojo的性能和功能。 ...

    Dojo 1.10版离线参考手册

    3. **Dojo Widget系统**: - Dojo的部件系统是其强大之处,它提供了一系列可复用的UI组件,如按钮、表单、对话框等。 - `dijit` 和 `dojox` 模块包含各种部件,`dijit`是主要的部件库,`dojox`则包含更多实验性的...

    dojo文档 dojo文档 dojo文档

    dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档

    DOJO中文手册【出自dojo中国】

    在技术特性上,Dojo的文件结构包括一个核心代码文件(Dojo.js)和多个JavaScript文件,按照功能不同分为多个版本,如AJAX版、Widget版、Event和I/O版、Event版以及Kitchen Sink版,满足不同应用场景的需求。...

    dojo相关详细资料

    Dojo 的强大之处在于其丰富的Widget系统。`dojo_widget.doc` 可能详细介绍了这些组件,如按钮、表单、菜单、日历等。Widgets使得开发者可以快速构建复杂的用户界面,它们封装了HTML结构、样式和行为,提供了高度可...

    利用dojo进行客户端开发过程

    在编程方式下,可以使用 `dojo/parser` 模块来解析这些 `data-dojo-type` 并实例化 widget。 总结来说,利用 Dojo 进行客户端开发,首先要正确配置 djConfig,引入 Dojo JS 文件以及所需的 CSS 样式,然后在 DOM ...

    dojo api 中文版

    其中 Dojo 是核心功能包,Dijit 中存放的是 Dojo 所有的 Widget 组件,而 DojoX 则是一些扩展或试验功能。 常用的包包括: * dojo.io:不同的 IO 传输方式,如 script 和 IFrame 等。 * dojo.dnd:拖放功能的辅助 ...

    DOJO API 中文参考手册

    5. **Dojo Widget系统 (dijit)**: dijit是Dojo的UI组件库,包含了各种可复用的、可配置的Web部件,如按钮、表单控件、对话框等。这些部件是模块化的,且遵循WAI-ARIA无障碍标准,以确保良好的用户体验。 6. **...

Global site tag (gtag.js) - Google Analytics