闭包编译器可以使用链接作为最小化技术吗?
Can closure compiler use chaining as a minification technique?
// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// @exclude_default_externs true
// @js_externs var console = {log: function(){}};
// @output_file_name default.js
// ==/ClosureCompiler==
/** @constructor */
function Test(){};
Test.prototype['action'] = function(){
console.log('Hello');
return this;
}
var test = new Test();
如果我添加一行:
test['action']()['action']()['action']();
并编译它,我得到这个大小:
113 bytes (101 bytes gzipped)
如果我用下面的代码替换这一行:
test['action']();
test['action']();
test['action']();
我得到了这个大小:
123 bytes (108 bytes gzipped)
我希望闭包编译器会认识到,因为我的函数返回this
,它可以将调用链接到action
(它是如何在第一个测试中完成的)并获得较小的大小结果。是否有一种方法来注释上述代码,使闭包编译器能够进行这种优化?
注:大小的差异是由链接引起的。输出的差异如下:
与链接:(new a).action().action().action();
没有链接:var b=new a;b.action();b.action();b.action();
有一个编译器传递:
https://code.google.com/p/closure-compiler/source/browse/src/com/google/javascript/jscomp/ChainCalls.java默认情况下不启用。它没有为我们测试的项目提供任何保存,但您可以尝试启用它。它由编译器的Java API中的"CompilerOptions#setChainCalls"方法控制。
相关文章:
- 最小化时暂停Javascript动画
- 全局窗口热键在最小化chrome窗口时调用js函数
- Grunt-将多个文件最小化/处理为一个文件
- Bootstrap一页导航Fluid网站最小化问题
- 最小化js时出现Gulp错误
- 最小化CSS/JS文件,并使用命令行创建一个文件
- 在Dojo构建期间,在最小化期间关闭文件编译
- Angular 2捆绑和最小化
- 剑道窗口还原在最小化然后还原时不调用调整大小事件
- 最小化在javascript中客户端/服务器之间发送的数据
- 咕噜咕噜 - 最小化指令
- 如何在追加函数创建后最小化单个框
- 如何禁用最大化,最小化和关闭按钮以打开新窗口
- 如何使用jquery裁剪插件最小化请求的图像
- 最小化Javascript和HTML代码
- 客户端HTML最小化
- 如何避免/最小化列表中列表的缩进
- 最小化httpInterceptor AngularJS$注入器错误
- 使用Sencha CMD最小化现有的ExtJS应用程序
- 闭包编译器可以使用链接作为最小化技术吗?