首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >qx.log.appender语法

qx.log.appender语法
EN

Stack Overflow用户
提问于 2016-09-20 12:08:43
回答 3查看 86关注 0票数 1

在声明qx.log.appender.Native或qx.log.appender.Console时,my (PyCharm)抱怨语法:

代码语言:javascript
复制
// Enable logging in debug variant
if (qx.core.Environment.get("qx.debug"))
{
    qx.log.appender.Native;
    qx.log.appender.Console;
}

(作为记录在这里)

我得到的警告是

表达式语句不是赋值或调用。

这是预处理器的魔力还是JavaScript语法的一个特性,我还不知道呢?

由于我的问题含糊不清,所以作出澄清:

我知道这是非常好的JavaScript语法。从评论中我得出结论,这里没有神奇的JS行为会导致日志添加程序被附加,而是一些预处理器特性?!

但这是如何运作的呢?这是硬编码的处理,还是这种语法适用于所有遵循特定约定的类?

提示如何关闭linter警告是有用的,但我更想知道这种“魔法”是如何工作的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-09-20 12:22:02

尽管默认情况下是法律代码,但我发现它有点丑陋,因为它是“无用的语句”(结果被忽略),除了我的编辑也抱怨这个事实之外。在我的代码中,我总是将它更改为如下所示:

代码语言:javascript
复制
var appender;

appender = qx.log.appender.Native;
appender = qx.log.appender.Console;

德雷尔

票数 1
EN

Stack Overflow用户

发布于 2016-09-21 07:39:45

生成器读取您的代码以确定您的应用程序需要哪些类,这样它就可以生成一个只有最小类的优化应用程序。

这两行是有效的Javascript语法,存在是为了创建对这两个类的引用,以便生成器知道包含它们-如果没有它们,应用程序中就不会有任何日志记录。

创建引用的另一种方法是在类注释中使用@use编译器提示,例如:

代码语言:javascript
复制
/**
 * @use(qx.log.appender.Native)
 * @use(qx.log.appender.Console)
 */
qx.Class.define("mypackage.Application", {
  extend: qx.application.Standalone,

  members: {
    main: function() {
      this.base(arguments);

      this.debug("Hello world");
    }
  }
});

这也同样有效,而且没有异常的语法--然而,在这个版本中,您的应用程序总是引用那些日志添加程序,而在框架中,您使用的qx.log.appender.Native/Console引用被if (qx.core.Environment.get("qx.debug")) {...}包围,这意味着在应用程序的非调试、./generate.py build版本中,日志添加程序通常会被排除在外。

您是否认为这是一件好事,这取决于您-就个人而言,这些天,我交付所有的应用程序与日志添加程序启用和工作,以便如果有人有问题,我可以查看日志(您可以编写您自己的附录发送日志到服务器,或只是远程控制用户的计算机)

编辑:另一个细节是,当创建一个类时,它可以有一个执行额外初始化的defer函数--在本例中,生成器需要检测qx.log.appender.Console,因此它确保了类的加载;然后类的defer方法将自己作为一个附录添加到了does日志记录系统中。

票数 1
EN

Stack Overflow用户

发布于 2016-09-20 12:14:24

这是一个有效的JS语法,所以很可能是linter的/预处理器的警告(看起来类似于ESLint的no-unused-expressions)。

编辑:

对于问题的另一部分--这个语法很可能使用getters或(由于它是一个新特性) Proxies (不太可能)。MDN提供了在引擎盖下如何工作的简单示例。

顺便说一句:没有所谓的“原生”JS预处理器。有像BabelTypeScript's compiler这样的编译器,但它们是单独的项目,与普通的JavaScript无关。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39593709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档