4

在 Alfresco Share 中,搜索页面是使用 Aikau 实现的。我对更一般的问题感兴趣,是否可以调试 Aikau 小部件?

我在这个问题上找到了一些链接,但他们更多地谈论日志记录而不是实际的 javascript 调试:

假设我有以下 Aikau 小部件 alfresco/search/AlfSearchResult 和其中的以下方法:

/**
       * This function is called to create a 
       * [SearchResultPropertyLink]{@link module:alfresco/renderers/SearchResultPropertyLink} widget
       * to render the displayName of the result. It can be overridden to replace the default widget 
       * with a reconfigured version. 
       * 
       * @instance
       */
      createDisplayNameRenderer: function alfresco_search_AlfSearchResult__createDisplayNameRenderer() {
         // jshint nonew:false
         var config = {
            id: this.id + "_DISPLAY_NAME",
            currentItem: this.currentItem,
            pubSubScope: this.pubSubScope,
            propertyToRender: "displayName",
            renderSize: "large",
            newTabOnMiddleOrCtrlClick: this.newTabOnMiddleOrCtrlClick,
            defaultNavigationTarget: this.navigationTarget
         };
         if (this.navigationTarget)
         {
            config.navigationTarget = this.navigationTarget;
         }
         new SearchResultPropertyLink(config, this.nameNode);
      }

有什么方法可以在使用 this.currentItem 的行插入断点并停止执行,以便我评估它的属性?

4

1 回答 1

7

是的,您可以通过多种方式调试 Aikau……首先要做的是确保您在启用“客户端调试”模式的情况下运行(在共享中或在您的自定义 Aikau 客户端中)。

例如,在 Share 中,您希望更新/WEB-INF/classes/alfresco/share-config.xml文件以进行更改:

<config>
  <flags>
     <client-debug>false</client-debug>

...成为...

<config>
  <flags>
     <client-debug>true</client-debug>

您需要重新启动 Share 才能使更改生效。然后您会看到在主标题菜单栏中有一个“调试菜单”项。如果您打开它,您可以通过将“调试日志记录”和“显示所有日志”切换为 true 来启用日志记录。

这将导致日志输出出现在您的浏览器开发者工具控制台中。您还可以微调日志输出以仅显示错误或警告,并提供 RegEx 表达式以匹配某些日志输出。

启用客户端调试后,浏览器加载的 JavaScript 源代码将被解压缩。这将使您更容易添加断点。

因为 Surf 将所有必需的模块源代码聚合到一个资源中(出于性能和缓存原因),您需要找到 Aikau 源文件 - 最简单的方法是使用“CTRL-P”(在 Chrome 中)打开资源并在出现的框中输入“surf” - 这将始终首先找到 Aikau 源代码。

Firebug for Firefox 可以更好地处理跨资源查找,因此您只需使用“CTRL-F”,然后粘贴到您想要中断的行中。

您可以像往常一样在此资源中添加断点,浏览器将中断它们。

除了设置断点外,您还可以使用 DebugLog 小部件。这可以从“调试菜单”中切换,并显示所有正在制作的发布和订阅。

也可以在开发时直接在页面中包含和配置alfresco/services/LoggingServicealfresco/logging/DebugLog小部件。我们对所有单元测试页面都采用这种方法。这在开发过程中可能是一种方便的方法,并且可以在您完成开发时将其删除。

演示文稿虽然很老,但也包含一些有用的调试技巧(参见幻灯片 56 开始)。

于 2016-09-08T10:06:18.753 回答