(I understand that someone else asked a similar question and it was closed as ‘argumentative’, but I’m really interested in understanding the arguments around this.)
I know JavaScript really well. I’ve been writing it professionally for years. I’ve internalized a lot of the cross-browser incompatibilities and sketchiness, know DOM manipulation like the back of my hand, have worked with some of the best web developers in the industry & picked up a lot of their mojo.
I’ve been checking out jQuery. I understand the point of a javascript library (how many times have I written animation, getElementsByClass, and hide/show functions?). But to be honest, it seems like a waste of time to learn an entirely new syntax that isn’t less complex. It seems like I’d be bashing my head against a wall to learn an entirely new interface to the same old JavaScript.
I’m not technically an engineer, so maybe I’m missing something. Could someone spell out the tradeoffs of jQuery? Is it really faster to learn and understand jQuery syntax than to just learn JavaScript?
There are a few big benefits to using a framework over homegrown/handwritten code:
Abstractions. I’m sure you’re very proud of the fact that you’ve slung enough JS to be able to write animations from scratch. You should be! However, abstracting common functionality away from yourself is actually very liberating. You just call the method and know the innards will be executed, and executed well. Even if you’re very fast at writing the low-level stuff yourself, that’s still time you’ve spent on that instead of solving today’s problems.
Common language. Using a common framework is like speaking a common language. You can collaborate with other developers very easily, and each can pick up where others left off without friction. (Compared to stepping into an application which uses a homegrown library for the things jQuery can do.)
Experts. The people working on jQuery are JavaScript gods. I am really, really good at JavaScript, and you probably are too, but there’s a big difference between normal good and jQuery good. A team of insanely good people are constantly poring over a small set of common functionality – tuning it, tweaking it, enhancing it to make it the best it can possibly be. That represents a huge number of man-hours a single person like you or me simply cannot reproduce, no matter how good we are. And if you are as good as the jQuery guys, you can only benefit by combining your talent with theirs and contributing to the jQuery codebase. It’s a melting pot of insane talent.