关于如何使用Google Closure Compiler结合多个JavaScript文件而不进行任何优化的任何想法?具体来说,我们希望使用Closure来部署我们的组合站点JavaScript的两个版本:发布和调试.要发布,我们正在使用--compilation_level SIMPLE_OPTIMIZATIONS --manage_closure_dependencies它按预期工作.但是,对于调试,我们希望我们的JavaScript完整/未修改地组合以便于调试.似乎最优化的水平是WHITESPACE_ONLY,任何想法都将受到赞赏.
Google Closure Compiler重命名代码中的所有"true","false"和"null"出现;
var s = true, x = null, V = false;
Run Code Online (Sandbox Code Playgroud)
而是使用这些短线; 在诸如此类的条件下;
if (someVariable == s)
Run Code Online (Sandbox Code Playgroud)
现在; Google Analytics代码定义了自己的"s"变量; 覆盖值"true"; 正如你所看到的,这会导致很多问题.
我不想改变GA代码; 我只是希望Closure Compiler退出重命名true等等.Externs不起作用.
你知道有什么方法可以做到这一点吗?
我使用了5个JavaScript压缩器来压缩JavaScript库(JSMin,YUI压缩器,Packer,闭包编译器和UglifyJS)
现在我知道闭包编译器是减少文件大小的赢家.但是,我也想测试一下性能提升.这样做有什么好办法?
我做了一个简单的测试页面,它使用了所有库的公共方法.是否有用于测试此测试页面的页面速度的工具?例如.在浏览器上运行X次并返回平均加载速度.
谢谢你的回答!
javascript compression packer yui-compressor google-closure-compiler
可以通过@suppress注释使用Google的Closure Compiler在每个文件的基础上抑制警告.但是,似乎不可能同时抑制多个警告 - 例如globalThis和checkVars警告.我试过了两个
/**
* @fileoverview
* @suppress {globalThis checkVars}
*/
Run Code Online (Sandbox Code Playgroud)
和
/**
* @fileoverview
* @suppress {globalThis,checkVars}
*/
Run Code Online (Sandbox Code Playgroud)
但两者都会导致@suppress注释被忽略.多@suppress行也不起作用.
compiler-construction suppress compiler-warnings google-closure-compiler
我刚刚接手了一个项目,因为我的客户以前的网络开发消失了.我必须使用的唯一文件是存储在本地服务器上的文件.我遇到的唯一问题是所有的JS都已经通过Closure Compiler(或类似的东西)运行,这使得javascript真的很烦人阅读(至少对于更大的功能).有没有什么可以帮助我重新插入JS中的变量,所以我有一些更清洁的东西看?我一直在手工做,而且变得很乏味.
这是我正在处理的一个例子:
var n = {},
e = a.extend(n, x),
y = "pageLoaded",
u = "pageLoading",
c = "modLoaded",
w = "xhrComplete",
l = true,
v = false,
s = a("body"),
g = Modernizr.historymanagement,
f = "",
t = "",
r = "",
k = null,
b = window.History;
Run Code Online (Sandbox Code Playgroud)
提前谢谢!
TRE
如果我在Aptana Studio 3中输入以下JavaScript代码,那么我预计会有一些错误,但它没有显示任何内容.
/**
* @type {string}
*/
var abc = 23;
abc.doesNotExists();
Run Code Online (Sandbox Code Playgroud)
如何启用对闭包类型注释的支持?
我一直在使用JQuery查看与GCC相关的所有帖子,但无法找到解决方案.JQuery仍然与GCC不兼容吗?如果没有,请参考相应的链接或提供示例?
见下文
/**
* @param {string} a
* @param {string} b
*/
var f = function(a, b){
// ...
}
/**
* @param {string} a
* @param {boolean} c
*/
var h = function(a, c){
f.apply(this, arguments); // no compile error
f.apply(this, [a, c]); // no compile error
f.call(this, a, c); // compile error: does not match formal parameter
}
Run Code Online (Sandbox Code Playgroud)
为什么Closure只在使用call而不是apply时引发错误?
有没有办法我可以进行闭包类型检查参数,即使我正在使用apply?
我正在为PIXI.js库准备externs.我收到以下警告:
js/Test.js:188: WARNING - Property position never defined on PIXI.Sprite
button.position.y = y;
Run Code Online (Sandbox Code Playgroud)
以下是相关的外部定义:
// UPDATE
/**
* @constructor
* @extends {PIXI.Container}
* @param {PIXI.Texture} texture
*/
PIXI.Sprite = function(texture){};
/**
* @constructor
* @extends {PIXI.DisplayObject}
*/
PIXI.Container = function(){};
/**
* @constructor
* @extends {PIXI.EventEmitter}
*/
PIXI.DisplayObject = function(){};
/**
* @type {PIXI.Point}
*/
PIXI.DisplayObject.position;
Run Code Online (Sandbox Code Playgroud)
仍然得到同样的警告.
我究竟做错了什么?
当我更换PIXI.DisplayObject.position;使用PIXI.DisplayObject.prototype.position;,似乎清除警告.
这是否意味着我应该始终明确SomeObject.prototype.prop而不是SomeObject.prop?
我收到这个警告:
WARNING - restricted index type
found : string
required: number
someArray[ index ].doSomething();
Run Code Online (Sandbox Code Playgroud)
这在闭包编译器升级到最新版本后发生.看起来封闭编译器不推荐使用数组的字符串类型索引.
这个问题的推荐解决方案是什么?
BTW.有没有办法禁用检查这些警告类型(我查看了CC标志列表,找不到任何东西)?