gpt4 book ai didi

Dojo 垃圾收集/资源释放技术?

转载 作者:行者123 更新时间:2023-12-04 20:17:31 28 4
gpt4 key购买 nike

我最近创建了一个我认为是基于页面的应用程序,它现在被用作嵌入的控件。 “控件”需要多次卸载/重新加载。这会导致订阅和未销毁的 dijit 控件出现问题。我已经制定了必要的断开连接,registry.destroy 逻辑,但它很乏味。是否有任何最佳做法可以使控件集合可销毁?

下面的示例代码显示了可以使用基本逻辑完成的操作:
http://pastebin.com/bUUBUMP9

我在问是否存在类似于 AppDomain 的框架,其中可以清除在该上下文中创建的任何内容。类似于在 IFRAME 中嵌入控件......但不是。

最佳答案

我可以看到两种做法可以让您的生活更轻松:

  • Dijit 小部件扩展 dijit/_WidgetBase因此小部件提供 (dis)connect(un)subscribe方法。您应该使用它们而不是通用 aspect.connect()topic.subscribe()在连接小部件时,因为这种方式小部件在被销毁时会自动断开连接并取消订阅,因此您不必这样做。
  • 通过 dijit/layout 组织您的小部件,例如使用 dijit/layout/ContentPane而不是将小部件放置在 DOM 中,因为这样您需要调用 destroyRecursive()就在ContentPane它会正确地摧毁它所有的 child 。根据您的需要嵌套容器以实现适当的粒度和视觉吸引力(与 Java 的 JPanel 概念相同)。

  • 应用上述原则,您可能只需要调用 destroyRecursive()在层次结构中最高的容器上销毁 dijit。

    关于Dojo 垃圾收集/资源释放技术?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10355559/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com