#7318 closed feature (wontfix)
Support Closure Compiler ADVANCED_OPTIMIZATIONS
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | low | Milestone: | |
Component: | misc | Version: | 1.4.3 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
If I paste jQuery minified code to the top of my JS file and my code to the bottom, It works fine uncompiled.
If I use closure compiler in simple optimizations it works fine
I want to be able to use advanced. That would allow some of the unused jquery functions to be stripped out altogether!! AND the ones I use would be shortened!!
Unfortunately.. in 1.4.2 mouseout is stripped out whether I use it or not and in 1.4.3 I get an error within the jquery code that exec is not defined.
Change History (14)
comment:1 Changed 12 years ago by
Component: | unfiled → misc |
---|---|
Keywords: | needsreview added |
Milestone: | 1.5 |
Priority: | undecided → low |
Summary: | I want to be able to use Google Closure Compiler ADVANCED_OPTIMIZATIONS → Support Closure Compiler ADVANCED_OPTIMIZATIONS |
Type: | enhancement → feature |
comment:2 Changed 12 years ago by
More info about advanced optimizations:
http://code.google.com/closure/compiler/docs/api-tutorial3.html#dangers
Doesn't seem worth the effort to me.
comment:3 Changed 12 years ago by
Resolution: | → wontfix |
---|---|
Status: | new → closed |
Nope; the ability for people to duck punch most of the jQuery functions to enhance functionality means this wouldn’t work properly for standalone jQuery files, and writing code to conform to Closure Compiler’s ADVANCED_OPTIMIZATIONS mode is a huge undertaking that very few people will actually bother to do.
I’m also fairly confident that our expando-generating stuff (the code that generates the bind-alias methods like .click
) will never work properly, and it’s looking increasingly likely that we are going to start using UglifyJS for minification in the future since it results in smaller code.
comment:4 Changed 12 years ago by
Keywords: | needsreview removed |
---|
comment:5 follow-up: 6 Changed 12 years ago by
I would really like to see the advanced mode of Google Closure Compiler supported. It would be useful for my project.
comment:6 Changed 12 years ago by
Replying to [email protected]…:
I would really like to see the advanced mode of Google Closure Compiler supported. It would be useful for my project.
It would be a large decision for them to do this (I wish they would). Every single name would have to be either variable form
$.animation = {swing: function () {...}}
or string form
$['animation'] = {'swing': function () {...}}
This would have to be
- considered for every item
and
- maintained ongoing
I would expect animation can be renamed and swing cannot
$.animation = {'swing': function () {...}}
comment:7 follow-up: 8 Changed 12 years ago by
"It’s looking increasingly likely that we are going to start using UglifyJS for minification in the future since it results in smaller code."
We've since switched to UglifyJS, so this is a moot point
comment:8 Changed 12 years ago by
Replying to ajpiano:
It’s looking increasingly likely that we are going to start using UglifyJS for minification in the future since it results in smaller code.We've since switched to UglifyJS, so this is a moot point at this point
I would say just because you use UglifyJS, that does not mean that you cannot support Closure Compiler.
There is the risk that the changes would cause UglifyJS to be less effective. I do not know.
comment:10 Changed 12 years ago by
The discussion here in regards to what is necessary to support Closure Compiler is at least incomplete, more likely just wrong. See http://closure-compiler.googlecode.com/svn/trunk/contrib/externs/jquery-1.5.js
jQuery could never distribute a minified version via advanced mode (that just makes no sense in this context), but maintaining the externs file and documenting how to use it to minify application could be a very good answer to the "jQuery is too big" problem.
comment:11 Changed 12 years ago by
@jzaefferer
The discussion here in regards to what is necessary to support Closure Compiler is at least incomplete, more likely just wrong
I know this is a sloppy conversation, but I think I am able to defend and explain any of the comments I have made.
jQuery could never distribute a minified version via advanced mode
That is obvious for those who understand advanced mode. The reason is that jQuery and the application's code are supposed to be minified together. The distributed minified version can stay as UglifyJS, the one for advanced mode would stay unminified because it would take advantage of advanced mode when the time comes.
maintaining the externs file and documenting how to use it to minify application could be a very good answer to the "jQuery is too big" problem
The externs file will allow us to use jQuery in our code which is already configured for advanced mode, but it will not make jQuery any smaller. Only advanced mode would allow removal of all unused jQuery functions, excluding the ones that are written in string style, for example $['click'] = function(...){...}
.
comment:12 Changed 12 years ago by
It is too difficult that using the advanced mode of Google Closure Compiler . If the externs are using jquery-xx.min.js , Closure Compiler reports many error....
comment:13 Changed 12 years ago by
yes, it would be great if the jQuery team could provide an official "externs" file, like the one linked above. Closure (Compiler, Templates, Library, ...) is an amazing value for the JS community. I would expect most Closure users to use its "goog.dom" components, but JQuery could very well live in many projects.
comment:14 Changed 11 years ago by
Note that there is a similar ticket which is open (at the time of this writing) . See #11015, "Integrate with Closure Compiler". This ticket also appears on the 1.8 Ticket Vote. Hope springs eternal! :D
I’m not sure if the effort to support ADVANCED_OPTIMIZATIONS is worth the size benefits it might provide, but we’ll take a look.