如何使用Google Closure编译器删除未使用的代码?
我正在使用JQuery Slider控件但是我没有在JQuery中使用任何其他东西.所以我读到高级模式下的Google Closure编译器可以删除未使用的代码,但我不知道如何.
我有frontpage.html链接到我的网站上托管的html页面的外部JQuery,JQuery UI和JQuery Slider控件.
在我的frontpage.html上,我还在HTML中嵌入了JavaScript,启动了JQuery Slider控件.
我如何使用我使用在线Closure Compiler来评估我的frontpage.html,JQuery,JQuery UI和JQuery Slider来删除我不使用的所有未使用的JQuery代码?
javascript jquery jquery-ui google-closure google-closure-compiler
在Google Closure Compiler中,我收到了警告
警告 - 危险使用全局此对象
这是一个例子.错误行和偏移量指的是单词的开头this
function aToggle() {
  if(shown)
    toggle.show()
  else
    toggle.hide()
  $(this).text(shown ? 'Click to hide' : 'Click to show')
  shown = !shown
}
link.onclick = aToggle
我只是将它改为匿名方法,但我aToggle在文件的其他地方重新使用,所以需要命名.
我可以标记aToggle为/**@constructor*/- 但它不是构造函数.是否有另一个注释我可以用来消除这个警告,或者我是否在将其标记为构造函数或者出现一堆无用的警告之间?
虽然JavaScript及其许多库(jQuery,RequireJS)允许创建许多优秀的网站,但我在考虑构建更大的网站时发现它缺乏类型安全性.
谷歌有一个很棒的闭包编译器,它允许你用JSDoc 注释你的JavaScript并进行类型检查.在尝试了它的丰富类型系统之后,我希望这会大大提高更长寿的JavaScript项目的可维护性.
唯一的问题是它与RequireJS等AMD库不能很好地协同工作.有一个实验性的--transform_amd_modules标志,用于连接JavaScript文件并通过消除它来处理范围.然而,这似乎是一种反模式,消除了RequireJS的大部分好处(但保留了模块化文件结构).还有一个问题是未来将获得多少支持
最终目标是类型安全,而不是昂贵的RequireJS的好处,这将是我最好的赌注?
PS:虽然我使用RequireJS作为AMD库的首选,但我不会反对使用不同AMD库的解决方案.
有没有一种简单的方法可以在我的Chrome扩展程序代码中使用高级优化?
它使用chrome API,而Advanced Optimization不会重新识别其关键字.是否有文件或其他东西可以驱逐所有chrome API?
是否有任何压缩机负责移除在应用程序中无法调用的开关盒?
function execute_case(id) {
    switch(id) {
    case 0:
       console.log("0");
       break;
    case 1:
       console.log("1");
       break;
    case 2:
       console.log("2");
       break;
    case 3:
       console.log("3");
       break;
    default:
       console.log("default");
       break;
    }
}
execute_case(1);
如果以上就是我所拥有的,那么理论上情况0,2,3就是死代码并且永远不会被执行.在缩小代码时,是否有任何压缩器具有删除此代码的智能?
我正在看一段代码,它在一个switch语句中有超过200,000个案例,因此问题.
谢谢,-Vikrant
javascript performance yui-compressor google-closure-compiler
谷歌的Closure编译器有一个"@typedef"标签,但你可以在你的代码中使用它们吗?(我知道它会起作用,但它不受欢迎吗?)
所以这是我的类型
/**
 * The plan object's typedef
 * @typedef {Object}
 */
Types.Plan = {
    "style": "bordersmall",
    "width": "50%",
    "height": "40%",
    "x": "20%",
    "y": "10%",
    "clickable": true,
    "moveable": true
};
然后我可以在我的JSDoc注释中使用该类型.
这允许我的IDE在传递的参数上给我自动完成功能
因此声明的对象不会在代码中的任何位置使用.
/**
 * The Instructions class
 * @param   {Types.Plan}    plan        Plan for position and dimension
 * @param   {Manager}       manager     The manager
 * @param   {Instructions}  parent      This widget's parent's instructions
 * @return  {Instructions}              Returns the new instructions object
 */
Instructions = function(plan, manager, parent){
    plan.
}
这样可以吗?或者有更好的解决方案吗?
有没有人得到Google Closure Linter(gjslint)与Sublime Text 2 for Windows一起使用?
当我运行它时,我得到以下内容(通过工具菜单或CTRL + SHIFT + J):
文件名,目录名或卷标语法不正确.
closure linter:忽略0错误.
我的步骤如下:
开箱即用,没有任何功能.但是,如果我在默认设置中对路径进行硬编码,我可以使用fixjsstyle插件:
{
    // Path to the gjslint.
    "gjslint_path": "/python27/scripts/gjslint",
    // Path to the fixjsstyle.
    "fixjsstyle_path": "/python27/scripts/fixjsstyle"
}
可以确认它们都存在:
C:\>dir c:\python27\scripts
 Volume in drive C is OSDisk
 Volume Serial Number is 36E3-7433
 Directory of c:\python27\scripts
...
06/29/2012  09:48 AM               304 fixjsstyle-script.py
06/29/2012  09:48 AM             7,168 fixjsstyle.exe
06/29/2012  09:48 AM …我正在使用jQuery插件和Google Closure Compiler.问题是,当我将该插件的URL添加到编译中时,插件中存在错误,编译失败.所以我想为该插件创建一个extern.基本上,我只使用整个库中的1个对象和2个方法; 这样的事情:
var TheObject = $.plugin({...});
var SomeVar = TheObject.someName.otherName(SomeString, {
      prop1: [...],
      onError: function () {...}
});
TheObject.SomeMethod();
我查看了Google网站上的文档,但它是从一个令人困惑的"它是什么"的角度编写的,我需要一个简单的"操作方法"视角来说明如何做到这一点.我需要做些什么才能为我所拥有的东西创建一个外部?
谢谢.
在NodeJS应用程序中,使用缩小的源代码服务器端有什么好处吗?
我能想到的唯一好处是,较小的JS文件可能会从磁盘上稍微加载一下.但这似乎可以忽略不计,因为它只会影响启动时间.
那么,在将它部署到我们的生产服务器之前,是否有任何理由通过uglify或闭合编译器处理我们的源代码?
我喜欢使用Closure库以及使用Closure Compiler和库背后的想法.我已经在几个项目中使用过它,例如Post This For Me.一个重新发布的项目.
我正在考虑在一个庞大的项目中使用Closure我已经开始在那里与许多开发人员合作,而这些开发人员并没有像我一样快.
我不喜欢使用Closure的一件事是在网络上缺乏良好的文档,帮助和示例.
我的问题是,开源Closure项目的未来是什么?谷歌放弃了吗?我知道它在Google内部使用了很多,但我很少看到它在网络上的其他地方使用过.我应该引导我的团队使用它还是我可能犯了一个大错?
在此先感谢您的帮助和建议.希望也许一些Google员工可能会看到这一点.
google-closure google-closure-library google-closure-compiler
javascript ×8
jquery ×1
jquery-ui ×1
jsdoc ×1
minify ×1
node.js ×1
performance ×1
python ×1
requirejs ×1
sublimetext2 ×1
type-safety ×1
uglifyjs ×1