Zack Bloom argues that life could be better if the libraries we need stopped depending on jQuery.
It also hid much of the complexity of dealing with that era of browsers from us. Through painstaking fixes, all of the various bugs that those browsers included were worked around, until you could be confident that if something was done with jQuery, it would work.
Before too long, jQuery became the vernacular of the internet. Scores of people learned it before they learned the DOM itself: it became an implied dependency in every library and tool out there. jQuery was ever-present.
But things have moved on since then. jQuery thrived in a time when browsers were broken and slow to change, but that itself is changing.
And beyond all that, there are new, powerful APIs that you can’t access through jQuery on its own: things like the new MutationObserver and WebRTC require you to talk to the browser itself. And, it turns out, that’s not all that bad.
Use it: don’t depend on it
We may not need jQuery any more, but what’s the harm in using it if it makes your job easier? There isn’t any! Keep using jQuery to build your sites and apps. But if you’re building a library, consider not making it into a dependency.
Why? Because jQuery is a big, monolithic library. It includes Ajax, DOM manipulation and selection, events, promises, effects and a whole bunch of utilities. Having all of this in a single package locks us all into the jQuery way of doing things – which is also the 10-year-old way of doing things.
Beyond all this, the jQuery plug-in style puts every library you include in the same, ever-growing namespace. Everything is $(el).colorPicker(), or $(el).chosen(). This doesn’t play nicely with a future in which we have real modules. Modules will enable us to cleanly seperate our dependencies, and create optimised builds more easily. Whether you use Browserify, RequireJS or the modules added with ECMAScript 6, it’s the future. A single, global namespace isn’t.
So how do we reach this brave new world? The first step is for all the libraries we need to release their death grip on jQuery. If they become dependency-free, we can begin to imagine building a modern web app without it.
There is one important caveat: if you’re targeting older browsers, including IE6 and 7 or Android 2.3, you aren’t ready for this brave new world just yet. Enjoy jQuery to its limits and dream of a future when you can finally speak the browser’s language.
Words: Zack Bloom