[HN Gopher] Gov.uk drops jQuery from their front end
       ___________________________________________________________________
        
       Gov.uk drops jQuery from their front end
        
       Author : feross
       Score  : 345 points
       Date   : 2022-05-19 13:34 UTC (9 hours ago)
        
 (HTM) web link (web.dev)
 (TXT) w3m dump (web.dev)
        
       | tomc1985 wrote:
       | I miss the days when jQuery reigned supreme, and all the
       | tenderfoot magpie developers didn't yet have the twinkle of React
       | in their eyes
        
         | smrtinsert wrote:
         | I remember doing pocs with observables, angular and react back
         | when they were all way new and thinking observables really
         | makes the other two unnecessary.
        
         | Cthulhu_ wrote:
         | I don't; it was an improvement when BackboneJS came out so I
         | could reason about larger scale applications, and another
         | improvement when AngularJS came out so I could build and write
         | tests for logical, reusable components, and another when React
         | (especially in 2022) was there and reduced these components to
         | simple JS functions.
         | 
         | That said, I don't like how complicated modern day front-end
         | development is, to the point where you need a university degree
         | to even try and fathom some of React's inner workings (e.g.
         | https://reactjs.org/blog/2019/11/06/building-great-user-
         | expe...) etc.
        
           | tomc1985 wrote:
           | Oh god, Backbone. I absolutely hated that framework. It
           | didn't even seem to do anything, it seemed like I had to
           | implement all of the logic myself. Except I had to do it
           | their way, for some reason, and practically nothing made
           | sense. (I haven't touched it in years, though, so my memory
           | is probably distorting my experience)
           | 
           | I like the _idea_ of React, just not what it has turned into.
           | The amount of tooling that it has created to do things that
           | should be simple (but aren 't because of the runtime and/or
           | the programmer), and the gymnastics it goes through so that
           | people can have their precious (often unnecessary) SPAs, is
           | ridiculous. That, and JSX continues to be an abomination that
           | shits all over separation of concerns so that smoothbrains
           | don't hurt themselves trying to reason over it.
        
             | LNSY wrote:
             | Re: React, have you looked at Vanilla custom elements:
             | 
             | https://javascript.info/custom-elements
             | 
             | I've been using them lately and I think they are the bees
             | knees.
        
               | tomc1985 wrote:
               | Yeah I have been looking them over and they seem very
               | interesting. Have not tried them yet.
               | 
               | Would love for there to be One True Way(tm) without the
               | framework question.
        
             | DeathArrow wrote:
             | HTMX + custom elements + Alpine.js = love
        
       | egberts1 wrote:
        
         | [deleted]
        
         | shadofx wrote:
         | CSS is too much as well, client XSLT to XHTML is good enough
         | for any reasonable website.
        
           | egberts1 wrote:
           | Agreed. So far it's -4 karma for me.
           | 
           | There must be a grain of truth in there ... somewhere. Nah,
           | just an inconvenient truth.
        
       | mkrishnan wrote:
       | bullshit. there are tons of images in this site most are above
       | 10kb, there are several images I could find which are above 20kb.
       | 
       | Jquery is passive, just loading jQuery in the page itself doesn't
       | do any harm. could be some plugins they are using might be doing
       | something unnecessary.
        
       | [deleted]
        
       | divbzero wrote:
       | You Might Not Need jQuery [1] has been my favorite resource for
       | convincing myself and others that it's OK to forgo jQuery.
       | 
       | [1]: https://youmightnotneedjquery.com/
        
       | ei8ths wrote:
       | I love jQuery. I've been trying to do vanilla when it makes
       | sense.
        
       | d1sxeyes wrote:
       | I don't mind so much gov.uk using jQuery, but I noticed recently
       | that the UK government's 'parliamentlive.tv' has a dependency on
       | jQuery loaded from Google's CDN, when there was a Google outage
       | in the country I live in (I think it was something to do with
       | routing on Vodafone's side, rather than an actual Google outage).
       | 
       | I see that's now removed, but Recaptcha is still there. The site
       | works without it, but it seems a bit odd to me that by default,
       | my data is shared by my government with a third party company
       | when I want to participate in democracy online.
        
       | zendaven wrote:
       | I still use jQuery for frontend JavaScript when I can. It's so
       | much more efficient than native JavaScript. I can't imagine
       | anyone prefers to write
       | document.getElementById('element').style.display = 'none' rather
       | than $('#element').hide();
        
         | SadWebDeveloper wrote:
         | When you are dealing with less than 5 "interactive things",
         | jQuery is awesome... beyond that it might be better to consider
         | a front-end framework.
         | 
         | Jr devs have the tendency then to discard jquery because "is
         | old" not because it isn't working anymore.
        
           | Beltalowda wrote:
           | I think it's not so bad if you organize things reasonably
           | well and minimize "lemme just modify the DOM a wee bit here"
           | hacks. jQuery was popular at a time when "cowboy programming"
           | was very common, leading to a lot of really bad/difficult
           | jQuery apps; but that wasn't strictly jQuery's fault, as
           | such.
           | 
           | That said, front-end frameworks can of course be a better
           | choice for many things, even if it's just because it provides
           | this kind of organisation by default making it easier for
           | the, ehm, less organized devs.
        
           | dspillett wrote:
           | Though for that little work, I'd rather have a small local
           | library that implements what I need over standard DOM & JS
           | parts instead of the full weight of jQuery.
           | 
           | Unless of course I need to support legacy browsers, then jQ
           | is a no-brainer - that crap is solved there and I don't want
           | to have to deal with it myself.
           | 
           | And while jQ is large compared to my little home-grown set of
           | wrappers, it is small compared to all the other stuff many
           | pages draw in these days, so perhaps size isn't a great
           | metric to criticise it on!
        
             | ulisesrmzroche wrote:
             | that crap is solved in a lot of places, jQuery is no longer
             | the only library, and you don't need to support legacy
             | browsers as much anymore, if at all
             | 
             | Companies are getting more security-conscious because of
             | all the hacks and the pain of keeping old browser support
             | is no longer outweighing the risks of upgrading is my
             | theory.
        
             | psnehanshu wrote:
             | There are tools like babel (even typescript) which can help
             | you support older browsers.
        
         | parksy wrote:
         | I am not against jQuery but if it's just verbosity then it's
         | quite easy to:
         | 
         | const $ = document.querySelectorAll.bind(document)
         | 
         | Then later:
         | 
         | $('#element').whatever
         | 
         | I used to be a big proponent of jQuery especially in the heyday
         | of shims and browser hacks, but in the last few years I find it
         | often gets in the way of what I'm trying to do. Now that the
         | native browser APIs are maturing and relatively consistent,
         | having direct access to the objects and their properties is
         | simply more predictable than having to second-guess a layer of
         | abstraction that does the same job but differently.
         | 
         | I have to remember, what does jQuery's .hide do again? It
         | doesn't just set display to none or visibility hidden. Give it
         | a duration, and it will use the style attribute to manipulate
         | the display, width, height, opacity, padding, margin, etc. Then
         | it leaves some style properties behind. Ugh. Do I really want
         | to do all that stuff? Do I really want to build my UI framework
         | around jQuery so I can avoid annoying transition artefacts?
         | 
         | Not hating on jQuery. Just my own experience. I used to feel
         | liberated when using it because browser APIs were so terrible
         | but now I feel encumbered if it's included as a dependency on a
         | project I'm forced to work with, because it does so much black
         | box magic. If you avoid certain things and stick to what it
         | does well then it's not bad, but then there's no point using it
         | because what it does well is no longer a pain point in browser
         | APIs.
         | 
         | For me the main thing it excelled at was DOM selection and
         | manipulation. Native does that just as well now. The secondary
         | benefit was animation, which these days native CSS can go a
         | long way without excess verbosity, and if you really need a
         | more feature rich animation library I've not come across any
         | better than Greensock for getting the job done, even if it does
         | have a paid tier, though I am sure there are dozens of other
         | libraries equally suited for animation, the point is that is
         | not jQuery's strength either.
         | 
         | Anyway circling back to what you were saying, efficiency-wise,
         | for any complex animations jQuery isn't the best tool for the
         | job. For DOM manipulation native can be just as easy with some
         | sugar. It can do a lot of unexpected and hidden things most
         | people aren't aware are happening, so many bugs and time wasted
         | realising jQuery was messing with style attributes that break
         | an otherwise well designed layout.
         | 
         | I would rather write a few characters more code or a couple of
         | lines more to have direct control over what's actually
         | happening. That seems more efficient to me.
         | 
         | Edit: Ok on reflection I guess I am against jQuery, but I don't
         | hate it. Using it these days just feels like trying to figure
         | out how to get it to do what I want to the underlying APIs,
         | when I could more easily and predictably just be manipulating
         | the APIs directly.
        
         | dbrueck wrote:
         | jQuery was great in its time and still has some places where it
         | can be a good tool for the job, but it isn't used less now
         | because people like writing the longer form of Javascript; it's
         | used less now because for many projects people are using
         | frontend frameworks that let you operate at a higher level
         | altogether.
        
         | marcolussetti wrote:
         | I think the more direct comparison is
         | 
         | document.querySelector('#element').style.display = 'none'
         | 
         | That has the same ergonomics as the jQuery selector, and is
         | just a bit longer. I feel like with editors that autocomplete,
         | it's not enough of a difference to warrant the extra
         | dependency.
        
           | [deleted]
        
           | hbn wrote:
           | I think the vanilla JS is better actually, because I actually
           | know what it's doing.
           | 
           | I've never used JQuery before and would have assumed calling
           | .hide() on an element would set the CSS attribute
           | "visibility: hidden" rather than "display: none"
        
           | yyyk wrote:
           | >That has the same ergonomics as the jQuery selector
           | 
           | Nitpick: This crashes if #element doesn't exist, while the
           | jQuery one does not. Also, the jQuery selector is a tiny bit
           | more powerful (:even, :odd).
           | 
           | IMHO, jQuery is good for what it's built for - a nicer
           | interface than vanilla - but the main use case is much less
           | needed now that frameworks exist.
        
             | zamadatix wrote:
             | The same power exists, again a bit longer, :nth-of-
             | type(odd).
        
             | jacobsenscott wrote:
             | A but fugly, ?. helps - document.querySelector('#element')?
             | .style?.SetPropery('display', 'none')
        
         | dbbk wrote:
         | Does your IDE autocomplete the jQuery code though? I'd imagine
         | it wouldn't. But it would for the native code.
        
         | jacobsenscott wrote:
         | There are fewer and fewer people who know jquery, so while this
         | might be convenient for you or me, this is just more cognitive
         | overhead for programmers who don't know jquery. There are
         | multiple ways to hide an element, and what does `hide()` do?
         | Some future programmer will need to look this up, and every
         | other jquery method they stumble across.
         | 
         | The main problem I have with jquery though is there's no
         | convention for event binding, so there is literally no way to
         | know if an element depends on a jquery event handler without
         | grepping the js for every class, id, and data selector on the
         | object. Even that doesn't always help. This makes it almost
         | impossible to remove jquery from a project without breaking it.
         | 
         | Alpine or stimulus do a much better job of filling the event
         | handling holes that still exist vanilla js. Dom
         | traversal/manipulation in vanilla js is good enough, even if it
         | isn't 100% as good as jquery.
        
         | upupandup wrote:
         | but see now you are reliant on jQuery and need to figure out
         | how to load that first.
         | 
         | with vanilla, it would be just typing a bunch of extra
         | properties.
        
         | savanaly wrote:
         | I would say jQuery has a place in any codebase that's simple
         | enough it has imperative statements like that. Past a certain
         | not-too-high level of complexity you're much better off writing
         | "if (condition) then <element> else null" in your view and
         | "condition = false" in your update instead of even the short
         | $('#element').hide();.
        
         | junon wrote:
         | I prefer to write the first.
        
         | my69thaccount wrote:
         | By "more efficient" it seems like you mean "less typing"
         | because that is significantly less efficient in terms of
         | downloaded code size and performance (the jQuery code calls the
         | vanilla code.)
         | 
         | PS. $ is an alias for document.getElementById so you can just
         | do $('my_id').style.display = 'none'.
        
           | pastor_bob wrote:
           | most people probably have jquery cached in their browser if
           | you're pulling it from the google cdn
        
             | jameshart wrote:
             | Thanks to cache partitioning, this is no longer true.
             | 
             | See, it turns out that by carefully leveraging cached
             | retrieval of third party resources, scripts on two
             | different domains can figure out if they are running in the
             | same web browser, effectively pulling off browser
             | fingerprinting.
             | 
             | To stop this, modern browsers don't share third party
             | resource caches cross domain.
             | 
             | So using a well known CDN no longer confers any benefit -
             | even if a user has pulled down jquery for another site's
             | benefit, when they come to your site and you request the
             | same resource, the browser will go out and re-retrieve it,
             | to prevent you or the third party domain from being able to
             | infer anything about the user based on the speed of the
             | response or whether or not the request got made.
        
               | pastor_bob wrote:
               | ahh wasn't aware, and good to know
        
               | jameshart wrote:
               | Indeed. We cannot have nice things.
        
               | sensanaty wrote:
               | LocalCDN is great for this! Avoids both the privacy
               | concerns, plus makes things a bit speedier as everything
               | is readily available locally already
        
             | dbbk wrote:
             | As others have mentioned this isn't the case, also the
             | browser still has to parse that JavaScript, which for a
             | lower end mobile phone is often significant.
        
             | my69thaccount wrote:
             | That hasn't been the case for years because of per-origin
             | caching. CDNs get their performance from edge routing, not
             | caching.
        
         | mrtksn wrote:
         | These days it seems like you don't touch DOM yourself anymore
         | because it's all about virtual DOM that is managed by the
         | framework of choice, which is probably ReactJS.
        
       | ufo wrote:
       | According to the Matt Hobb's twitter thread, they had to do a lot
       | of work to get rid of the JQuery dependency. Does anyone know
       | what kind of challenges they encountered along the way?
        
       | jjice wrote:
       | Tangential, but sometimes I see people say that jQuery is
       | dead/failed. While it's not as popular anymore, I think that's
       | actually the perfect evolution for it. jQuery was making up for
       | browser API shortcomings, and now many of those shortcomings have
       | been addressed and been incorporated into browser APIs (not
       | everything, but quite a bit).
        
         | legitster wrote:
         | > jQuery was making up for browser API shortcomings
         | 
         | While this is true, I can still code circles around frontend
         | developers using vanilla JS.
         | 
         | The decline of jQuery is mostly due to the rise of webapp
         | frameworks like React and Vue. But if you are tasked with
         | adding like, a button to a static webpage, jQuery is still the
         | king.
        
           | macspoofing wrote:
           | >The decline of jQuery is mostly due to the rise of webapp
           | frameworks like React and Vue.
           | 
           | Partly. Frameworks like Angular/React/Vue are a necessary
           | byproduct of building and maintaining large codebases. But
           | the fall of jQuery was largely a result of a more standards
           | approach in mainstream browsers (said another way:
           | deprecation of IE and not needing to work at maintaining
           | consistent behavior across browsers), as well as adding
           | traditional jQuery-like features to vanilla JS.
           | 
           | There really isn't a big use-case for jQuery anymore,
           | although I will remember it fondly.
        
           | fatnoah wrote:
           | >While this is true, I can still code circles around frontend
           | developers using vanilla JS.
           | 
           | My first use of jQuery was in the dark days was building UIs
           | (with things like drag and drop, etc) that had to run on
           | Internet Explorer and Netscape. We'd started with "vanilla"
           | but were ending up with what was effectively two separate
           | codebases. Moving over to jQuery let us eliminate a massive
           | amount of duplicate code and dramatically increased our
           | productivity.
        
           | wnevets wrote:
           | one of the nice features of AngularJS when it came out was
           | the inclusion of the jquery lite api for interacting with the
           | dom.
        
           | martin_a wrote:
           | I never really knew jQuery besides the five things that I
           | googled, so once I had to do more "dynamic" frontend things I
           | just looked into Vanilla JS and it kind of works for me. Not
           | sure if I had WTF-moments besides the normal "this seems to
           | be how things work" stuff, so I think it's easy enough?!?
           | 
           | Only thing I always have to look up is how to make sure my
           | script is executed once everything is done and not before and
           | "ready()" is obviously easier than adding an event listener
           | to "DOMContentLoaded". Yeah, had to look it up for the
           | comment.
        
             | legitster wrote:
             | Simplifying interaction with the DOM is obviously a huge
             | feature of jQuery. But also the functions are just very
             | nicely laid out with the assumption you are doing web
             | stuff.
             | 
             | $(thing).doThis() is just so perfectly terse and
             | understandable for what it's doing. Not just writing, I
             | find jQuery to be very, very easy to understand and read.
        
               | martin_a wrote:
               | Yeah, you're right. Maybe I should give jQuery another
               | look. :-)
        
           | ulisesrmzroche wrote:
           | I call bullshit on all accounts. If someone actually tasked
           | you with adding a button to a webpage...
        
         | hinkley wrote:
         | When people have said this to me in the past I would trot out a
         | list of features that were still useful, but there are one or
         | two where I think the defaults are backward. There was a long
         | time between when "jQuery is dead" and parent selectors of any
         | kind existed, and list comprehension is still a huge miss.
         | 
         | I still wonder occasionally if there's a place for a library
         | that works like a strict subset of jQuery, but with different
         | error/empty set handling defaults. Especially with list
         | comprehensions. I found that 9 times out of 10 if I run a
         | selector I'm expecting results, and jQuery will silently eat
         | that error, requiring a bunch of inline error handling in the
         | 'interesting' paths in your code. I'd be much happier with an
         | optional parameter for silent failure or even writing the
         | occasional try/catch.
        
         | SemanticStrengh wrote:
         | I really don't get this discourse, jQuery API is much more
         | ergonomic, concise and clearer than the DOM api. Sure you can
         | do it but that doesn't mean you should
        
           | ldiracdelta wrote:
           | I think that the improved vanilla js is now "satisficing" for
           | more people. Their threshold of ergonomic usability has been
           | achieved and they stop looking:
           | 
           | https://en.wikipedia.org/wiki/Satisficing
        
           | [deleted]
        
           | pastor_bob wrote:
           | Just replace that one liner with a 15 liner.
        
             | LNSY wrote:
             | document.querySelector('html')
             | 
             | And for React: https://javascript.info/custom-elements
        
               | DeathArrow wrote:
               | And you would replace $.getJSON by how many lines?
        
               | nobleach wrote:
               | are we doing CORS? Adding headers? If it is just a one-
               | off fetch, I'd probably long-hand it. If I intended to be
               | fetching from many endpoints, I'd probably write a tiny
               | little abstraction. I'm not exactly keen on loading a
               | 30kb lib (gzipped) so that I can write (maybe) fewer
               | lines for data fetching. Especially considering jQuery's
               | async requests don't conform to the fetch standard. (They
               | reject on 404s)
        
               | [deleted]
        
               | SemanticStrengh wrote:
               | It's not because you know how to do a hello world that
               | you know how to program.
        
               | mejutoco wrote:
               | Other functions are much more difficult to replace
               | $('.sth').closest('ul')
               | 
               | To me jQuery is like Regex or Linq. I think it had a
               | really good api.
        
               | frosted-flakes wrote:
               | You can also do this with DOM APIs, no?
               | 
               | https://developer.mozilla.org/en-
               | US/docs/Web/API/Element/clo...
        
               | mejutoco wrote:
               | This did not exist the last time I looked. TIL. Thank
               | you!
        
               | augusto-moura wrote:
               | Is not the same thing as it is a Element method, not
               | NodeList one, so you will would need to map it instead.
               | Because NodeList doesn't have the .map method you would
               | also need to transform it to a Array first.
               | 
               | So the actually drop-in replacement of
               | `$(foo).closest(bar)` would be something like:
               | Array.from(document.querySelector(foo)).map(el =>
               | el.closest(bar))
        
               | CraigJPerry wrote:
               | Is it harder or just a bit longer-winded? E.g. i'm
               | thinking this is the same behaviour
               | document.getElementsByClassName('sth')[0]?.closest('ul');
        
               | zimpenfish wrote:
               | That's not exactly the same, I don't think, because
               | jQuery will give you all the `ul` that are closest to
               | `.sth`, not just the first. You'd have to write a loop
               | over the list returned from
               | `document.getElementsByClassName('sth')` to get the same
               | behaviour (because it doesn't look like the standardised
               | `closest` works on lists.)
        
               | CraigJPerry wrote:
               | If i'm following right, i think this expression would
               | match?
               | Array.from(document.getElementsByClassName("sth")).map(e
               | => e.closest("ul"))
               | 
               | The jQuery is definitely nicer to read than this though
        
               | zimpenfish wrote:
               | Yeah, that seems to do the same.
        
               | mejutoco wrote:
               | Thanks, this is now standard it seems. TIL
        
               | [deleted]
        
           | cmer wrote:
           | I think it's a bit of both. jQuery served the purpose of
           | making web development more sane back in the day by handling
           | all browser quirks. Part of that was the nice syntax.
           | 
           | I personally have tried to drop jQuery, but truthfully, its
           | syntax is just much easier to use. Nowadays, I use Cash
           | https://github.com/fabiospampinato/cash to give me the nice
           | syntax without the bloat. It strikes the perfect balance for
           | me.
        
             | mmis1000 wrote:
             | Although writing jQuery is still shorter (And likely will
             | forever be). Editor (like vscode) nowadays is much more
             | smarter then the era.
             | 
             | A lot of API with long names is no longer a issue to type.
             | You just mark the variable as a element. After that,
             | autocomplete handles the rest for you. Shorten the gap with
             | experience of using jQuery. If developer tools is still as
             | dumb as that era. I would think the transition is
             | impossible.
             | 
             | And there are also more frameworks to enhance experience of
             | style modification or templating. Back to then, there are
             | only some dumb template that do initial rendering. But
             | framework these days also handles update for you. So you
             | don't really need to modify it directly by yourself unless
             | in some edge case.
        
             | masklinn wrote:
             | > I personally have tried to drop jQuery, but truthfully,
             | its syntax is just much easier to use.
             | 
             | It's not just the syntax, it's also the expression-heavy
             | and chained API which makes it much more flexible. As well
             | as the set-oriented approach, which can lead to performance
             | issues if you're not careful but is generally extremely
             | enjoyable.
             | 
             | The DOM is an extremely procedural, plodding API, you need
             | to name everything because you always need to set
             | attributes and call non-chainable side-effecting APIs, not
             | to mention the fecking NodeList which has to be converted
             | to an array to do basically anything useful (in part
             | because Javascript never really embraced iterators, and
             | instead uses arrays for everything still).
             | 
             | I guess you could mitigate that with an "API adapter",
             | but...
        
             | acomjean wrote:
             | I did a javascript project targeting web/blackberry and
             | early ios. We used jQuery to smooth out the kinks (or
             | that's what our lead told us). It worked as expected.
             | 
             | Went from disliking it to really liking the syntax. Its
             | pretty clear and easy to use, which is why I still use it.
             | We don't use it extensively becaue we're still on the
             | "submit form, get page back with javascript graph and data
             | tables table, development model. We probably should
             | transition to a framework, but they evolve so quickly ...
        
           | threatofrain wrote:
           | Ad hoc manipulation of the DOM contradicts the philosophy of
           | a lot of frameworks, as that is state which is unaccounted
           | for.
        
           | icedchai wrote:
           | Yes, the DOM API is painful to work with.
        
             | moffkalast wrote:
             | Time to drag out this old classic: https://pics.me.me/what-
             | does-l-use-jquery-jquery-mean-tmeans...
        
         | dgb23 wrote:
         | I agree. Also reminds me of CSS resets, the goal of modern-
         | normalize is to make itself obsolete.
        
       | DeathArrow wrote:
       | What's more convenient
       | 
       | $.getJSON('/my/url', function(data) {
       | 
       | });
       | 
       | or
       | 
       | var request = new XMLHttpRequest(); request.open('GET',
       | '/my/url', true);
       | 
       | request.onload = function() { if (this.status >= 200 &&
       | this.status < 400) { // Success! var data =
       | JSON.parse(this.response); } else { // We reached our target
       | server, but it returned an error                 }
       | 
       | };
       | 
       | request.onerror = function() { // There was a connection error of
       | some sort };
       | 
       | request.send();
       | 
       | ?
        
         | jefftk wrote:
         | fetch('/my/url').then(response => response.json()).then(data =>
         | handle it)
        
         | MaxLeiter wrote:
         | Why not use fetch?
        
         | divbzero wrote:
         | To be fair with the comparison, we should add error handling
         | for the jQuery example:                 $.getJSON('/my/url')
         | .done(data => {           // success         })
         | .fail((jqxhr, textStatus) => {           if (textStatus ===
         | 'timeout') {             // connection error           } else {
         | // HTTP status error           }         })
         | 
         | And also consider the Fetch API alternative:
         | fetch('/my/url')         .then(response => {           if
         | (!response.ok) {             // HTTP status error           }
         | return response.json()         })         .then(data => {
         | // success         })         .catch(error => {           //
         | connection error         })
        
       | duxup wrote:
       | Good policy, but also not huge gains here IMO. I wouldn't choose
       | jQuery as I can do everything I need without it, but I also don't
       | know of any serious issues it represents if it hangs around here
       | or there.
       | 
       | I have a bunch of old code that uses jQuery, it works, everything
       | new is vanilla but otherwise it's not a big impediment / problem
       | that I find.
        
       | lelandfe wrote:
       | I am _all for_ dropping jQuery. But...
       | 
       | Unless this team perfectly did a 1:1 replacement of jQuery calls
       | with equivalent native JS functions, this isn't "removing a 30KB
       | dependency reduced blocking time by 11%."
       | 
       | It's "we rewrote our JS and it reduced blocking time"
        
         | hinkley wrote:
         | Talking to developers sometimes feels like hitting the same
         | wall when I talk to people about whether putting all of your
         | money into a house is a sound investment strategy.
         | 
         | There's a lot of willful blindness about cost structures. If it
         | were just one or two people you might conclude that folks are
         | trying to sweep things under the rug, and when I was just
         | starting out I did feel that way. But it's so consistent that I
         | often end up bonding with people who _don 't_ feel that way,
         | without putting Dunbar's Number into any sort of danger.
         | 
         | One of the hardest "Code smell" issues I've had to contend with
         | is the habit of people to spread out problems so thin that you
         | can no longer see them, because they're everywhere. Like being
         | in a room with a bad smell, eventually you can't detect it
         | without a major change of perspective. Even though everyone new
         | who comes in starts with, "what _is_ that smell? "
         | 
         | 11% of your blocking time on a library could be a perfectly
         | reasonable *budget*. The mistake is not having a goal, or
         | assuming the goal is zero. Zero is dumb, because if that's your
         | target then we'd be talking a static HTML page and then why are
         | they paying you? So what's your _real_ budget? And given that
         | budget, what 's a reasonable proportion for different concerns?
         | 1/9th spent on a library is probably a bargain.
        
         | petepete wrote:
         | There's only a small amount of JavaScript used on GOV.UK and
         | everything degrades gracefully.
        
       | SemanticStrengh wrote:
       | > It really begs the question: Do we really need Ergonomy today?
       | That's a question that GOV.UK has answered with a resounding
       | "no".
        
         | Smaug123 wrote:
         | I don't know if you've ever used gov.uk, but I have literally
         | no complaints about it (other than a few content-level ones,
         | which the web design team can't help with). It's honestly a
         | brilliant site.
        
       | brainwipe wrote:
       | Bravo gov.uk, the design/web team do a fantastic job. I'd be the
       | first on the bash-the-government bandwagon but their work is
       | exemplary. If they can work with modern js alone and still be
       | compatible to people on Safari 9 and IE11 then respect to them!
        
       | snowl wrote:
       | There's almost no point talking about javascript on HN with the
       | amount of anti JS & anti framework rhetoric that happens here
        
         | systemvoltage wrote:
         | There is also excessive praise for Gov UK design system that
         | takes up half of the vertical space with cookie banner, flash
         | messages, and navigation bar. It has so much useless negative
         | space.
         | 
         | I would give it 5 marks out of 10. It's decent but not a
         | bastion of good design.
        
           | jackdh wrote:
           | Maybe not design but I would say it is a bastion of
           | usability.
        
             | systemvoltage wrote:
             | I prefer USWDS for usability:
             | https://designsystem.digital.gov/
             | 
             | Gov UK design system is poorly usable. From color use to
             | disorganized, scattered layout; it's put together with
             | haste and not much thought.
             | 
             | What it's good at is looking sexy and minimal which
             | captivates a lot of people.
        
               | zinekeller wrote:
               | While I haven't experienced USWDS deeply, that's kind of
               | a problem in itself. A good design that doesn't get
               | deployed is just that - a design. Gov.UK might not be
               | pretty but it's consistent across different ministries,
               | departments and instrumentalities which helps
               | tremendously, but US government websites, even if
               | restricted to the federal level, is a mess that I would
               | prefer to hold my tongue at the inconsistency. What is
               | GAO's plans to deploy them at least at a federal level?
               | _Is there even a plan?_ By the way, it 's not solely
               | Gov.UK which has this level of consistency (Singapore
               | comes to my mind) so it's not a unique property.
        
         | hinkley wrote:
         | jQuery isn't a framework though (that's half of why I like(d)
         | it). Or are you talking about the number of lunatics on both
         | sides of the argument crowding out everybody else?
        
         | jenscow wrote:
         | The 'H' is for Herd
        
       | Taylor_OD wrote:
       | I've used jQuery at 2 of the 3 companies I worked for. It can
       | take you very far. Frankly some of the critical features, like
       | making selecting element easier/shorter, should have been ported
       | into JavaScript long ago. I think jQuery is still around largely
       | because it makes, otherwise vanilla, JavaScript easier to use.
        
         | psnehanshu wrote:
         | jQuery is still around because it's hard to get rid of. Think
         | of all those WordPress websites that use themes, which have
         | jQuery in it. Who is brave enough to remove jQuery?
        
       | happyopossum wrote:
       | This article says makes 2 competing claims
       | 
       | A) jquery deals with inconsistent browser implementations,
       | largely in older browsers
       | 
       | B) replacing it with modern API calls made the website more
       | usable for all users including those on older machines (and
       | presumably OS's)
       | 
       | I don't see how to square those.
        
         | acdha wrote:
         | The older browsers which shaped jQuery's design aren't in use
         | any more but you're still paying for the code which now largely
         | duplicates built-in features. For example, if I use
         | querySelectorAll I'm using the browser's native CSS parser and
         | getting a native NodeList back - all of the work is being done
         | in some of the most optimized C++/Rust code in existence. If I
         | use jQuery, there's a lot of code which has to parse that
         | selector, build data structures, etc. and some of that is
         | working around limitations which haven't been an issue since
         | IE6 was released. It's not as bad as a full virtual DOM, there
         | are a lot of smart optimizations there but it's still running a
         | lot more non-native code & memory which inevitably adds up on a
         | large project. On older devices with less RAM and memory, this
         | is a lot more noticeable - especially if those are Android
         | devices which started at half the equivalent iOS performance
         | when they were new.
         | 
         | The other problem you get is common to a lot of frameworks:
         | it's good that you can get a lot done but that means you can
         | get s lot further without learning how it works underneath and
         | by then you don't want to revisit all of that code. This is
         | especially easy to miss when your developers all use fast
         | systems - React 3+ orders of magnitude slower isn't noticeable
         | on your $5k MacBook Pro but it might be when your grandfather
         | tries to use that site on his 2011 PC, and by then you probably
         | don't want to do a messy refactoring on a large codebase.
        
         | zamadatix wrote:
         | "Older" in those lines isn't fungible. E.g. jQuery's older
         | browser would be IE 9 while Gov.uk's older browser would be IE
         | 11 (they do have limited support for back to 8 though but it's
         | not expected to be matching).
        
       | bob1029 wrote:
       | The extra verbosity of vanilla JS never really bothered me.
       | 
       | I currently work with B2B applications in a sensitive banking
       | context, so any time I can feasibly remove a 3rd party dependency
       | it's almost certainly getting removed.
       | 
       | The extra LOC and time overhead is more than worth it for us. We
       | get dinged on older products which _do_ use jquery all the time
       | by our customers who insist on using other 3rd party security
       | scareware to light up random parts of their infra. I can 't use
       | 'but its elegant' or other technical handwavey bullshit as an
       | excuse when the Chief Security Officer of Bank of America shoots
       | me an email, even if there is zero chance the detected
       | "vulnerability" would actually pose any risk in that particular
       | context of use. Certainly, we could spend the time & energy
       | fighting for exceptions, but its _way_ easier to write a few
       | extra lines of JS.
       | 
       | Don't forget the performance angle either. If you are doing a lot
       | of element selection in a hot loop, document.getElementById can
       | be orders of magnitude faster than the jQuery alternatives.
        
       | qwerty456127 wrote:
       | AFAIK (I'm not a front-end dev but tried some) vanilla JavaScript
       | has much of the things jQuery provided built-in nowadays yet they
       | look much longer.
       | 
       | Now as JavaScript accumulated a lot of legacy stuff only kept for
       | compatibility + also numerous verbally/syntactically sub-elegant
       | APIs IMHO it is time to design a language which would simply be
       | "better JavaScript" - clean, modern and elegant yet have no
       | fundamental differences so it would be very easy to transpile by
       | just string replace/mapping, essentially just a lightweight
       | "syntactic sugar+discipline" layer. Then it can be integrated in
       | browsers directly.
        
         | cies wrote:
         | > design a language which would simply be "better JavaScript" -
         | clean, modern and elegant yet have no fundamental differences
         | 
         | JS' problem is that it is fundamentally not "clean, modern and
         | elegant". It was designed in a couple of days. And all the
         | greatness that's added to it nowadays is done in a much better
         | design process than at it's inception, yet some choices made at
         | it's inception can never be reversed.
         | 
         | I've written some Elm and think it is phenomenal at being a
         | better JS; but it fundamentally very different. Rotten
         | fundamentals are notoriously hard to fix; especially when a lot
         | has been built on top and needs to keep running.
        
           | qwerty456127 wrote:
           | AFAIK Elm can not be considered "a better JavaScript" because
           | it not only is fundamentally different, if also is not self-
           | sufficient - in many cases you have to resort to JavaScript
           | pieces while engineering an Elm app.
        
       | overgard wrote:
       | Idk, with a cdn and caching you're really talking about a one
       | time 30k hit, ie, nothing. But im glad the web has adopted its
       | innovations
        
       | synergy20 wrote:
       | jQuery has the best API design ever, I hope Javascript can
       | support that natively one days.
        
       | tbranyen wrote:
       | We found it to be about 32kb gzip+minified in our builds. I just
       | dropped it from one of our apps, where it wasn't even used except
       | in a legacy logging module. We replaced the ajax call with XHR.
       | The other app we maintain has it as well, again only for the ajax
       | method.
       | 
       | While it may be nice, for large production apps we'll take the
       | filesize gains where we can find them.
        
         | tomschwiha wrote:
         | I believe it's kind of sad that in the days of 2 TB USB sticks
         | that 32kb matter.
        
           | tbranyen wrote:
           | Our product is used by all sorts of devices and resources.
           | Many use it on super old hardware in different countries.
           | 32kb isn't much, but when you're analyzing Time To Render
           | metrics, you might be surprised how little is necessary to
           | move the needle.
           | 
           | That said I don't expect a massive impact from this change,
           | but removing unused code is going in the right direction.
        
             | tomschwiha wrote:
             | Removing large chunks of unused code feels refreshing, that
             | is true.
        
       | llIIllIIllIIl wrote:
       | Can someone ELI5 what's wrong with jQuery? People complain about
       | 30 kilobytes jQuery consumes. But at the same time their 5mb
       | minified react babellized gulped uglified webpacked blob is
       | alright to load. Is there anything else that is missing?
        
       | velcrovan wrote:
       | Good
        
       | JJMcJ wrote:
       | We don't know what else was done to the site while jQuery was
       | removed.
       | 
       | I would assume that the British government had considerable
       | resources to put on the rewrite so it's quite possible that the
       | removal was part of a general site refresh.
        
       | seydor wrote:
       | The more Jq goes out of fashion, the better it becomes, because
       | it means it stops changing and you can rely on it for decades.
       | The other framework that looks interesting is htmx
        
       | account-5 wrote:
       | I'm new to web-dev.
       | 
       | Having read the vast majority of comments it seems some people
       | think jQuery is unnecessary/obsolete. Others say it's API is
       | better, more concise, more flexible, etc.
       | 
       | As a newbie I decided to learn vanilla JS as I was too confused
       | with the state of the various frameworks; I mean what one would
       | you choose to start with?
       | 
       | That said I'm interested in what jQuery can do that vanilla JS
       | can't.
        
         | hu3 wrote:
         | jQuery is very comfortable and succinct for some DOM
         | manipulation here and there. That is, when you need to sprinkle
         | HTML with a bit of JavaScript.
         | 
         | But if you're starting today and want to have it easy in your
         | career, learn React or Vue. They pay better and they look good
         | in your CV. And I say that as someone who likes jQuery.
         | 
         | If you want to bet on something new, I suggest
         | https://kit.svelte.dev or https://www.solidjs.com
        
         | jenscow wrote:
         | > That said I'm interested in what jQuery can do that vanilla
         | JS can't.
         | 
         | jQuery is written in JS, so jQuery can't do what JS can't.
         | 
         | The main reason for using jQuery, as you say, is a cleaner API
         | for DOM manipulation...
         | $(".something").parent().append($("<button />").text("click
         | me").click(fn));
         | 
         | If you know nothing about jQuery, you can guess what that does.
         | Of course, you can do it in vanilla JS too. However it's a
         | little harder to write and (more importantly) read.
        
         | [deleted]
        
         | dbrueck wrote:
         | Try Svelte, it's amazing!
         | 
         | I never consciously made a decision to stop using jQuery, but
         | after moving to frameworks like Svelte, there's just not a need
         | for it most of the time (it's been years since I last added
         | jQuery to a project, and I think that was only because I was
         | using some third party lib that depended on it). YMMV of
         | course.
        
       | reggieband wrote:
       | When I first started programming I was pretty lucky to get a job
       | at a games company. My first lead was a veteran who had shipped a
       | lot of AAA titles and he loved his war stories. He was personally
       | interested in performance and he would often cite hardware
       | timings for specific cpu instructions.
       | 
       | One story he told a couple of times was about some grey beard who
       | was before his time. The grey beard was once a legend in the
       | company, often helicoptered into projects at the last minute to
       | help them squeeze out the last bit of performance. His secret was
       | he had a mental library of assembly language tricks applicable to
       | the hardware of his day. But every few years his tricks were less
       | and less relevant as hardware changed and compilers advanced. One
       | day the grey beard was helicoptered into my leads project and
       | everyone expected him to get them some gains. However, this was
       | new hardware and none of his old tricks worked.
       | 
       | I think of this story whenever I see jQuery popup on Hacker News.
       | There is always a strong contingent of devs who swear by this
       | library. But to me, they are like the old grey beard who didn't
       | update his knowledge as the times changed. At one time jQuery
       | allowed them to be the hero and "Get Things Done" faster than
       | their competition. But times have changed.
       | 
       | Argue with me if you must but take stories like this one for what
       | they are worth. The writing is on the wall for jQuery. I was
       | writing websites before jQuery existed, during the reign of
       | jQuery and still today. If some candidate mentioned proficiency
       | with jQuery during an interview I would be polite but internally
       | I would note that the person might be out of touch. Not a red
       | flag, but a yellow flag that I would follow up on. Nothing worse
       | than bringing on a guy who claims to be senior/experienced and it
       | turn out his old tricks won't work because they are no longer
       | appropriate.
        
         | smrtinsert wrote:
         | Yeah this is why I fired my contractor for using a wrench. A
         | hammer should be good enough.
        
         | Andrew_nenakhov wrote:
         | I fall in a different camp. If somebody proposes to use a brand
         | new hot technology in a project that is planned to exist more
         | than a few weeks, I tend to politely stop them in their tracks
         | and use a stable reputable solution proven by time.
         | 
         | You see, new hot technology is always replaced by another newer
         | hot technology, and after hotness wanes, projects often become
         | a abandoned and unmaintained.
         | 
         | Extra this if the proposed hot new tech comes from Google. In
         | this case person pushing it should not only be stopped, but
         | also slapped hard, to help come back to senses.
        
         | simion314 wrote:
         | I wish JS would get all the nice jQuery features, like all the
         | css selectors jQuery has, like a nice feature would be when you
         | retive an HtmlElementCollection to be able to apply some
         | transformation to all elements without having to write a for,
         | or make use Array.from and then use forEach.
         | 
         | But I agree I would not use jQuery in new project and when
         | possible I would replace jQuery in existing code too.
        
           | [deleted]
        
           | acdha wrote:
           | > to be able to apply some transformation to all elements
           | without having to write a for, or make use Array.from and
           | then use forEach.
           | 
           | This has worked for many years. I typically add a shorthand $
           | for the QSA part and on projects where I used to support IE11
           | you could add Array.from there but I haven't bothered since
           | IE was deprecated. jQuery does more but some of those things
           | had performance impacts which were worth thinking about and
           | the combo of QSA and fetch took care about about 90% of my
           | projects.
           | 
           | document.querySelectorAll("div").forEach(i => i.innerText =
           | "test")
        
           | Someone1234 wrote:
           | That's what everyone keeps missing. Can vanilla do what
           | jQuery can? Of course, and that has always been true. What
           | jQuery (and similar) offer is quality of life stuff, vanilla
           | has never even tried to offer.
           | 
           | This is still an ecosystem without a standard library and
           | with no consistent design style/layout. It is janky and bad.
           | It being "less bad than it used to be" isn't the shiny
           | endorsement that everyone thinks it is.
        
             | nikanj wrote:
             | jQuery is implemented in vanilla JS, thus logically all of
             | it's features can be done vanilla JS
        
               | adamisom wrote:
               | That is generally true and not really specific to jquery
        
               | 0xFF0123 wrote:
               | That's a bit like saying everyone should code in
               | assembly. The argument isn't whether it's possible, but
               | whether it's easier / more efficient.
        
               | nikanj wrote:
               | I guess I should have added more meat to my comment:
               | 
               | It's frustrating when people reject a good tool like
               | jQuery, with the argument that the same functionality can
               | be achieved with just vanilla JS.
        
               | [deleted]
        
           | megous wrote:
           | You can extend HtmlElementCollection prototype with any
           | methods you like. (it's NodeList, btw, what's returned from
           | querySelectorAll)
        
             | strbean wrote:
             | My understanding is that mutating built in prototypes is
             | very bad. Not just for interop reasons, but because doing
             | so really hinders many optimizations javascript engines
             | perform.
        
               | cogman10 wrote:
               | Adding methods to prototypes is effectively free. The
               | only time mutating a builtin prototype has negative
               | consequences is when you replace a builtin function with
               | your own thing. All javascript engines (that I'm aware
               | of) JIT at the method level so there's not really a
               | performance impact modifying a prototype.
        
             | simion314 wrote:
             | There is an issue you need to be aware , be careful if you
             | hide the fact that this collection is "live". I mean this
             | part from the docs
             | 
             | >An HTMLCollection in the HTML DOM is live; it is
             | automatically updated when the underlying document is
             | changed. For this reason it is a good idea to make a copy
             | (eg. using Array.from) to iterate over if adding, moving,
             | or removing nodes.
             | 
             | So you need something that will also be efficient and
             | correct, not a 5 minutes implementation.
        
         | vlunkr wrote:
         | I think you're greatly exaggerating the death of jQuery
         | 
         | > old trick's won't work
         | 
         | > writing is on the wall
         | 
         | jQuery still works and is used in an crazy amount of websites.
         | It's not going away soon. The biggest downside is the extra
         | network request, but it's probably cached in 99% of browsers,
         | so all that's left is some extra CPU time.
         | 
         | You're also exaggerating the claims of jQuery defenders. No one
         | here is arguing that the site should keep jQuery, or that you
         | should write a ton of new jQuery code.
        
           | somehnacct3757 wrote:
           | Chrome started partitioning the cache a couple years ago to
           | mitigate timing attacks, so there's no network savings
           | anymore when a bunch of sites all link to the same jQuery cdn
           | entry.
        
             | Gigachad wrote:
             | Someone did tests on it before this and found that with how
             | many versions and cdn sources there are, your exact jquery
             | is almost never in the cache.
        
             | sefrost wrote:
             | I believe Safari has been doing it since 2013.
             | 
             | https://bugs.webkit.org/show_bug.cgi?id=110269
        
         | samwillis wrote:
         | While I agree to some extent, jQuery is so prolific online [0]
         | there will always be jobs for those "grey beards" who know it
         | well. There will always be legacy codebases that make extensive
         | use of jQuery that will never be rewritten and are too
         | important to retire.
         | 
         | jQuery is the new Cobol!
         | 
         | I'm not a "grey beard" but I'm currently doing a freelance
         | project updating the UI on a Perl+jQuery site... As much as we
         | would like to rewrite it from scratch it's very unlikely to
         | ever happen, it's going to be maintained as is with small steps
         | towards "modernisation" over time.
         | 
         | 0: jQuery is used by between 15-40x more sites than React
         | depending source:
         | 
         | https://www.similartech.com/compare/jquery-vs-react-js
         | 
         | https://w3techs.com/technologies/comparison/js-jquery,js-rea...
        
           | dheera wrote:
           | To be fair, vanilla JS, especially document.querySelector,
           | still hasn't caught up with all the features of jQuery and
           | any other framework is going to be much, much bigger than
           | jQuery.
           | 
           | It's not COBOL until something replaces jQuery that is
           | _easier_ than jQuery.
        
         | 0xCAP wrote:
         | Speaking of gamedev and jQuery, I work at a company where we
         | basically make games for education purposes, for high profile
         | universities, mostly. The games are all web applications, and
         | we've learned to bend React in each and every direction to best
         | serve our uncommon use case. A few months ago we needed some
         | extra firepower, and offloaded a project to a small team of
         | external consultants. I'm still shocked by what they shipped:
         | the smoothest and juiciest web game I've ever seen, made with
         | the messiest and most ancient clusterfEUR#k of jQuery I've ever
         | witnessed in existence. The moral of the story to me is: no
         | matter how cool your new shiny tool is, old, battle-tested
         | tools have generated generations of wizards which, given the
         | right scenario, can still bring magic to the table.
        
         | SEJeff wrote:
         | Amusingly, I always joke that I'm fluent in jQuery, but no
         | absolutely no javascript. As a mostly backend go/python/non-
         | javascript developer that has always held true.
         | 
         | It is just a tool in the belt for an engineer. Can you use
         | jQuery in 2022 or later to solve really amazing problems that
         | impact user experience? You sure can! Would you be better off
         | to use a modern javascript variant and stuff like react
         | instead? You also absolutely would.
         | 
         | So just because a tool is old doesn't mean it can't be used to
         | solve real user problems. There are still banks and airlines
         | that run COBOL, and as a user, do you really care that much?
         | I'd take "knows $insert_older_less_hip_tech_here" as experience
         | of having done something for awhile.
         | 
         | Now if I was asked to write a front end today, I'd have to sit
         | down and properly learn react + typescript (because javascript
         | is awful without sensible type checking), and that would add to
         | the time to ship, but is the correct thing to do.
        
           | cogman10 wrote:
           | While I think that's the right choice, I'd just like to point
           | out that the problem with jQuery today is it was a library
           | built to smooth over and fix differences between browser
           | JavaScript engines (IE, well, IE).
           | 
           | Over the past 15 years or so browser JavaScript engines,
           | except at the extreme edges, are roughly comparable. Further,
           | a lot of the features of jQuery have been adopted into
           | standard JavaScript.
           | 
           | So, the reason of eschewing jQuery, even for small pages, is
           | simply that you don't need it. Vanilla JS (or typescript) +
           | modern CSS have pretty much all the same capabilities without
           | any of the bloat. Using it today would be a little like using
           | a library made to back port java 8 features onto a java 5
           | JVM.
        
             | strbean wrote:
             | > smooth over and fix differences between browser
             | JavaScript engines
             | 
             | And let us avoid some of the extremely verbose and un-
             | ergonomic standard APIs.
        
           | tinco wrote:
           | Why react though? Just modern JavaScript (and typescript) is
           | a great replacement for jQuery.
           | 
           | The react part is just for when you need to build something
           | that needs architecture.
        
           | tambourine_man wrote:
           | >Would you be better off to use a modern javascript variant
           | and stuff like react instead? You also absolutely would.
           | 
           | Why?
        
         | planetsprite wrote:
         | when you say veteran do u actually mean veteran of a real life
         | combat war who later joined the games industry or veteran of
         | the games industry
        
           | Smaug123 wrote:
           | You know "veteran" does mean "someone with a lot of
           | experience in something", right? In non-US countries that's
           | even the primary meaning.
           | 
           | https://dictionary.cambridge.org/dictionary/english/veteran, 
           | https://www.oxfordlearnersdictionaries.com/definition/englis.
           | .. both give its primary meaning as "a person who has had a
           | lot of experience of a particular activity" or similar. Even
           | Wikipedia gives the generic definition first, and clarifies
           | the more specific case as "military veteran".
        
         | 8ytecoder wrote:
         | For everyone of these "grey beard" stories I can point you to a
         | "young gun" story involving a fad of the week framework that's
         | just over complicated and over engineered and doesn't even
         | solve anything.
         | 
         | A long time we had a really good engineer who can crack
         | topcoder and coding challenges with ease. We had a problem
         | where we had to collect all changes to the User models and send
         | it to the marketing platform. It was initially implemented in
         | Rails Active Record which took progressively more time to
         | collect and sync changes. Rails was hot at the time and SQL was
         | really frowned upon. A lot of developers to this day hate SQL.
         | Then came a "grey beard" who simply rewrote the whole thing
         | into a single complex query that let the database figure out
         | the optimum way to find the exact same data. Total time went
         | from over 10hrs to 10mins.
        
         | rhapsodic wrote:
        
         | linkdd wrote:
         | what's so wrong about sprinkling some jquery on a static
         | website (generated with hugo or jekyll)?
         | 
         | On https://kubirds.com I use:
         | 
         | jQuery appear: https://plugins.jquery.com/appear/
         | 
         | jQuery fancybox: https://fancyapps.com/docs/ui/fancybox/
         | 
         | Do not put jQuery to the trash yet, it still have a long life
         | ahead.
        
           | httpsterio wrote:
           | It's pretty expensive to ship and compute. Wikipedia for
           | example dropped jquery from their navigation and it resulted
           | in a ~27% difference in battery usage IIRC.
        
           | influx wrote:
           | I checked out kubirds, and even though I'm probably somewhat
           | in your target demographic, I noticed that I couldn't
           | discover what kubirds does without watching a video.
           | 
           | Even scrolling down, and through the website, I didn't really
           | understand it, until you compared to Nagios, which I am
           | familiar with. Hope you don't mind a little unsolicited
           | feedback. The website does look super clean!
           | 
           | I would love to read a paragraph of your elevator pitch the
           | moment I lay my eyes on the site though. Cheers.
        
             | linkdd wrote:
             | Thank you a lot for the feedback! We'll definitely do
             | something about it :)
        
               | retcon wrote:
               | It's only8 minutes since your responseso I'd just like to
               | say that I almost immediately got the gist of your
               | product before any changes. Long advertising experience
               | means like a remedial English teacher I'm better than
               | most reading poorer copy but I consider your(unchanged)
               | copy very good. Unfortunately without the words"audit",
               | "WORM" and"incident search" present or prominent I'm not
               | your market. But I could think of many thousands of
               | publication sites longing for your tool, if those terms
               | applied.
        
               | linkdd wrote:
               | Thank you for the feedback as well :)
               | 
               | > I'm better than most reading poorer copy but I consider
               | your(unchanged) copy very good.
               | 
               | This is nice to hear/read, yet I'm a perfectionist who
               | knows perfection do not exist. The pitch can always be
               | improved and clarity/transparency is very important to
               | us.
               | 
               | > Unfortunately without the words"audit", "WORM"
               | and"incident search" present or prominent I'm not your
               | market.
               | 
               | This proves my previous point, since we rely on Docker
               | images to implement the monitoring/reactivity part,
               | literally ANY workflow/business logic can be applied (but
               | we've been told that it's hard to trust "it can do
               | everything").
               | 
               | > But I could think of many thousands of publication
               | sites longing for your tool, if those terms applied.
               | 
               | I'd love to get in touch with you about that, if you have
               | time, you can find my contact info in my profile:
               | https://news.ycombinator.com/user?id=linkdd
        
           | ianleeclark wrote:
           | > what's so wrong about sprinkling some jquery on a static
           | website
           | 
           | You're talking past one another. He's speaking in the context
           | of AAA games, and the equivalent of that in the webdev world
           | is a highly interactive application.
        
             | bcrosby95 wrote:
             | I don't see anyone saying to use jQuery for highly
             | interactive applications. If that is the comparison, its
             | not talking past eachother, the original comment is a
             | strawman.
        
               | ianleeclark wrote:
               | > I don't see anyone saying to use jQuery for highly
               | interactive applications.
               | 
               | I don't know what to tell you. The first sentence in my
               | comment was a quote and the rest of the comment was
               | responding to say how that quote was misunderstanding the
               | OP.
               | 
               | I never said anyone specifically said to do that, but
               | that, in the metaphor that the OP made, a static website
               | isn't an accurate comparison to a AAA game.
        
         | ConcernedCoder wrote:
         | The part you're leaving out, is that once confronted with the
         | fact that his old easy tricks don't apply, the well-seasoned
         | fellow will draw on his years of experience to provide new
         | tricks to save the day.
         | 
         | I think your portrayal of well-seasoned engineers as the
         | derogatory 'greybeard' with a 'bag of tricks' and a hero
         | complex -- glosses over the fact that many of these men and
         | women have real hands-on experience with a multitude of
         | technologies spanning decades, and in my mind there's real
         | value / leadership qualities associated with individuals
         | companies can rely on to just "get things done" in a pinch.
        
         | soperj wrote:
         | What newer libraries are you using for performance gains?
        
         | treeman79 wrote:
         | I've seen a single jQuery developer be replace by a team of 20
         | angular developers a couple times now. The jQuery was far more
         | productive
        
         | dlandis wrote:
         | > But to me, they are like the old grey beard who didn't update
         | his knowledge as the times changed.
         | 
         | Maybe it's just me but with all the rampant age discrimination
         | nowadays in tech, I really don't like to see the continued
         | propagation of this stereotype.
         | 
         | All sorts of people of all ages are unwilling or unable to
         | update their knowledge of new tech, there is no reason to link
         | this characteristic to someones advanced age.
        
           | Suzuran wrote:
           | I have found the opposite of the stereotype to be true; I
           | feel I've learned more in the last 5 years or so than I have
           | the previous 30 because I now have the experience to
           | contextualize and sort it all, the discipline to stay focused
           | and active when Real Life doesn't want to let me, and access
           | to resources that would have cost an unreasonable sum even 10
           | years ago.
        
           | judge2020 wrote:
           | It was just a reference to the person in the story, not an
           | allusion to "because he was old he didn't try to update his
           | knowledge/continue learning".
        
             | squiffsquiff wrote:
             | So why describe him as a "greybeard" then? It are you
             | claiming to have met many younger and/or female
             | 'greybeards'?
             | 
             | If your answer is that 'it's just part of the story'. Well
             | that's precisely the complaint.
        
               | jokethrowaway wrote:
               | It's 2022. Men can get pregnant and women can have a
               | beard.
               | 
               | Greybeards is an inclusive term and it's a well known
               | term.
        
               | burnished wrote:
               | Because it communicates a well understood idea. It is
               | great that we as a society are becoming more conscious
               | about the way we speak, but I feel like your complaints
               | here are aimed anyone who isn't achieving the proper
               | level of 'purity'.
        
               | skavi wrote:
               | greybeard has always felt like a term of respect to me.
               | personally i think of the type of person who could have
               | been at bell labs in its heydays. definitely could
               | exclude women though.
        
               | capableweb wrote:
               | The meaning of "greybeard" have moved from being
               | literally, to current be figuratively. It doesn't mean
               | that the person is A) old, B) man C) have a beard and D)
               | that the beard is grey.
               | 
               | It simply means someone experienced/being at something
               | for a long time. The greybeards at a company can be all
               | women of the age 26, but if they been with the company
               | for 5 years when the company got started 5 years ago,
               | they are the greybeards of that company.
               | 
               | Might as well say "veteran" or "old-timer", although
               | "old-timer" would imply actual old age, "veteran" implies
               | nothing like that.
        
           | o10449366 wrote:
           | The OP doesn't link the characteristic to their example's
           | age.
        
           | reggieband wrote:
           | This is a fair criticism of how I chose to tell the story.
           | The line you quoted was supposed to refer to the character
           | introduced in the second paragraph and not to a generic
           | stereotype of aged man.
           | 
           | I can see how my choice of wording created an implication
           | that people who have grey beards are old and that it is this
           | oldness that contributes to their unwillingness to learn. The
           | familiar cliche of "you can't teach an old dog new tricks".
           | 
           | What I actually hope to communicate is that there is a hubris
           | which leads some to believe their skills do not require
           | updating. The caution is that sooner or later this hubris may
           | lead to sudden downfall. People may call on you in their time
           | of need and you will fail. And this failure is not because of
           | your age, your intelligence or your willingness to work hard.
           | You will fail because you became overly comfortable with a
           | passed status quo and you let your skills get out of date.
           | 
           | I see a trend of well-written, evidence backed articles where
           | large, well funded sites are making a case to deprecate
           | jQuery. These fact-based investigations into problems faced
           | by their dev team result in a reasoned decision to remove a
           | dependency that no longer justifies its cost. I encourage
           | everyone to introspect if their defense of jQuery is on an
           | equal technical footing to these types of investigations.
        
             | kordlessagain wrote:
             | > I think of this story whenever I see jQuery popup on
             | Hacker News. There is always a strong contingent of devs
             | who swear by this library. But to me, they are like the old
             | grey beard who didn't update his knowledge as the times
             | changed.
             | 
             | This is a strawman argument. It's a biased view you hold.
             | Because of that, you make up a story to match your biases
             | around people who use such-and-such library don't think
             | they need to update their skill set. I'm not angry about
             | this, but am only pointing out biased arguments create
             | dissonance.
             | 
             | > I see a trend of well-written, evidence backed articles
             | where large, well funded sites are making a case to
             | deprecate jQuery. These fact-based investigations into
             | problems faced by their dev team result in a reasoned
             | decision to remove a dependency that no longer justifies
             | its cost. I encourage everyone to introspect if their
             | defense of jQuery is on an equal technical footing to these
             | types of investigations.
             | 
             | You read something somewhere about how jQuery is a costly
             | dependency. Yet, there are no links that I can see anywhere
             | in the threads here, nor a good rational argument for
             | people to NOT use jQuery because it is a costly dependency.
             | There are opposing opinions on this, but the opinions that
             | it needs to be included via CDN don't address the fact it
             | can be hosted locally and the opinions "who needs all that
             | code to load?" don't take into account that browsers and
             | networks are bonkers fast nowadays. Who cares if it's a bit
             | more code? It's not like jQuery is growing its codebase at
             | the rate compute and network speed increases.
             | 
             | For that matter, could not the same argument be made of
             | JavaScript itself? I taught myself Promises, not because I
             | could stay "relevant", but because it makes good sense to
             | write code that is easy to read and maintain, even if it is
             | me doing both on my project. The code I produced when I
             | wasn't doing Promises was "legacy" the second it hit the
             | repo, and will be "costly" if someone else has to jump in
             | and work on it to convert it to Promises, because they'll
             | have to brain dump what I was thinking (or not) when I
             | wrote it!
             | 
             | This salt and pepper beard stays up on technology. I didn't
             | really write code in the past, but now I'm great at what I
             | do and I fully intend on exploring new technologies when
             | they compliment what I can do rapidly in the frameworks and
             | methods I well understand, if that's what it takes to get
             | to market faster.
        
             | lhorie wrote:
             | IMHO this analogy doesn't really click, on multiple levels.
             | Any old timer who uses jQuery surely is also aware of
             | querySelectorAll and friends. There's even an entire
             | website dedicated to catering to exactly that
             | transition[0]. I don't think anyone defending jQuery is
             | doing so out of a sense of hubris towards outdated
             | knowledge, but rather because it ironically is more
             | lightweight than a lot of the modern SPA craze, while still
             | being more ergonomic than vanilla JS.
             | 
             | To try to shoehorn this back into the compiler analogy,
             | modern frameworks would be like the advanced, complex and
             | opaque compiler, and the grey beard is the guy that
             | understands how stuff like HTML streaming and font download
             | prioritization and hidden classes affect performance,
             | whereas the team lead is analogous to the run-of-the-mill
             | bootcamp grad that knows how to use the framework-du-jour
             | but is way out of their depth if venturing outside the
             | comfort of the framework and into the depths of those
             | advanced topics.
             | 
             | And I think the gov.uk use case here might actually be an
             | outlier in the sense that it actually considers performance
             | of an already tight codebase, whereas a lot of jQuery
             | deprecation efforts bring with them heavier alternatives in
             | the name of maintainability or developer productivity or
             | hiring or whatever. To be clear, many of these concerns are
             | quite valid, but it seems a bit disingenuous to create a
             | false dichotomy between understanding of low level concerns
             | vs concerns about SDLC management. They aren't mutually
             | exclusive.
             | 
             | [0] https://youmightnotneedjquery.com/
        
             | niccl wrote:
             | upvoted because this is a really good example of how to
             | respond to criticism
        
             | narag wrote:
             | I'm curious: what's replaced Query? I guess it's not a
             | single library, but a set of frameworks...
        
               | zelphirkalt wrote:
               | Plain JavaScript replaced it. jQuery provided useful
               | things at its time, indeed, but JS has been somewhat
               | improved at least and learned the tricks, even improved
               | upon them. JS is still somewhat ugly, but I will give it
               | at least that much. Now one does not really need jQuery
               | any longer for most things, which were done with it. I
               | personally find plain JS API and fetch to be cleaner than
               | jQuery stuff even. People still use jQuery it out of
               | habbit or, because it would be a lot of work to get rid
               | of it everywhere.
        
           | namdnay wrote:
           | Do you see a lot of age discrimination it tech?
           | 
           | What I have seen is awkward situations where you have two
           | developers of roughly equal competence. One happens to be 45
           | and the other 28. Fine, nobody would care about that. Except
           | that due to automatic annual raises, job switches, seniority
           | bumps etc, the 45 year old developer is paid twice as much as
           | the junior.
           | 
           | The rational response to this would be to say to align the
           | two salaries (probably somewhere in the middle), but
           | obviously the older one is never going to accept that - we
           | all expect our salaries to "ratchet" upwards. So we end up
           | with the irrational response, which is to sideline/kick-out
           | the old expensive developer
        
             | Barrin92 wrote:
             | >Do you see a lot of age discrimination it tech?
             | 
             | Yep, especially culturally rather than financially. Almost
             | everywhere I've worked there was the implicit assumption
             | that engineers graduate out of coding jobs into management
             | roles. In a lot of places there's the idea that focusing on
             | writing software is some sort of career dead-end for older
             | people which is a shame for anyone who just likes coding. I
             | think it's widely perceived as a young person's job for no
             | good reason.
             | 
             | And on the business side it's also pretty blatant. IIRC
             | founders in their 40s are statistically most successful.
             | Yet prominent people in the industry still openly fetishize
             | youth.
        
             | vkou wrote:
             | If the 45-year old developer has been with the firm for 15
             | years, they may have roughly equal competence in writing
             | code, but unless they spent the past decade with their eyes
             | and ears closed, the 45-year old should have vastly more
             | institutional knowledge.
             | 
             | Seniority bumps, x-weeks-vacation-after-y-years-of-service
             | reward that intangible.
        
               | lanstin wrote:
               | Tho institutional knowledge can cut both ways - being
               | indignant rather than resigned about the problems, and
               | trying to fix things without knowing why all the prior
               | attempts failed, and even being friendly to people that
               | are politically outcast, are all great. Even just
               | bringing novel solutions from outside industries or
               | organizations to bear on problems is useful (tho
               | experience is also a common cause for having a variety of
               | solutions in ones tool box).
        
             | prohobo wrote:
             | Really? I see 40+ people as diversity hires for the most
             | part. They're there so no one can say the company is
             | ageist. The "good" devs become managers or magically
             | disappear. Magically as in they get banished to some other
             | realm I've never been able to see.
             | 
             | That, to me, says there's plenty of ageism.
             | 
             | If it was as simple as "they ask for too much", then
             | someone would snap them out of it and we'd see plenty of
             | older devs at software companies. Maybe less than younger
             | devs, but plenty anyway.
             | 
             | Honestly, I'd prefer if there were more older engineers to
             | show the younger ones how dumb they are. Maybe better at
             | building dynamic frontends, but dumber. That kind of
             | seniority is sorely missing in software engineering, and it
             | would drive standards upwards rather than downwards as they
             | currently are.
             | 
             | I'm currently in between, and wish I had more mentorship.
        
               | bcrosby95 wrote:
               | I don't know if we're just exceptionally lucky, but my
               | friend group - the vast majority of which are still doing
               | coding/sysadmin/devopsy stuff - are in our 40s and we
               | have all had no problem finding employment.
               | 
               | I think a major factor is that the field just exploded so
               | much over the past 20 years. Statistically, people over
               | 40 are going to be in the minority.
               | 
               | I also do think a lot of startups maybe aren't the best
               | place for older people. My brain wastes a lot of cycles
               | on edge cases I've learned to identify from experience,
               | that don't matter if you just need to slop some shit out
               | the door ASAP.
        
               | namdnay wrote:
               | > The "good" devs become managers or magically disappear.
               | Magically as in they get banished to some other realm
               | I've never been able to see.
               | 
               | I agree with you here - the question is why? I don't
               | think it's because we're discriminated against for being
               | old, I think it's because in 99% of cases (we can't all
               | be donald knuth), our cost grows faster than our skills.
               | So we either move to management/business (where
               | experience matters more and it's much harder to quantify
               | productivity), or we become "the overpaid one".
               | 
               | > If it was as simple as "they ask for too much", then
               | someone would snap them out of it and we'd see plenty of
               | older devs at software companies
               | 
               | But they wouldn't snap out of it. (a) in most countries
               | you can't demote people, (b) it's very hard
               | psychologically to accept being paid less for the same
               | job
               | 
               | > more older engineers to show the younger ones how dumb
               | they are.
               | 
               | I'm talking about 45+ vs 30 years olds here, not 30 vs
               | 23.
        
           | armchairhacker wrote:
           | I sympathize with older devs, my dad is an older software
           | dev.
           | 
           | But you kind of do have to be old in order to have outdated
           | knowledge: nobody young is going to learn assembly tricks
           | which worked on MIPS and other past architectures. Older devs
           | and companies not constantly learning new things and updating
           | to best practices is a real phenomenon.
           | 
           | On the other hand, anecdotally most older developers actually
           | do keep up to date with the latest best practices. And there
           | are lots of decades-old frameworks which aren't obsolete:
           | lots of people greenfield projects with C++ and Spring Boot
           | and .NET, and unless I'm mistaken the C ABI and system calls
           | haven't changed much over the past ~40 years. So it's not
           | like being old automatically means or even really suggests
           | you're going to use worse, outdated techniques.
        
             | markdown wrote:
             | > but you kind of do have to be old in order to have
             | outdated knowledge.
             | 
             | Not in the frontend dev space. I once left it for 2 years.
             | when i came back it was a whole new world
        
             | threatofrain wrote:
             | Bootcamps such as Hack Reactor (purchased by Galvanize)
             | have curriculum which is basically outdated by 10 years, so
             | you're going to have graduates using var, anonymous self-
             | executing functions as modules that mutate the global
             | scope, and libraries like jQuery and bluebird.
             | 
             | If any student leaves that program with a modern
             | perspective of web dev (such as using Redux or even RTK),
             | it will be due to their own personal grit.
             | 
             | C'est la vie.
        
               | seattle_spring wrote:
               | This is totally wrong. I hired a couple devs from Hack
               | Reactor years ago and they had tons of lessons based on
               | React and the ecosystem around it.
        
               | threatofrain wrote:
               | Your information might not reflect the online-only
               | program, which is now the only choice. My information is
               | from two sequential cohorts of students who are yet to
               | graduate. Also, if you know what to Google for, then you
               | can see how the curriculum has updated over time. Some
               | students do this to cheat, and they can do so precisely
               | because the curriculum is largely frozen in time.
               | 
               | Hack Reactor has made Redux completely optional and so
               | almost nobody choose it for their projects. This may have
               | been in response to transitioning to an online-only
               | program. If students understand anything on the "React
               | ecosystem" including even Redux, it is due to their own
               | personal ambition. If you see Redux explicitly listed in
               | their curriculum, do not be confused.
               | 
               | If you see students with Next.js, RTK, or any other
               | framework or library from the React ecosystem on their
               | portfolio, that is due to their own grit.
        
               | fallingknife wrote:
               | Can't speak for Hack Reactor, but your generalization of
               | "bootcamps like" is wrong. Went to a bootcamp in 2016 and
               | was doing React/Redux on the front end.
        
               | threatofrain wrote:
               | > Bootcamps such as Hack Reactor (purchased by Galvanize)
               | 
               | No, this generalization is quite correct. If you went to
               | a bootcamp which was not _such as_ Hack Reactor, then
               | perhaps you may wish to promote the program by name and
               | discuss your experience there.
        
               | CryptoBanker wrote:
               | I went to Fullstack Academy in 2017 and React and Redux
               | were both part of the core curriculum
        
             | giobox wrote:
             | > But you kind of do have to be old in order to have
             | outdated knowledge
             | 
             | I'm not so sure. Google and StackOverflow are chock full of
             | outdated (sometimes dangerous!) advice and knowledge on
             | just about any tech subject, which hurts the young as much
             | as the old.
             | 
             | I've seen just as many outdated suggestions from junior
             | devs repeating the first thing they found on google as I
             | have older devs with stale knowledge. I'd probably argue
             | the former has been a larger problem, honestly.
        
             | eyko wrote:
             | I'm nearing 40 and I've seen a bit of both. By far the best
             | teams I've worked in had a healthy mixture of experienced
             | developers and younger ones, although I'd say the main
             | catalyst was a mentoring mentality where everyone, young
             | and old, was encouraged to share their experiences
             | (especially the bad ones) in an attempt to
             | brainstorm/crowdsource an improvement to the status quo.
             | 
             | I've also seen the opposite of what you'd expect: a young
             | startup with a very young team that functioned on outdated
             | practices and tools. My first contact with their codebase
             | was a shock to the system - a mishmash of competing coding
             | styles and conventions, barely any of them a best practice,
             | much of it not very idiomatic, an alarming lack of
             | consistency. The choice of tools, libraries and frameworks
             | was (by startup standards) definitely not best in class,
             | and where good choices had been made, the joy was short
             | lived by realisation that they were on old versions, or not
             | using their tooling properly.
             | 
             | But, anecdotes aside, there's a point that generally gets
             | overlooked. Best practices and good developer experience
             | are the result of intentional choices, often in retrospect.
             | The only way to come up with best practices or to improve
             | DX is through experience -- especially poor experiences. I
             | mean, who would've thought that experience was an asset.
        
           | edoloughlin wrote:
           | >> But to me, they are like the old grey beard who didn't
           | update his knowledge as the times changed.
           | 
           | > Maybe it's just me but with all the rampant age
           | discrimination nowadays in tech, I really don't like to see
           | the continued propagation of this stereotype.
           | 
           | I would agree. If you last a long time in tech, you're more
           | than the sum of the libraries you've learned.
        
         | Beltalowda wrote:
         | > I think of this story whenever I see jQuery popup on Hacker
         | News. There is always a strong contingent of devs who swear by
         | this library. But to me, they are like the old grey beard who
         | didn't update his knowledge as the times changed. At one time
         | jQuery allowed them to be the hero and "Get Things Done" faster
         | than their competition. But times have changed.
         | 
         | Whenever I want to use "vanilla JS" I use jQuery, because I
         | find the DOM and various other JS APIs quite annoying to work
         | with and jQuery makes things a lot smoother. There are some
         | other, slightly smaller, libraries too, but they offer little
         | advantages, are often unmaintained, and many people at least
         | kind-of knows jQuery.
         | 
         | Bombastic absolute statements about "greybeards" being "out of
         | touch" etc. is basically why I tend to avoid the JavaScript
         | frontend community by the way, and also why I moved towards
         | backend rather than frontend. I'm too old to deal with people
         | who think there is _One True Way(tm)_ to do things and that
         | everyone who disagrees is a blubbering idiot (not that FE JS
         | have a monopoly on this by any means, but it 's far more common
         | there).
        
           | dagaci wrote:
           | Yes as a "greybeard" i noted first that the headline
           | performance gain was 10% & 11% this for a team given far more
           | time and resources to optimize for their goal than most teams
           | or individuals dev. I raised an eyebrow at that
           | 
           | However devs seeking employment should always be prepared to
           | play up to what is trending vs what is appropriate.
        
         | DeathArrow wrote:
         | I rather not write 10 lines of Vanilla JS when I can write a
         | line using jQuery. And I do prefer jQuery-style syntax for
         | manipulating the DOM.
        
           | smrtinsert wrote:
           | Exactly, I don't know why people have to pit jQuery against
           | the current generation of ui or vdoms etc. Just because you
           | have a car doesn't mean a bike doesn't have its uses.
           | 
           | These threads are completely ridiculous.
        
           | atoav wrote:
           | As somwone who constantly replaces jquey with vanilla js the
           | difference is more like two lines of jquery against 3 lines
           | of vannila js.
           | 
           | One line more. But you have one dependency less, which is
           | quite beneficial
        
             | pseudosavant wrote:
             | Update: fixed formatting
             | 
             | A lot of times the jQuery syntax is easier to understand
             | (IMO).
             | 
             | Remove element exmample:
             | 
             | jQuery API:                 $('.element').remove()
             | 
             | DOM API:                 document.querySelector('.element')
             | .parentNode.removeChild(document.querySelector('.element'))
             | 
             | or if you want to introduce another variable just to remove
             | the element:                 const child =
             | document.querySelector('.element');
             | child.parentNode.removeChild(child);
             | 
             | Create element example:
             | 
             | jQuery API:                 const fooElement = $('<div
             | class="foo" style="display: none">')
             | 
             | DOM API:                 const fooElement =
             | document.createElement('div');
             | fooElement.classList.add('foo');
             | fooElement.setAttribute('style', 'display: none');
             | 
             | I know which ones I'd rather write and read.
        
               | mikojan wrote:
               | Or you could just do
               | document.querySelector('.element').remove()
        
               | egeozcan wrote:
               | HTMLElement.prototype.remove exists everywhere except IE:
               | 
               | https://developer.mozilla.org/en-
               | US/docs/Web/API/Element/rem...
               | 
               | Also for element creation:
               | 
               | Object.assign(document.createElement("div"), { class:
               | "foo", style: "display:none" });
               | 
               | I mean, you normally abstract these things with a helper
               | fn or two, without importing the whole jQuery anyway.
        
               | wvenable wrote:
               | > I mean, you normally abstract these things with a
               | helper fn or two, without importing the whole jQuery
               | anyway.
               | 
               | Add enough helper functions are you're at jQuery anyway.
               | Looking at the jQuery source code, it manages a lot of
               | edge cases that I don't really have time to figure out on
               | my own.
               | 
               | The DOM API isn't really designed that well for human
               | consumption.
               | 
               | https://developer.mozilla.org/en-
               | US/docs/Web/API/Node/nodeTy...
        
               | egeozcan wrote:
               | You need to write a _lot_ of helpers to come close to
               | jQuery. Also edge cases aren 't that big of a deal now
               | that IE is near it's EOL.
        
               | wvenable wrote:
               | I'm not talking about browser edge cases, I'm talking
               | about API edge cases. The DOM API is not very human-
               | friendly.
        
               | ratww wrote:
               | _> Add enough helper functions are you 're at jQuery
               | anyway._
               | 
               | I really hate these exaggerations. jQuery is, last I
               | checked, over 200k unminified. Anyone writing enough
               | helper functions to get to a fraction of that is already
               | a pathological case.
        
               | wvenable wrote:
               | Browsing the source of jQuery and I don't find it bloated
               | but I find a lot of knowledge in there that a naive user
               | the DOM API would most likely know about.
               | 
               | It's kind of like how you can comparing languages using
               | simple example code isn't relevant because proper code
               | with full error handling and edge case handling can be
               | very different from a naive example.
        
               | cogman10 wrote:
               | IE 11 hits it's EOL next month. So, really probably not a
               | whole lot of reason not to just pull the trigger and
               | inform everyone that complains of this fact.
        
             | jokethrowaway wrote:
             | jQuery emerged from the market and it's pretty close to
             | what developers wanted to express.
             | 
             | JS is design by a committee full of people afraid to come
             | out as "not-as-kind" and completely detached from reality.
             | 
             | True, doing some of the things which were half an hour on
             | stack overflow or 1 line of jQuery became a couple of lines
             | of vanilla JS but the API is still pretty awful.
             | 
             | Think about XHR > fetch vs $.get or $.post
             | 
             | I agree, I'll try to use vanilla JS and google something
             | when I need to ship some code - but for hacking around I'll
             | just bring in jQuery and write 1-liners at blazing speed.
        
           | pseudosavant wrote:
           | Absolutely. I stopped using actual jQuery a while ago in
           | favor of a light (78 loc) wrapper around the native DOM that
           | mostly uses the jQuery API. jQuery has a really well thought
           | out fluent API.
           | 
           | https://gist.github.com/pseudosavant/b86eedd9960ade958d49447.
           | ..
        
         | TOMDM wrote:
         | I agree with your sentiment in total, but I'd also add, for
         | every out of touch programmer still swearing by JQuery, there
         | are 5 recruiters that demand proficiency in it that other
         | programmers feel they need to appease.
         | 
         | I think the most diplomatic way of distinguishing the two types
         | of programmers is just to ask why they like JQuery.
         | 
         | "Because it helps me ship faster" may be a bit out of touch.
         | 
         | "Because it's a required competency in working with some code
         | bases" are probably the latter.
        
         | arbitrage wrote:
         | jQuery is dead, Netcraft confirms it?
         | 
         | "Nobody goes to that restaurant anymore, it's too busy."
        
         | lesgobrandon wrote:
        
         | jokethrowaway wrote:
         | Your examples (while beautiful) are fairly different from each
         | other.
         | 
         | The assembly tricks got obsoleted because they're not needed
         | anymore - we simply don't program in that hardware anymore.
         | 
         | jQuery still works fine to this day. It's just that engineers
         | don't like it anymore. The same will happen to React in a few
         | years.
         | 
         | I wouldn't hire a jQuery developer for working in a cushy
         | company with their millions and their React codebases - React
         | knowledge is actually one of the things we test for (and,
         | unexplainably, one of the few exceptions we'll allow to avoid
         | knowing about algorithms and time complexity).
         | 
         | If I had to build something with my money on the line, I'd
         | definitely pick the jQuery veteran.
        
         | robalfonso wrote:
         | As a counterpoint, I had a similar conversation with a report
         | of mine about jQuery. He said it was not necessary and you
         | could just use vanilla js.
         | 
         | I said while yes that's true as a dev if I told you I needed
         | you to implement a new payment provider for billing would you
         | tightly and directly align with who we used or abstract it away
         | via some wrapper so that if we ever had to change it wouldn't
         | be difficult? Of course everyone builds abstractions so you
         | aren't stuck with a single provider because it's crazy not to.
         | 
         | I see jQuery as that abstraction. At the end of the day each
         | browser is an api implementer and while they've come so far,
         | that doesn't mean the situation is stable and we'll never see
         | implementation fracture again. It of course doesn't have to be
         | jQuery but any direct implementation of JS seems to have that
         | risk which is easily mitigated by wrapping the basic
         | functionality. I don't know why you wouldn't choose to do it.
        
           | Gare wrote:
           | What? Web APIs are one of the most stable APIs in existence.
           | "Don't break the web" is taken very seriously.
        
             | damon_c wrote:
             | The context for this belief has only existed for about 10
             | years now.
        
               | plorkyeran wrote:
               | The phrase "Don't break the web" is a bit newer, but it's
               | basically the sentiment that lead to WHATWG forming 18
               | years ago, and one of the big defining goals of HTML5 was
               | to set a foundation for expanding the web platform in a
               | backwards-compatible way. HTML5 has been out for about as
               | long as the invention of the web to HTML5.
        
               | 8ytecoder wrote:
               | More like half of that. I did web development in 2012. We
               | couldn't have done it without jQuery.
        
           | anotheracctfo wrote:
           | Yeah that's what I'm afraid of. IE 5.5 diverging from
           | Netscape 4 again.
           | 
           | Are we really betting on Microsoft, Google, and Apple not
           | getting into a feature fight again?
        
             | dudus wrote:
             | They do get into feature fights often. See Apple not
             | adopting PWAs, or IE focusing on blocking 3rd party
             | cookies. But the parts that are covered by jQuery are
             | solved and agreed upon.
        
           | lalaland1125 wrote:
           | The problem is that most of the "abstractions" provided by
           | jQuery are no longer abstractions and can frequently be
           | replaced with simple alternatives that are directly provided
           | by browser APIs that have extremely wide support.
           | 
           | https://youmightnotneedjquery.com/ is a handy illustration of
           | this.
        
             | jefftk wrote:
             | That site was very helpful when it first came out, but now
             | that most of us don't even need to support IE11 it's
             | assumption that you at least want to support IE10 is very
             | stale.
        
             | evilotto wrote:
             | I fail to see how replacing 1 line of jQuery with 10 lines
             | of plain js is simple. Sure, you don't use those 10 lines
             | all over the place, you write a function ... but then
             | aren't you just recreating jQuery?
        
               | franciscop wrote:
               | Yes, and if you continue long enough you end up with one
               | of the many jQuery alternatives, like mine:
               | 
               | https://umbrellajs.com/
        
               | shadofx wrote:
               | Yes but only the parts you need, which means better
               | performance and job security.
        
           | azangru wrote:
           | jQuery was a useful abstraction when browsers had
           | inconsistent and clunky apis.
           | 
           | Modern browsers have apis that are about as convenient as
           | jQuery's, are standard across browsers, consistent with the
           | language, and guaranteed to outlive jQuery the library. Aside
           | from dot-chaining in a monadic sort of way, jQuery offers no
           | benefit to the developer, while costing about 30kB of
           | javascript.
        
             | parineum wrote:
             | > guaranteed to outlive jQuery the library
             | 
             | There's absolutely no reason to believe that considering
             | those APIs add new features independently of each other. A
             | library like jQuery can serve as an intermediary if browser
             | A implements new feature X that is possible in browser B
             | but through excessive (and slow) DOM manipulation.
             | 
             | jQuery can act as a bridge between the time browser A's
             | implementation and browser B's.
        
               | MrJohz wrote:
               | There's not much added to the browser that's particularly
               | independent (i.e browser A adds it with browser B having
               | no plan to implement it at all), and when there are APIs
               | that are perhaps newer and not widespread yet, it's
               | usually easier to pull in a specific polyfill (or
               | ponyfill) for that specific feature, rather than rely on
               | one library that's trying to cover everything. Especially
               | as those libraries tend to mimic the API as it is
               | expected to be standardised, rather than implementing a
               | distinct API as jQuery does.
               | 
               | In practice, I'd much rather use the native APIs to do
               | things in the browser than a wrapper library, because I
               | find abstraction from these wrappers tends to get in the
               | way as often as it helps. With modern JavaScript (for-of,
               | the spread operator, far more array functions), it's
               | usually only one or two lines more code to do things the
               | native way, and I find it saves me a lot of complexity
               | down the line.
        
               | gkbrk wrote:
               | > There's not much added to the browser that's
               | particularly independent (i.e browser A adds it with
               | browser B having no plan to implement it at all)
               | 
               | You haven't seen the privacy nightmare APIs Google is
               | trying to push on web "standards"? The only other two
               | browsers, Firefox and Safari, are not going to implement
               | most of them in the foreseeable future.
        
       | mg wrote:
       | Javascript has become so nice, now that browsers support modules.
       | 
       | I use a module "dqs.js" for all my query needs. It contains only
       | these two lines:                   export const dqs  =
       | document.querySelector.bind(document);         export const dqsA
       | = document.querySelectorAll.bind(document);
       | 
       | And use it like this:                   import { dqsA } from
       | 'lib/dqs.js';              for (const rabbit of dqsA('#rabbits
       | .green')) {             ... do something with all green rabbits
       | ...         }
        
         | joeframbach wrote:
         | I add the parent element to mine                   const $ =
         | (selector, parent = document) =>
         | parent.querySelector(selector);         const $$ = (selector,
         | parent = document) => parent.querySelectorAll(selector);
        
           | abdusco wrote:
           | This is the way. In addition to `$` and `$$`, I usually have
           | `$h` for creating elements:                   /**          *
           | @param {string} name          * @param
           | {HTMLElement.prototype} props          * @param
           | {Array<HTMLElement|string>} children          * @return
           | HTMLElement          */         function $h(name = 'div',
           | props = {}, children = []) {             const el =
           | document.createElement(name);             Object.assign(el,
           | props);             el.append(...children);
           | return el;         }
        
         | err4nt wrote:
         | There is .forEach() on NodeLists, so you can do stuff like this
         | in every browser, no lib, no helper functions needed:
         | document.querySelectorAll('a').forEach(tag => {           //
         | operate on tag         })
        
           | dhritzkiv wrote:
           | alternatively, if you need to use anything other than
           | `forEach` for working on the list, you can turn the NodeList
           | into an array using the array spread syntax (equivalent to
           | using Array.from) e.g.
           | [...document.querySelectorAll('a')]       .filter(node =>
           | node.getAttribute("data-foo") === "bar")
        
             | megous wrote:
             | Not everyone wants to be so wasteful.
        
               | dhritzkiv wrote:
               | what do you mean by "wasteful"?
        
               | megous wrote:
               | Creating an array, populating it with however many
               | elements just to be able to call some methods and
               | destroying it immediately afterwards. And doing it all
               | over the app, just because it's syntactically convenient.
               | (all while you already have an iterable collection in the
               | form of NodeList)
        
               | hombre_fatal wrote:
               | It is a bit weird to consume an iterator into an array
               | when a NodeList is already iterable.
               | 
               | Not sure why it caught on.
        
               | megous wrote:
               | I see it a lot with other iterables, too. People may like
               | one liners and functional style more than a procedural
               | `for (of)` construct, so they use
               | `[...iterable].any_array_function(...)` everywhere,
               | except when foced not to by async code :).
               | 
               | Might also have something to do with Redux and immutable
               | patterns. (the use of spread operator in general)
        
           | d1sxeyes wrote:
           | I think it's just for brevity, rather than because a helper
           | is _needed_. OP listed the entire source code of their module
           | in their comment.
        
             | moffkalast wrote:
             | Brevity is cool, but that's kind of like naming all your
             | variables one letter chars for brevity.
             | 
             | This is something every web dev will instantly know what it
             | does:                   document.querySelectorAll('#rabbit
             | .green').forEach(tag => {                    })
             | 
             | Whereas this is something nobody knows what the fuck it is
             | because it's completely non-standard.                   for
             | (const rabbit of dqsA('#rabbits .green')) {              }
             | 
             | And get what, 10 characters less in one row? Basically
             | nothing.
        
               | hombre_fatal wrote:
               | for/of vs .forEach isn't the issue here. Frankly I almost
               | always use for/of because it's implemented for all
               | iterators and I prefer being outside of a function (e.g.
               | I can use await).
               | 
               | All they did was alias `dqsA`. If anything, it's the fn
               | name that could be better.
        
           | gfody wrote:
           | how's browser support for something like
           | "a:has(img[src$='.gif'])" though?
        
             | err4nt wrote:
             | For more advanced queries than standard CSS selectors
             | provide, XPath is also supported by every browser and
             | available via document.evaluate() (which is not eval() by
             | the way)
             | 
             | https://developer.mozilla.org/en-
             | US/docs/Web/XPath/Introduct...
        
             | zeven7 wrote:
             | You probably shouldn't be making that query, unless you're
             | doing something specific like web scraping and don't have
             | control over the content of the site.
        
               | cptskippy wrote:
               | That's always been the blessing and curse with JQuery. It
               | allows you to easily filter objects but it doesn't
               | encourage efficiency.
               | 
               | A lot of people don't have control over the content of
               | their site in enterprise situations. If you're stuck
               | using an old framework or CMS you could be beholden to
               | someone else. And at the same time there's a lot of devs
               | who dgaf and just ship what works.
        
               | gfody wrote:
               | you could be using it already w/jquery though and if you
               | just switched to the native selector it would stop
               | working everywhere but safari.
               | 
               | "#some_combo:has(option:selected[value=..]) + .." seems
               | like a reasonable way to conditionally target something
               | to me, is it terribly worse than some other way?
        
               | zeven7 wrote:
               | > is it terribly worse than some other way?
               | 
               | Yeah, it's fragile and will easily lead to bugs when
               | someone changes the markup without realizing it's going
               | to break some crazy selector in another part of the code.
               | 
               | It would make a lot more sense to just add a class to the
               | element you're trying to select.
        
               | gfody wrote:
               | it's a conditional select, you're saying just add code to
               | add/remove a class to the target - of course, but that
               | defeats the point of wanting a conditional selector in
               | the first place
        
               | zeven7 wrote:
               | The point of selecting an element is to do something with
               | it. How does selecting it by class defeat the point?
               | 
               | Look, if you need this for some one off thing and you've
               | determined it's the best way to do it in this special
               | case, it's not hard to create a function that will find
               | the element you want.
               | 
               | It's not a good argument for using jQuery IMO, because if
               | you're doing this regularly there's probably a better way
               | to do it.
               | 
               | But coming soon(tm) you will be able to do even this with
               | `document.querySelector`.
               | 
               | Edit: I didn't pay close attention to your second
               | example. I was speaking mostly related to the a:has
               | example before. Your second example seems to be something
               | that would be desired more in CSS than JS, and I don't
               | think it's unreasonable to do that in CSS. If you need to
               | do it in JS you can workaround browser limitations just
               | fine by writing more than one line of code to do the
               | selection and test the condition.
        
             | easrng wrote:
             | :has doesn't exist but you can do
             | [].map.call(document.querySelectorAll("a
             | img[src$='.gif']"), (e)=>e.closest("a")).filter(e=>e)
        
               | robertoandred wrote:
               | :has certainly does exist, but only in Safari. Hopefully
               | Chrome and Firefox will catch up soon.
        
       | SemanticStrengh wrote:
       | The bashing of jQuery comes from junior devs. Of course a VDOM is
       | clearer, more productive (and less performant) however most
       | webapps with a minimum of logic have many legitimate uses of
       | native dom/jquery _in addition_ to the VDOM. And the interaction
       | is perfectly safe as long as you do native DOM in the right
       | lifecycle method (mounted). jQuery is a pleasure to use and give
       | us a lot of power /expressivity. More generally this vague of
       | juniors devs (e.g. CSS-in-JS lobby) are becoming less and less
       | familiar with the concept of CSS/DOM selectors, despite their
       | awesomeness and uniformity both for DOM operations, styling
       | operations and integration tests operations (cypress) BTW a
       | little known fact is that jQuery is not just sugar and cross-
       | browser consistentcy, in fact it push the boundaries of what is
       | possible vs native CSS, see e.g. the reverse direction paradigm
       | shift of https://api.jquery.com/has-selector/ Although its true
       | that augmenting jQuery with a batcher for performance doesn't
       | seems currently possible? https://github.com/wilsonpage/fastdom
        
         | zinekeller wrote:
         | I do think that your complaint, while applicable to a lot of
         | websites, is not specifically applicable to GOV.UK. They do
         | everything to use plain HTML (and if possible no Javascript at
         | all, but there are certain pages where Javascript is an
         | absolute must like interactive maps), and they aren't using
         | React but instead a special framework that is designed to
         | minimise Javascript even to novice developers. Basically
         | they've replaced jQuery with plain Javascript since that some
         | older devices they're supporting (which jQuery is a better
         | solution as it's bug-tested and optimised as much as possible)
         | is dead.
        
         | [deleted]
        
         | capableweb wrote:
         | Not sure you read the submission, but the move away from jQuery
         | was not to move to anything "virtual DOM"/React/similar but
         | rather that the functions provided by jQuery now have
         | vanilla/"native" alternatives.
        
           | SemanticStrengh wrote:
           | /username checks out :)
        
         | hinkley wrote:
         | The main value I found with jQuery was that the more your CSS
         | selectors and jQuery selectors diverged, the more it felt like
         | you were doing the same work twice.
         | 
         | Now I'm curious what the CSS looks like for devs who have only
         | ever known VDOM frameworks. Regular CSS can be pretty bad,
         | particularly on a mature project. Are we talking dumpster fire
         | or three ring circus here?
        
           | SemanticStrengh wrote:
           | I think the css quality of newer projects has significantly
           | regressed.
        
             | hinkley wrote:
             | When jQuery was in its prime, stubbornella was a fixture of
             | youtube playlists. One of the feathers in her cap was
             | cutting yahoo's CSS in half, which resonated with a lot of
             | us. CSS has been problematic for a long time.
             | 
             | I used to hate code generators because the code quality was
             | always so bad that if a midlevel or senior dev was writing
             | code like that I'd be talking to our manager about firing
             | them, and for a junior dev we'd be talking about more
             | intensive mentoring or even a PIP.
             | 
             | Once Sass introduced SCSS, that was the first code
             | generator I ever met that actually impressed me, and Less
             | is very close. The default CSS out of it looked very much
             | like the sort of CSS you would expect from a project after
             | someone had already gone through and cleaned up all of the
             | cliched failure modes for medium sized projects. It felt
             | like having a fast forward button. Still one of the fastest
             | 'sells' for me, and I do quite a lot of technology
             | selection for projects.
             | 
             | Not that it's perfect. Poorly written mixins/functions can
             | generate way more CSS per call than is necessary, and I
             | have a team of overbooked people that I need to sell on
             | prioritizing fixing this sort of thing and I just can't
             | find the bandwidth because there are always 2 more pressing
             | issues I need to talk to them about. I can't squeeze blood
             | from stone, and I can only ask for personal favors about as
             | frequently as I can grant them, modulo any turnover - which
             | has become a problem. Turns out if I take a shine to you,
             | you're also really easy to hire somewhere else.
        
       | kriz9 wrote:
       | Most developers don't seem to understand that jQuery was not just
       | a wrapper for browser compatability. Yes, we do have all that
       | nice functionality in a modern browser nowadays but compared to
       | jQuery it just not as elegant. jQuery still has a place.
        
         | paco3346 wrote:
         | And that place is? Not saying I disagree, this just feels like
         | an incomplete thought.
        
           | kriz9 wrote:
           | You are correct sir. I was trying to keep myself going on a
           | rant. I think if you want to avoid large frameworks/build
           | pipelines and the ugly mess that Web APIs are then jQuery
           | fits perfectly. I have tried and failed many times writing
           | vanilla JS for some smaller projects but always end up over
           | budget and with code ending up looking like a worse version
           | of jQuery. Only if you have large enough visitor count and
           | team then using vanilla API makes practical sense because you
           | might save couple GBs of web traffic and that is nice to see.
        
       | ChrisArchitect wrote:
       | Right, to be clear this isn't breaking news but a blog post about
       | a story from March
       | 
       | https://news.ycombinator.com/item?id=30868760
        
       | muglug wrote:
       | The gains aren't massive -- certainly not something any human
       | using the site would notice (about 20ms faster to render pages
       | for the average mobile phone user).
       | 
       | Still good to remove unncessary dependencies, though.
        
         | Cthulhu_ wrote:
         | Not on an individual scale, no, but when you consider the
         | millions of visits and views they get per year it adds up from
         | a global / zoomed out point of view.
         | 
         | I'm sure with some math you can make a calculation on how much
         | bandwidth and energy was saved with this One Clever Trick.
        
           | SemanticStrengh wrote:
           | They are missing on a lot of expert backed Jquery
           | optimizations e.g.
           | https://github.com/jquery/jquery/issues/3143
        
             | londons_explore wrote:
             | They'd be even better to just use the browsers CSS
             | animation support...
             | 
             | gov.uk doesn't have many animations anyway.
        
           | londons_explore wrote:
           | A government is the perfect place to look at this "zoomed
           | out" view.
           | 
           | Your citizens an average rate of pay of Y per year. Some of
           | time they save by getting stuff done on a government website
           | will be put into getting more economic work done. If the
           | citizens do 10 billion pageviews of gov.uk per year, and you
           | shave off 20ms, thats 27 human-years of work per year. So it
           | is certainly worth making this optimization, even if it takes
           | a few people a few _months_ to figure out how to remove
           | jquery.
        
       | legitster wrote:
       | I love jQuery like I love a roll of duct tape. I'll use it for
       | anything and everything but I also don't mind if a commercial jet
       | would not like to showcase it.
        
       | chiefalchemist wrote:
       | It's a tool. If you need a hammer but use a screwdriver, then
       | that's a problem.
       | 
       | jQuery made animation and such easy to do. But now we have CSS
       | for that.
       | 
       | There's no value in chest pounding and proclaiming "Tool X is
       | stupid. No one should use Tool X." Given the diversity of the
       | internet, it's naive to believe you understand every possible use
       | case. Just let it go already.
        
       | exabrial wrote:
       | I've noticed this a trend lately. Why does everyone suddenly hate
       | jQuery?
       | 
       | Instead, I've noticed everyone re-inventing the wheel. Take
       | Bootstrap5, which "eliminated jquery and we wrote our own!" but
       | now, it is much much larger. Then your next framework does the
       | same, and so on, now we're downloading 1mb of javascript files
       | just to display grandma's 160 byte tweet.
        
         | Waterluvian wrote:
         | Nobody "hates" jQuery. Code and libraries are a liability. All
         | people care about is getting their job done and going home.
         | 
         | This "trend" has been like 5+ years in the making. And it's
         | simply a result of jQuery becoming less necessary as core
         | JavaScript in the browser gains features.
        
         | tdy_err wrote:
         | One particular reason is that it can be hard to avoid or get
         | rid of, if you are using third party UI modules- even "modern"
         | ones, intended for use in a framework like Angular, might use
         | jQuery as a dependency.
         | 
         | This is also problematic if your project has a dependency tree
         | that needs multiple (incompatible) versions of jQuery.
        
       | spicybright wrote:
       | Eh. Everyone hates on jQuery, but for most informational sites
       | that's really all you need for basic interaction.
       | 
       | Speed really isn't bad, and it's so straightforward that it's
       | hard to mis-use at this point.
       | 
       | I seem to have way more issues with newer frameworks/SPA if I'm
       | not using chrome with no extensions.
       | 
       | Makes me nervous dealing with important stuff like banking or
       | government sites.
        
         | jaywalk wrote:
         | For basic interaction, you don't need anything but vanilla JS.
         | Browsers have come a long way since the days where jQuery was
         | almost necessary to deal with all of the minor differences/bugs
         | in various browsers.
        
           | criddell wrote:
           | You can do quite a bit without Javascript too. A lot of
           | websites don't need much more than simple menus.
           | 
           | Steve Gibson's site is an example:
           | 
           | https://www.grc.com/default.htm
        
           | andybak wrote:
           | It's a much nicer syntax and has a ton of useful helpers.
           | 
           | Vanilla js for similar things just looks like someone has
           | waved the ugly stick at it.
           | 
           | There are sound arguments against jQuery but the "you can
           | just use vanilla" is the least convincing.
        
             | jaywalk wrote:
             | Not having to load yet another JS library on your page if
             | you don't really need it is a pretty good argument, I'd
             | say.
        
               | andybak wrote:
               | Yes. You'll note that I already anticipated that in my
               | original point. I was very specific in how I worded it
               | for good reason.
        
               | dgb23 wrote:
               | To add: jQuery is a pretty huge library for what it does.
               | Talking both bundle size and execution speed. Not that
               | the latter is noticeable for most cases, but it's still a
               | cost. The question is: What for?
               | 
               | The primary use case for it has been cross browser
               | compatibility plus a bit of sugar. The former is _gone_
               | and the latter is easily replaced with a few lines of JS.
               | Then there is an ecosystem of libraries and components
               | around it. Many of them have ditched jQuery or have
               | provided an API that doesn't require it.
        
               | rtpg wrote:
               | 30kb minified and gzipped! Less than most hero images.
               | It's a nice API for simple stuff.
               | 
               | I think if you strip out the AJAX support it can get
               | extremely tiny.
        
               | Rumudiez wrote:
               | 30kb gzipped is still 10x larger than Preact for
               | reference
        
               | SemanticStrengh wrote:
               | that doesn't make it an issue in any way, it's not a
               | numbers competition unless you have a 56K
        
               | Smaug123 wrote:
               | One of the explicit goals of gov.uk is to be maximally
               | accessible, and that includes for people accessing the
               | Internet on a potato or who have a metered connection.
        
               | dgb23 wrote:
               | It adds tens of milliseconds to just downloading on a
               | fast connection, plus it has to be parsed before what
               | ever you need it to do will be functional.
               | 
               | To compare, just roughly:
               | 
               | For roughly the same size you can get
               | declarative/reactive rendering with React, or an
               | optimized FP standard library with ClojureScript, or data
               | driven visualizations with d3 (roughly 2x the size).
               | 
               | For a tenth of the size you can get stuff like htmx, or a
               | json validation library (avj), or like someone said
               | Preact (React alternative).
               | 
               | But for jQuery, you're paying that for basically nothing
               | the browser APIs don't already provide. It was a godsend
               | 10y ago, but with legacy browsers finally fading out, the
               | last one being ie11, you really don't _need_ it anymore.
        
               | lowwave wrote:
               | or use https://axios-http.com/ for ajax stuff
        
               | mejutoco wrote:
               | This is not the case anymore but I remember when Angular
               | was including a version of jQuery, and having methods
               | like "doSthAsInJquery" (paraphrasing) in Angular, and I
               | could still hear everyday that Angular didn't have the
               | overhead of including jQuery.
               | 
               | I wish we could have standardized in the Linq-like API of
               | jQuery.
        
               | sofixa wrote:
               | OP's argument is that jQuery is all you need for basic
               | use cases, so that'd be the only JS library loaded.
        
               | kijin wrote:
               | Except we've become so used to loading multiple megabytes
               | of JS even on a simple blog post, that a 30KB library
               | probably won't make a noticeable difference. Insofar as
               | file size is concerned, I'd much rather pull in jQuery
               | than some random npm package that depends on god-knows-
               | how-many other random packages.
               | 
               | Even GOV.UK, an incredibly lean website by today's
               | standards, only noticed a 10% difference in their
               | benchmarks.
        
               | Deukhoofd wrote:
               | A 10% performance gain is quite a big deal, I wouldn't
               | just shove it under the table like that.
        
               | Dudeman112 wrote:
               | Like every % comparison, it depends on the baseline.
               | 
               | Cue all the people going on about big O for parts of the
               | code that are indistinguishable from noise in actual
               | benchmarks.
        
           | [deleted]
        
           | spicybright wrote:
           | I'll admit I'm a bit out of practice with the state of
           | vanilla JS, but it seems like you'll be re-inventing the
           | wheel for simple stuff.
           | 
           | Like a collapsible section that's lightly animated.
           | 
           | I worry too about people not considering accessibility.
           | 
           | A lot of my bugs day to day is not being able to tab into
           | things like hover menus or being able to activate buttons
           | because someone forgot to consider correct event callbacks.
           | 
           | Maybe it's different now, but using a jQuery makes it more
           | likely the code will cover cases like that.
        
             | Cthulhu_ wrote:
             | In 2020, a collapsible section is a matter of adding /
             | removing a classname and a CSS animation; there's a few
             | ways to do so, using jQuery is one, but you don't need
             | thousands of lines of a JS library (network bandwidth + JS
             | interpretation) to achieve that.
        
               | have_faith wrote:
               | Can CSS transitions and animations handle animating to
               | auto height/widths yet?
        
               | d1sxeyes wrote:
               | I don't think so. One trick I've used to good effect is
               | setting an high max-height, then translating by 100% and
               | removing pointer events.
        
               | flatcakes wrote:
               | I feel like this solution feels subtly "wrong" if you're
               | animating, because that high max height will be
               | arbitrarily far away from where you'd normally want to
               | animate to. Doubly so for easing out.
        
               | d1sxeyes wrote:
               | Yeah it's a bit weird, but haven't found a better trick
               | yet.
        
             | chipsa wrote:
             | Collapsible section? https://developer.mozilla.org/en-
             | US/docs/Web/HTML/Element/de...
             | 
             | There's some CSS transition stuff you can add to that to
             | make it lightly animated: https://css-tricks.com/how-to-
             | animate-the-details-element/
             | 
             | Yeah, jQuery might make some things easier, but when
             | possible, using native HTML elements makes things even
             | easier,
        
               | nhinck wrote:
               | Hmm, I would agree that you can do 95%+ of stuff jQuery
               | used to be used for in vanilla js or html/css in a nicer
               | way but animated collapsible divs still require a stupid
               | amount of js to achieve.
        
               | [deleted]
        
               | iCarrot wrote:
               | Animated collapsible div can be done with 0 line of JS.
               | 
               | https://code-boxx.com/expand-collapse-div-css-only/
        
             | onion2k wrote:
             | _I worry too about people not considering accessibility._
             | 
             | This isn't a complaint you can level at the gov.uk team.
             | They're _obsessed_ with accessibility. Gov.uk is probably
             | the best example of a well-designed, well-built, completely
             | accessible website on the whole internet.
        
               | spicybright wrote:
               | I meant more for anyone building a website.
        
               | psnehanshu wrote:
               | Whilst *.GOV.IN (India) is the worst.
        
             | pacaro wrote:
             | You bring up some interesting concerns. It's a good example
             | of why there isn't a one size fits all answer. The UK gov
             | site has high standards for these kind of things so will do
             | it right anyway, but for a small shop leaning on a
             | framework makes a lot of sense
        
             | mitchdoogle wrote:
             | If you've been using jQuery for years, know it, and can
             | write a good amount of code without looking at a reference,
             | then by all means, keep using it. It's not going anywhere
             | anytime soon.
        
           | seydor wrote:
           | i see a lot of                  const $ =
           | document.querySelector.bind(document);
        
           | jenscow wrote:
           | Right. However, jQuery isn't just for cross-browser.
           | 
           | It provides a clean API for manipulating the DOM, as this
           | site demonstrates (which is ironic):
           | https://youmightnotneedjquery.com/
           | 
           | Personally, for simple sites, I aim for vanilla JS but use
           | jQuery (cash, actually) where it makes sense - such as
           | working on collections of elements.
        
             | SemanticStrengh wrote:
             | for real its superior ergonomy is painfully obvious
        
         | duxup wrote:
         | I will always think fondly of jQuery. It did a great job for
         | what it was intended, saved a lot of time. jQuery's time has
         | passed, and that's ok too.
        
         | [deleted]
        
         | philliphaydon wrote:
         | I loved jquery back in the day. It made web development
         | bearable in a time when it was a clusterfuck.
         | 
         | I think a lot of people owe a lot of thanks to jquery.
         | 
         | But in 2022 vanilla javascript is all you really need.
        
           | dsego wrote:
           | jQuery still offers a much nicer experience. The built-in dom
           | apis are neither very elegant nor ergonomic.
           | // jquery         $(selector).on('click', fn)
           | // vanilla js
           | document.querySelectorAll(selector).forEach(el =>
           | el.addEventListener('click', fn)         )
        
             | fleddr wrote:
             | Fully agree, and your example is still relatively simple.
             | Method chaining in jQuery allows for extremely expressive
             | one-liners that would require a huge amount of boilerplate
             | in vanilla JS.
        
             | louissan wrote:
             | or delegate...?
             | 
             | document.addEventListener('click', function(e){ var t =
             | e.target;                 if(t.closest('.foo') &&
             | t.nodeName.toLowerCase() === 'button'){
             | e.preventDefault();          // do stuff here       }
             | else if(t.closest('.bar') && t.nodeName.toLowerCase() ===
             | 'a' && t.classList.contains('here')){
             | e.preventDefault();          // do smth else here       }
             | 
             | }, false);
             | 
             | one listener to rule them all...?
             | 
             | elegant enough and once you get used to it...
             | 
             | .closest can be pollyfilled too..
        
             | Cthulhu_ wrote:
             | Is it worth adding the library (download size + script
             | parsing & execution) for that though?
             | 
             | At the very least there are some jQuery alternatives that
             | are modular, smaller, and have less backwards compatibility
             | like iirc zepto.
        
               | dageshi wrote:
               | Yup. Because the size of the library and the execution
               | time just isn't that big of a deal, it's something people
               | seem to obsess over but it doesn't really matter much.
        
             | bennyp101 wrote:
             | It takes 1min to write a wrapper around that, though.
             | 
             | Having said that, for the sake of 25kb - if you use more
             | than a handful of features you might as well just include
             | it.
        
               | mkoryak wrote:
               | That's the problem.
               | 
               | It takes only 1 minute to write a wrapper, so you will
               | write one, and I'll write one, and your dog will write
               | one.
        
               | tiborsaas wrote:
               | Then compare it with dog's and pick the simpler one :) I
               | don't know what's wrong with a utils.js file that only
               | has what you need in a way that fits your project
               | exactly. Woof.
        
               | DeathArrow wrote:
               | But writing that utils.js will end up rewriting jQuery.
        
               | tiborsaas wrote:
               | I've seen this argument a lot, but based on my experience
               | it will take ~5 small functions to get what I need and
               | how I need.
               | 
               | It's even easier if you copy paste from here:
               | https://anguscroll.com/just/
        
               | JJMcJ wrote:
               | If that is literally the only wrapper you need, sure go
               | ahead.
               | 
               | But most of the time, you find you need another wrapper,
               | and then another, and the next thing you know you have
               | most of jQuery, just not as uniform or as well tested.
               | 
               | I've seen this with database ORMs also.
        
           | muhehe wrote:
           | Web development is still a clusterfuck.
        
             | DeathArrow wrote:
             | I agree if you are talking about frontend. Backend is still
             | pleasant. And even frontend becomes bearable thanks to
             | HTMX.
        
         | phkahler wrote:
         | >> Eh. Everyone hates on jQuery, but for most informational
         | sites that's really all you need for basic interaction.
         | 
         | The point seems to be that you don't even need _that_ any more,
         | so just get rid of it. Not sure why people latch onto cruft so
         | much and defend its continued use.
         | 
         | On the performance side they cite 10 percent improvement, which
         | doesn't sound like much to a lot of people. But remember that
         | performance gains/regressions get compounded. Maybe there are 8
         | things that each eat 10 percent - you either start improving
         | _somewhere_ or you just refuse to even try. If I could improve
         | 10 percent while removing a dependency I 'd be all over that.
        
           | cies wrote:
           | > Not sure why people latch onto cruft so much and defend its
           | continued use.
           | 
           | A characteristic of communities with lots of people that do
           | not have a theoretical background. JS, PHP, jQuery, some
           | parts of Ruby/Python -- they defend it with their life, and I
           | argue it's because the rest of the world looks very scary to
           | them.
        
           | AdrianB1 wrote:
           | For AJAX, jQuery is still simpler than vanilla JS.
        
             | barbecue_sauce wrote:
             | Even fetch?
        
               | moreira wrote:
               | Definitely not Fetch. I don't believe anyone can argue
               | that Fetch is more complicated.
               | 
               | I think this really seems to stem from a "I'm only used
               | to jQuery, anything else is a big mental effort to learn
               | and I'd rather stick with what I know".
               | 
               | I get it. Vanilla JS, if you're not used to it, is scary.
               | But if you're advocating for jQuery "for simple
               | interactions", and assuming it's simpler than vanilla JS,
               | at some point you should ask yourself if you're just
               | letting your skills stagnate, and staying stuck in the
               | past. You owe it to yourself to update your skillset. If
               | you decide you still need jQuery (e.g. maybe you need a
               | plugin/library that requires jQuery), then fine. But at
               | least you'll be making an informed decision, not a FUD-
               | driven one.
        
               | epolanski wrote:
               | As someone kinda obsessed with handcrafting all of its
               | software without any dependency and is highly used to dom
               | operations, I can't but thing you're making it much more
               | of a deal than it is.
               | 
               | Handcrafting JavaScript applications without jQuery is
               | possible, the real question though is: is it convenient
               | if you like and find productive using jQuery? Here's a
               | fact: you can always remove jQuery later when the product
               | is mature and standards understood and there is time
               | budget for it.
        
               | easrng wrote:
               | I mean `await $.ajax("https://jquery.com/")` is shorter
               | than `await(await fetch("https://jquery.com/")).text()`
        
         | nojs wrote:
         | If you just want "basic interaction" without any framework
         | complexity, alpine.js is way better than jquery. It's extremely
         | simple and does the basic data binding stuff that jquery lacks.
        
       | nightski wrote:
       | I don't use jQuery any more but I do use lodash because I
       | appreciate that the methods are built to handle nulls. Methods
       | like .forEach in the browser were for some odd reason chosen to
       | be instance methods so you always have to check for
       | null/undefined before calling them.
        
       | seydor wrote:
       | Pity
        
       | jcuenod wrote:
       | Everyone here seems to be talking about how great jQuery was for
       | DOM interaction and that's true. But the other thing that was
       | life changing about it was how easy it was to make ajax requests!
        
         | mindcrime wrote:
         | _But the other thing that was life changing about it was how
         | easy it was to make ajax requests!_
         | 
         | What's the "modern" alternative to jQuery in that regard? I
         | don't do much JS development, but if I needed to make an AJAX
         | request today, my first instinct would probably still be to use
         | jQuery.
        
           | osrec wrote:
           | Google the Fetch API.
        
             | psnehanshu wrote:
             | Fetch API is fine, but Axios[0] gives you a lot more
             | flexibility. The best thing I like is the request/response
             | interceptor. You can do cool stuff like injecting tokens
             | into outgoing requests, retry failed requests, centralized
             | error handling. Because of adapters, it works both in
             | browser environment as well as Node.js environment. Heck,
             | you can even mock requests in your unit tests using a mock
             | adapter[1] to avoid making actual HTTP requests. Sure there
             | is a cost for adding dependency when you can just use
             | native APIs, but in this case, I think it's worth it.
             | 
             | [0] https://axios-http.com/
             | 
             | [1] https://www.npmjs.com/package/axios-mock-adapter
        
             | mindcrime wrote:
             | Thanks!
        
           | [deleted]
        
           | ishjoh wrote:
           | fetch: https://developer.mozilla.org/en-US/docs/Web/API/fetch
        
       | err4nt wrote:
       | jQuery never did make the migration to being packaged/delivered
       | as a modern (i.e. post-2015) JavaScript module. This precludes it
       | from being used in a lot of modern JavaScript workflows.
       | 
       | No matter what the library itself provides, to use it you have to
       | go back to working like how developers in 2014 and before used to
       | work with JavaScript, so that's a very real consideration that
       | the "I still like to use jQuery" folks never mention. Are they
       | writing all of their code as pre-2015 'classic' JavasScript as
       | well?
        
       ___________________________________________________________________
       (page generated 2022-05-19 23:00 UTC)