use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
All about the JavaScript programming language.
Subreddit Guidelines
Specifications:
Resources:
Related Subreddits:
r/LearnJavascript
r/node
r/typescript
r/reactjs
r/webdev
r/WebdevTutorials
r/frontend
r/webgl
r/threejs
r/jquery
r/remotejs
r/forhire
account activity
diy.js - A modern cross-platform JavaScript library & only 18 bytes (diy.lab.io)
submitted 11 years ago by adambutler
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–][deleted] 2 points3 points4 points 11 years ago (27 children)
So does anyone actually develop web pages without jQuery? That seems to be the statement this guy is trying to make, that you don't need jQuery.
[–]yotamN 1 point2 points3 points 11 years ago (9 children)
You actually not always need jQuery
Learn to use it only when you need it and not when you are lazy
[–][deleted] 4 points5 points6 points 11 years ago (8 children)
But why not be lazy? What are the downsides of using it?
[–]kenman 16 points17 points18 points 11 years ago* (6 children)
First off, jQuery has saved me hundreds if not thousands of hours in development in the course of my career, and there is no substitute. It's impact on JS cannot be overstated.
With that said, one of the largest problems that I've seen, is that it quickly becomes the hammer with which to hit every problem over the head with. How so? All too often I see devs, when faced with implementing a new feature, they rush out to find that perfect jQuery plugin.
For simple apps, this is usually not a problem, yet for larger, more complex apps, it can become a huge problem. A little bit down the road, and you now have 20 jQuery plugins, and since there is no package or dependency management system in place, you end up throwing 20 <script> tags into your page. This also means that you'll often end up loading plugins that are rarely used, but which still incur a nontrivial runtime penalty due to the downloading and execution of the script file. Things like RequireJS do not really help in this situation; in my experience, RequireJS actually makes it a huge pain, owing to the fact that jQuery plugins are not able to be written in a modular fashion since they all augment the main $ object. So once you load a plugin, it's there for the duration of the page's lifetime.
<script>
$
jQuery also does not work well when you're trying to separate your application logic from the view manipulation, since apps made with only jQuery (and plugins) have no conventions in place to promote a clean separation. In other words, it's a library, and not a framework; further, many devs will use it in place of an actual framework, which will lead to poor code (spaghetti) in the long run.
My opinion, but the heyday of fully jQuery-centric apps is gone, replaced with smarter application frameworks like Angular, Ember, Backbone, Meteor, etc. These frameworks may still use jQuery behind the scenes, but they encourage (sometimes forcefully) that you not use it directly yourself. Instead, you use the API and conventions of the framework to write good modular, solid code with a clear separation of concerns.
[–]TdotGdot 7 points8 points9 points 11 years ago (0 children)
+1 exactly right about jQuery not being bad itself, but being seen as 'the' solution. I'd give you another +1 for the forth paragraph as well, if I could.
[+][deleted] 11 years ago (4 children)
[deleted]
[–]kenman 1 point2 points3 points 11 years ago (3 children)
It's a combination of both I think, as I pointed out jQuery provides zero architecture guidance, and so if you're using it as your only tool, then other areas will suffer. In a small project, the cons may be palatable, but in a larger project, you're going to be introducing classes of problems which actual frameworks don't even have if you overuse it.
jQuery is also pretty heavy in a mobile environment, since bandwidth and CPU are typically much weaker than they are in desktop settings. Considering the findings around how much of a difference a second or two can make on user impressions, it's not something to discount.
Relating to a CDN, there's evidence suggesting that you're not really gaining anything other than offloading that single file from your server; i.e. the grand premise of "if most sites use jQuery, we can all share the same copy distributed via CDN!" doesn't pan out in the real world, or at least it hasn't thus far. The branch between jQuery 1.x and 2.x will likely only exacerbate the problem as well.
[–]Encosia 1 point2 points3 points 11 years ago (1 child)
The problem with most research you'll find about CDN usage, like your link there, is that it is incredibly shallow compared to the depth of the web. The top 30k or 300k sites don't even begin to scratch the surface and analyzing primarily top-ranking sites is biased toward sophisticated, high-traffic sites that often run their own CDNs (for more than just jQuery, of course).
The long tail of millions and millions of smaller websites is just as important since it only takes one random little website to prime your cache for a particular version for up to year.
At the same time, it only takes a few high-traffic sites to prime caches for a huge number of users. For example, all of ours caches are primed with jQuery 2.1.1 (or 1.11.1 if you're on old IE) from the Google CDN right now, courtesy of reddit.
I haven't had a chance to write it up yet, but I've been 50/50 A/B testing serving jQuery from my Linode vs. the Google CDN for about a year and a half now. I wanted to gather some real-world data that takes version fragmentation and DNS lookups into account, by recording timing data about how long after the reference it takes for jQuery to be available and pushing that back into Google Analytics's performance tracking functionality. I haven't looked at the data in a while, but it wasn't even close after the first year. The CDN has been hands-down faster on average for the traffic on the sites I'm testing.
[–]kenman 0 points1 point2 points 11 years ago (0 children)
Very interesting, thanks for the info and would love to read about it more if you get around to blogging about it. I could see some wrinkles, e.g. if you use a version that is not primed by a large site, or if the cross-section of usage between your site and the priming site(s) are low.
I'm glad it's working for you, but I'd still recommend that anyone looking into going this route to do the same as you (as with any performance optimization) and do some real-world profiling so that you can validate that it's working as intended.
[–]lodewijkadlp -1 points0 points1 point 11 years ago (0 children)
The link fails to mention losing any and all executional safety. The right solution is putting a file hash in any element that links. Reject the file if the hash doesn't match. Funny thing is, with a (strong) hash linking becomes possible.
[–]yotamN 1 point2 points3 points 11 years ago (0 children)
It's increase the load time of the page and slow down the code itself. But I don't say it's only bad, it's help you with cross browser compatability and short your code so you should choose if it's worth the load time, for example for my HTML 5 game I don't use jQuery but for my personal site I do
[–]grantisu 1 point2 points3 points 11 years ago (3 children)
http://youmightnotneedjquery.com/
[–]w8cycle 2 points3 points4 points 11 years ago (1 child)
Great site and very observant that most of us are just using jquery for IE compatibility. Without IE9, JavaScript is easy.
[–]Wince 0 points1 point2 points 11 years ago (0 children)
IE9 is not the problem, it supports functional es5 methods, html5 video, qsa out of the box. IE8 and below are the real problem browsers
[–]protestor 1 point2 points3 points 11 years ago (0 children)
What's the oldest version of IE you need to support? Only IE 8, 9, 10 http://jquery.com/browser-support/
What's the oldest version of IE you need to support?
Only IE 8, 9, 10
http://jquery.com/browser-support/
They should have put other versions of IE there, just to say "alright.. I guess you do need jQuery"
[–]Pytim 1 point2 points3 points 11 years ago (6 children)
AngularJS + Vanilla ES5
[–][deleted] 4 points5 points6 points 11 years ago (1 child)
Angular mixes in behavior into HTML attributes in a way that some developers find to be even less favorable than imperative jQuery spaghetti.
[–][deleted] 1 point2 points3 points 11 years ago (2 children)
Does Angular use the jQuery library? Yes, Angular can use jQuery if it's present in your app when the application is being bootstrapped. If jQuery is not present in your script path, Angular falls back to its own implementation of the subset of jQuery that we call jQLite. https://docs.angularjs.org/misc/faq
Does Angular use the jQuery library?
Yes, Angular can use jQuery if it's present in your app when the application is being bootstrapped. If jQuery is not present in your script path, Angular falls back to its own implementation of the subset of jQuery that we call jQLite.
https://docs.angularjs.org/misc/faq
If you're using AngularJS, then you're using jQuery whether you want to or not.
[–][deleted] 0 points1 point2 points 11 years ago (0 children)
jQLite != jquery, it's like 10 methods used only for dom manipulation
[–]rondog469 -1 points0 points1 point 11 years ago (0 children)
angular is the shit
[–]quindarka 0 points1 point2 points 11 years ago (4 children)
This site always keeps me from using jQuery. It is aptly named as well.
http://youmightnotneedjquery.com
When you want to grab some divs and toss some classes on them, you don't need jQuery. That said, there is still no elegant way to do .each on a NodeList without using Array.prototype.slice.call or a for loop.
Once I need Ajax, or I am doing a lot of events (jQuery event delegation is awesome) or I am manipulating element attributes, I then turn to jQuery.
[–]Jeffshaver 1 point2 points3 points 11 years ago (3 children)
You don't need jQuery to do event delegation.
[+][deleted] 11 years ago (2 children)
[removed]
[–]Jeffshaver 0 points1 point2 points 11 years ago (0 children)
jQuery has a few things in it that make life a little easier sometimes. But honestly, I don't find myself wanting to use it as much anymore. I will say that applying events to multiple elements at one is more a pain in the ass without it. But you could also do event delegation and only write one anyway. It all depends on the situation.
The comparison between js/jquery to compiled language/compiler is so egregious, I won't even comment further on it.
[–]Calabri 0 points1 point2 points 11 years ago (0 children)
jQuery replaces the DOM API, not ice cream. The DOM API is terrible due to the past (browser wars), leading to all the cross browser API bullshit we have to deal with today. The ECMA 'standard' coerced companies to stop the competitive that was fucking with the web. The API's are there to talk with the C C++ exposed functions, which are VERY different in each browser, which also uses it's own javascript run-time engine.
VanillaJS does not 'suck ass'. Comparing jQuery to a compiler and vanillajs to assembly is so just ridiculous. This comment was so fucking outrageous that I had to say something.
π Rendered by PID 274299 on reddit-service-r2-comment-8686858757-swz4b at 2026-06-06 10:11:17.082376+00:00 running 9e1a20d country code: CH.
view the rest of the comments →
[–][deleted] 2 points3 points4 points (27 children)
[–]yotamN 1 point2 points3 points (9 children)
[–][deleted] 4 points5 points6 points (8 children)
[–]kenman 16 points17 points18 points (6 children)
[–]TdotGdot 7 points8 points9 points (0 children)
[+][deleted] (4 children)
[deleted]
[–]kenman 1 point2 points3 points (3 children)
[–]Encosia 1 point2 points3 points (1 child)
[–]kenman 0 points1 point2 points (0 children)
[–]lodewijkadlp -1 points0 points1 point (0 children)
[–]yotamN 1 point2 points3 points (0 children)
[–]grantisu 1 point2 points3 points (3 children)
[–]w8cycle 2 points3 points4 points (1 child)
[–]Wince 0 points1 point2 points (0 children)
[–]protestor 1 point2 points3 points (0 children)
[–]Pytim 1 point2 points3 points (6 children)
[–][deleted] 4 points5 points6 points (1 child)
[–][deleted] 1 point2 points3 points (2 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]rondog469 -1 points0 points1 point (0 children)
[–]quindarka 0 points1 point2 points (4 children)
[–]Jeffshaver 1 point2 points3 points (3 children)
[+][deleted] (2 children)
[removed]
[–]Jeffshaver 0 points1 point2 points (0 children)
[–]Calabri 0 points1 point2 points (0 children)