we use Google Closure ( http://code.google.com/closure/library/docs/overview.html ). If you are making complex apps comparable in complexity with google docs or gmail, this seems to be the way to go..
But once you get past all that, you have a powerful library with a good set tools for unit testing and a compiler that does dead code removal, function inlining, optional type checking through JSDoc annotations, etc. Its miles ahead of any pure-javascript solution because compilation is so tightly integrated into the whole development process. And yet you don't have to compile to run the code in development, so debugging is no harder than before.
That said, it's worth noting that the closure library is not a framework. You build your own application structure, models, etc, so it's definitely more work to get started.