For folks who still work with jQuery, for personal or professional projects, what is the overall context of this work? Do you expect this to be refactored at any point?
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (71)
I'm not a luddite: I use React when I build full-blown web applications. I've also used ES6 features to build apps with Vanilla JS before. But unless bundle size is a major constraint, I still feel perfectly happy reaching for jQuery in 2021.
I wrote about this more extensively in my article with the clickbait-y title, "Hating jQuery doesn't make you cool." Link below 😊
Hating jQuery doesn't make you cool
Tyler Smith ・ Jul 27 '20 ・ 3 min read
Have you looked at Alpine.js at all? I quite like that as a jQuery replacement because:
These days I don't really like including jQuery by default on new projects because a lot of it simply isn't needed, but at the same time doing a lot of that stuff in vanilla JS can be a chore. Alpine's so far proven to be a good solution for what I used to fall back to using jQuery for.
Alpine is absolutely amazing. It's become my favorite tool for adding interactivity on server-rendered apps that I build with frameworks like Laravel. And Alpine recently added an equivalent of jQuery's slideToggle(), which is the feature I needed most often from jQuery.
I'm not terribly concerned about the extra kilobytes I get from using jQuery. jQuery doesn't block the DOM from rendering, and it doesn't require activation bootstrapping the way that a framework would: it just needs to download and parse. It's very different than React where you can't render anything until the library is downloaded, parsed, and your app code executed. Even server-rendered React has issues with links not working until the app is fully hydrated.
In the same way I'm doing with Vue.js, drop in the script tag and swap out the JQuery. I'll check out Alpine, Vue I just seemed to "get it" quite quick.
Alpine has almost everything I like about Vue without the build the steps. It's one of the best front-end tools to come out in the past few years.
Yep with the cdn script there is no build for Vue either so fully with you on such a low impact way to improve
+1 for Alpine, I love it when working with server rendered pages.
Do you prefer ajax to fetch for some particular reason? as BE dev I'm bit lost in these things, so I will be glad for more insigth into this :)
I sure do. Fetch is too low level for my taste: I don't like having to parse the response for the HTTP code to decide how to handle errors. I almost always prefer jQuery's ajax() method or the Axios library for ajax instead of raw fetch requests. They handle a bunch of things automatically that I'd have to code myself with fetch.
Personally it's been a couple years since I've worked with jQuery. In general I'd say it's only a good thing if you can refactor your code to vanilla use of modern native dom query helpers, fetch calls, etc.
+1. It's been years since I last used jQuery, and I don't miss it at all. Besides if you really really really need jQuery's API, you can just use alternatives like cash, so actual jQuery is still not a good option.
Yes. No plans to refactor. It makes mine and my developer's lives a lot easier.
Our projects are LAMP stack and don't use modern JS frontends.
I wrote this post years ago about jQuery at the time...
Long Live jQuery
Ben Halpern ・ May 24 '16 ・ 3 min read
But have since come to think that it is effectively no longer needed (I think the
fetchAPI put me over the top). Can you elaborate on what keeps you around the most?
Predominantly the readability. I find jQuery a lot easier to read than JS.
I see this site referenced a lot: youmightnotneedjquery.com/ But all it does for me is prove how much I prefer jQuery!
Take the getJson function for example:
I know which I prefer...
jQuery also comes with the added benefit of
And I can just
$('.classname')to target something, rather than
document.getElementsByClassName(className)... it's just such an effort to write that much.
Time is money, and jQuery helps me do what I need to do quicker ! :)
I appreciate my team and I would need to transition to Vanilla JS if we start to use more frontend frameworks, and we are looking to bring in Vue to some of our projects in the future. But our LAMP systems (Wordpress/Drupal/CodeIgnighter) are still our bread-and-butter projects, and using jQuery in them just makes our lives easier.
I'd also argue modern frontend frameworks are still mostly in their adolescent stages, where they're still trying to stabilise themselves/their role in the future of the web... Vue has been around for 7 years, React 8 years, and Angular only 5 years; whereas jQuery has evolved over 15 years and understands its place in the world.
Just so you know, nowadays, if you want to load a JSON, you can just use
fetchwhich is way easier than
XMLHttpRequestand it doesn't require a library to use it. It uses promises so is arguably more readable than the callback approach of jQuery. The actual "versus" looks like this:
You might think: "But hey! jQuery is shorter" ... and that's true, but for fetch we didn't need to load 30k of minified+gzipped jQuery code in order to start fetching our JSON. And that's not even talking about transferable knowledge (if you learn fetch, you can fetch in apps with and without jQuery, if you learn $.getJSON, you can only fetch if jQuery is present).
Top level awaits tho
Helper functions can also be a thing.
I understand where you're coming from, but for modern Internet speeds 30kb is nothing. Sure, it's worth taking into account if you're launching a site for a territory which suffers from slow Internet speeds, but for most affluent countries I'd argue 30kb is not worth losing sleep over.
In the UK the average Internet speed in 2015 was 13 MBps. https://www.mindgems.com/info/file-download-time-calculator/?FileSize=30&Units=kilobytes It really takes no time at all to download such a tiny file.
You have to consider mobile networks as well, which can be very fast, but if you're far enough of phone antennas or isolated (maybe on an old house, or a subway station or whatever), then those 30k are a lot just to achieve the same thing you'll get from using
fetch. Ideally we should always avoid downloading unnecessary JS. Just take a look at the trends that Remix or Astro are imposing, where JS is loaded only if needed, if not we just use HTML+CSS and that's ok.
I heard a few years ago that jquery was outdated and wasn't really in use anymore. I usually use plain DOM and created a little function to help me with
const $ = tag => document.querySelector(tag);
Yep, I often use this:
This gives you useful array methods like
mapand works for empty sets, much like jQuery. 🙂
Not since about 2 years ago, but I got so used to their selector syntax, that I just use
document.querySelectorin the chrome dev tools - yeah that is already implement in there by default 😎
There is tons of software out there still using it, we use jQuery DataTables and DataTables Editor since they are very polished and work great. We also have a lot of legacy code in production and sometimes a little jQuery can deliver the interactivity we need on the page without needing to use a modern frontend framework with build steps and bundling and all that.
Refactoring also takes time and there is a lot to do and a lot of things that need to be built before there is spare time to refactor things that are working just fine in production and are not overly complex to maintain. You also have to weigh the costs of bringing in complex SPA frameworks, build steps, cicd stuff, and tooling that a whole team will need to learn and that will be around for a while.
We have some web software that is in prod and that is 20 years old. Is there any framework like React, Vue, Angular that are in prod for 20 years with no updates needed?
I work in healthcare tech and a lot of my company's products make heavy use of jQuery. There's been some push to remake some things in React and to start using React for newer projects, but I'm skeptical that it'll actually happen any time soon.
Also in 15 years people will be doing posts like this saying 'do you still use React?' 😅
Professionally we'll probably still be using jQuery for a while. We build a large number of sites every year and we have so many types of functionality that rely on jQuery plugins: custom sliders, media lightboxes, form validation, interactive data tables, etc. that it would take a bit of time to figure out compatible vanilla versions. We looked at switching to vanilla JS a few years ago but unfortunately that was before ES6 and the syntax wasn't friendly and we still had to support older versions of IE.
I would love to slowly start updating the code but unfortunately when you have entire design systems built around the existing plugins and we're efficient in terms of building sites, it's hard for us to switch and make the business case for it.
No. I don't work with it anymore and don't have any requirements to work with it.
Simply being that it's unneeded for most of my works, even if I do need selectors there is Document.querySelectorAll.
Nope but I think the main point is that hating on jQuery just because it is jQuery is cargo-culting.
That's the point I was trying to make. There's nothing wrong with preferring other tools over jQuery or opting for vanilla JS.
In my sparetime I do not use jQuery. But in my professional work day, it has to be on my toolbelt because our company is supporting applications with over 10+ years lifecycles (public sector clients). So there is no way around jQuery because back in the day what else did we have?
Do I expect this to be refactored? No, unless a customer asks us to do so and pays that job. But why should someone do that? Customers pay for working products - and the product does well with jQuery.
We work with ASP websites which has jQuery support inbuilt. My leads still suggest to write jQuery over vanilla to maintain consistency since old codebase is in jQuery. I don't think we are moving to any framework or Vanilla in next 8-10 years. Some of the clients still asks that there users are using older browsers, so jQuery is the best way to handle that case.
I still use jquery, cause with bootstrap you gain a nice UI with beautiful & professional templates without alot of effort in building the front-end or I had limited resources and time to build something out.
No. I had extensive experience with jQuery — including rewriting it from scratch (long story) — and I am a big fan of Vanilla.js.
Although I do use 𝐋𝐄𝑽𝐈𝑨𝐓𝐇𝐀𝐍 Programming's helper, and I define it exactly that way (verbatim).