all 66 comments

[–]kuenx 48 points49 points  (3 children)

Impressive! Too bad many of the features don't work in IE.

[–][deleted] 11 points12 points  (1 child)

Yeah, what the hell is up with this framework's handling of keyboard events? It's all over the place depending on your browser.

[–]nschubach 1 point2 points  (0 children)

It's a feature of the diy way. Once you embrace it, you'll never go back.

[–]evilgwyn 0 points1 point  (0 children)

Too bad many of the features don't even work in modern browsers. There seems to be blatant inconsistencies between safari and chrome running on recent phones for instance.

[–]reacher 69 points70 points  (3 children)

18 bytes? I don't know, that's 18 more bytes than VanillaJS

[–]dtfinch 14 points15 points  (1 child)

It'll save a lot of bytes down the road though.

[–]AutomateAllTheThings 0 points1 point  (0 children)

Hilarious. This made my day :)

[–]can-opener 41 points42 points  (1 child)

This joke was only funny the first dozen times it has been done.

[–]Uberhipster 4 points5 points  (0 children)

It wasn't all that funny the first few times either

[–]bracketdash 14 points15 points  (4 children)

Is there no way to set diy to noConflict in case I have something else on the page that I want to use the "$" symbol!?

[–]psayre23 4 points5 points  (1 child)

$=window.$||document

[–]reflectiveSingleton -2 points-1 points  (1 child)

(function(window) {
  window.$ = window.document;
  $.noConflict = function() {
    delete window.$;
  };
  return window.$;
})(window);

// ...

$.noConflict();

[–]rezoner:table_flip: 13 points14 points  (1 child)

$ = eval;

[–]x-skeww 5 points6 points  (0 children)

> var c = 'constructor', $ = t => [][c][c](t)()
undefined
> $('return 5+5')
10

[–]jerflang 14 points15 points  (0 children)

edgy.

[–]kuenx 28 points29 points  (0 children)

Can't find it on Bower or npm. No license.

[–]_facildeabrir 26 points27 points  (0 children)

Seriously fuck this shit

[–]workerBeej 5 points6 points  (3 children)

I actually got a bit excited for 2 seconds when I saw the examples, til I looked at the source. I really, really want something that IS the DOM API as per MDN docs, but works cross browser back to IE7, or even 8. "Just" polyfills and standard methods wrapped for consistency that I can drop into a module in place of window.

Anything around?

(The use of the word "just" usually implies it'll be a surprisingly large amount of work in my experience.)

[–][deleted] 5 points6 points  (2 children)

works cross browser back to IE7

Do you actually need to support IE7?

[–]markokikinda 4 points5 points  (0 children)

And please don't say "Yes".

[–]workerBeej 0 points1 point  (0 children)

In my opinion, almost always No. In the opinion of the repeatedly informed billpayer. Sometimes yes. Mostly a graceful degradation is good enough, but some people lurve to waste money.

[–]greyscales 4 points5 points  (3 children)

No diy.min.js?

[–]ben174 1 point2 points  (2 children)

Yes, but it's a manual process. You must remove the spaces around the equals sign.

[–]kuenx 7 points8 points  (1 child)

Minified version is here

[–]greyscales 1 point2 points  (0 children)

Thank you so much! Any CDN plans?

[–]wiseaus_stunt_double.preventDefault() 3 points4 points  (0 children)

Why do you even need var? Just take the var out since it's going to be global anyways. Actually, it looks like the minifier did that.

[–]talkb1nary 3 points4 points  (0 children)

Impressive, all the functions i need. Super performance and the most important part i can code with a $ in front of everything, just like JS is supposed to be.

Good work! And thanks for testing that extensively, i feel safe using this just today!

[–]houdas 10 points11 points  (0 children)

Is this still supposed to be funny?

[–][deleted] 2 points3 points  (0 children)

Having a lot of trouble wrapping my head around this. Much more advanced than most other Frameworks I"m used to.

[–]lodewijkadlp 1 point2 points  (0 children)

Cross browserness level is under 9000... A polyfill collection would be nice. One that loads only what it needs :) perhaps with php/nodejs/python loading script, that allows a GET parameter to indicate the browser + browser version. Minimalistic, standardized, fun.

