JScript 条件编译 + JavaScript 压缩 = 预处理器?

发布于 2024-11-17 13:52:43 字数 512 浏览 2 评论 0 原文

是否有任何 JS 压缩器允许您使用 #ifdef-pre-processing-type 操作"nofollow">JScript 条件编译

如果 @set 定义了一个“变量”,那么 JS 压缩器就不能删除条件编译逻辑定义的未编译的代码吗?

我对 JScript 语法有点不确定,但也许这样的东西

/*@cc_on
    @set (@version = 1)
    @if (@version == 1)
        alert('Version 1');
    @else
        alert('Not version 1');
    @end
@*/

可以压缩成

alert('Version 1');

Do any of the JS compressors allow you to do #ifdef-pre-processing-type things with JScript conditional compilation?

If @set to defines a “variable” couldn't a JS compressor remove code that the conditional compilation logic defines at not compiled?

I'm a little unsure of JScript syntax but perhaps something like this

/*@cc_on
    @set (@version = 1)
    @if (@version == 1)
        alert('Version 1');
    @else
        alert('Not version 1');
    @end
@*/

could compress into

alert('Version 1');

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谁的年少不轻狂 2024-11-24 13:52:43

闭包编译器可以通过 @preserve 注释,但是闭包编译器和任何其他基于解析树的压缩器总体上都不能很好地处理 CC。

这是一个难题。处理条件编译需要推理多个可能的解析树,而不仅仅是一个。

一些非常简单的压缩器只是将 JS 视为一系列标记而不是操作解析树,这可能在条件编译方面做得更好,但它们在压缩方面总体上表现较差。

一种解决方案可能是编译所有源文件,除了具有条件编译指令并且仅导出其他源文件使用的变量的源文件。

Closure compiler can preserve comments via the @preserve annotation, but neither closure compiler not any other parse-tree based compressor does a good job with CC in general.

It's a hard problem. Handling conditional compilation requires reasoning about multiple possible parse trees, instead of just one.

Some of the really simple compressors that just treat JS as a series of tokens instead of manipulating a parse tree might do better with conditional compilation but they do much worse overall at compressing.

One solution might be to compile all your source files except one that has conditional compilation directives and that simply exports variables that are used by the other source files.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文