Since this is a rather subjective question, I will put my 2 cents.
I developed using the Dojo toolkit and found it very well rounded. However, if you do not do custom assembly in your library, it slows things down. It has a steeper learning curve than other frameworks, but it seems to sit very close to the heart of Javascript.
But this is not an advertisement for dojo. I am currently working on an Ajax web application, and my goal is to try to avoid using a framework. What for? A few reasons.
The biggest reason is complete control over the code. It's not that I don't trust toolkits, I just like my own code. I don't have code that I don't use, and all my abstractions are customizable for my purposes. From time to time, I actually reinvent the wheel *, but it is always a little different because it is created.
Another big reason is the amount of knowledge that I get. I am sure that I could take any structure much faster, because I did not use it for the project. I understand much more than before. Before it was more like a mystery bonus, and now even the framework makes more sense to me.
The thing is, if you are doing some kind of non-trivial javascript, you will have a framework (or a mess). This is actually not the fastest way to write web applications, but it is not so difficult with a little practice. You may be amazed at what creative things you can come up with, which you did not have before.
* Rethinking the wheel is a terrible analogy that we all use. We constantly invent wheels. First made of stone, then lighter wood, tires, etc. My truck does not have the same wheel as my sedan.
source share