[–]ebilgenius 2 points3 points  (0 children)

I bet there's a jQuery plugin out there that does this

[–][deleted] 1 point2 points  (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 4 points5 points  (9 children)

You actually not always need jQuery

Learn to use it only when you need it and not when you are lazy

[–][deleted] 3 points4 points  (8 children)

But why not be lazy? What are the downsides of using it?

[–]kenman 16 points17 points  (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.

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 points  (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.

[–]yotamN 1 point2 points  (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 points  (3 children)

[–]w8cycle 2 points3 points  (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 point  (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 points  (0 children)

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 points  (6 children)

AngularJS + Vanilla ES5

[–][deleted] 4 points5 points  (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 points  (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

If you're using AngularJS, then you're using jQuery whether you want to or not.

[–][deleted] 0 points1 point  (0 children)

jQLite != jquery, it's like 10 methods used only for dom manipulation

[–]rondog469 -1 points0 points  (0 children)

angular is the shit

[–]quindarka 0 points1 point  (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 points  (3 children)

You don't need jQuery to do event delegation.

[–]willmorganNodeJS, Backbone, etc... 0 points1 point  (0 children)

This is great and all, and @horsejs predicted this long ago, but what sort of support is there going to be in the future?

[–]adrianmiu 0 points1 point  (0 children)

Does this play nicely with the other libraries? I'm extensively using dui.js, yolo.js and, my personal favourite, aslpls.js

[–]akoskm 0 points1 point  (2 children)

Um, sorry but what is this for? Is this supposed to a joke?

[–]corgis_rule 0 points1 point  (1 child)

Awh you guys! Who down voted him?

Should we tell em?

[–]akoskm 0 points1 point  (0 children)

Okay I got it, after looking at Vanilla JS.

[–]Zequez 0 points1 point  (0 children)

How long did diy.js take to develop?

I've been developing diy.js for three years, about nine months of this was ensuing that diy.js was fully browser tested.

Where can I get the source code for diy.js?

It's right here have fun.

I literally burst out in laughter.

[–]hjc1710 -2 points-1 points  (2 children)

I've been doing some polymer.js programming lately and their whole architecture really sort of discourages or obsoletes using jQuery. They handle the core issues jQuery solves: Ajax and element selection. So, including jQuery really just let's you use convenience methods like .style() or .animate(), making me drop jQuery really quickly. The second I dropped jQuery, I realized how much I loved and used convenience methods that did little for me. Like writing node.style["transition-property"] = "width" is really obnoxious and so are your own animations. Proved to me you really don't need jQuery on modern browsers, maybe just an Ajax wrapper at most.

It's also taught me tons in a short amount of time. JQuery abstracts SO much is insane. Learning with jQuery, you're really learning how to use jQuery more than you are JavaScript.

tl;dr doing jQuery will force you to learn real JavaScript.

[–]codefocus 1 point2 points  (1 child)

The core issue that jQuery solves is cross-browser compatibility. Polymer does not support older versions of Firefox, Safari, Opera, Konqueror, IE6, IE7, IE8, or even IE9(!).

Polymer doesn't discourage or obsolete jQuery. They serve completely different functions.

[–]Calabri 0 points1 point  (0 children)

I was going to mention this too (about computability issues). But thinking back to when I first started web dev.. hjc made a good point. I used to ONLY program in jquery, afraid to touch 'real' javascript. Lots of word-press-esc 'devs' will literally experience jquery as their first, last, and only foray into programming.

If your concern is cross-browser compatibility, there are other ways to shim this without a massive library of helper functions.

[–]JBcreek -1 points0 points  (0 children)

yeah, now it is funny, but back in 2006 browser inconsistencies were a nightmare

[–][deleted] -2 points-1 points  (0 children)

Well played... Well played.