8 ms·
Given that I really don't have any practical experience using whenever.js (it's literally days old) my "argument", is that jQuery tends to be very syntax heavy.
by paulca 15y ago
Given that I really don't have any practical experience using whenever.js (it's literally days old) my "argument", is that jQuery tends to be very syntax heavy.
eg. jQuery('a#click-me').click(function(){ $(this).text('Clicked!') })
... there's a lot of cognitive work going on here. Not only am I parsing javascript, as a coder, I'm parsing the CSS of the selector, and creating a mental model of the anonymous function. It's not to say that this is necessarily a bad thing, just that there's a lot of extra syntax to handle.
whenever("Click Me!").is('clicked').then('change it to "clicked"')
...reads without all of the extra syntax, but it still remains valid javascript.
> you'd have to look at three different places to understand what the code is _actually_ doing
This is a fair point, but I would argue that for most code you read, there's typically nowhere to go to find out the _intent_, which for me is really the most important thing. I think it's fascinating to be able to have "executable intent" ...
... but since I don't really have any real world experience using this, I can't really back up my arguments with any real data ... just the motivations I had to write this!
- seliopou 15y agoHere's what you can do without using whenever that addresses your issue, and possibly others'. As far as I can tell what people don't like is the inlined function. You can get rid of that and be descriptive about what's going on, all without the use of whenever: whenever("Click Me!").is('clicked').then('change it to "clicked"') turns into: var cbs = {}; cbs.setClickedText = function() { $(this).text('Clicked!'); }; $('a#click-me').click(cbs.setClickedText);
- paulca 15y agoYep, I've played around with tons of approaches to this problem : your solution is where I started. It's probably totally ok, but there was something about it that just didn't sit right with me. In eyeballs.js, for examples, I explored doing all of the binding via the html elements themselves, eg: <a href="#" data-bind="posts#new">New Post</a> which would map to a pre-defined posts controller new action. whenever.js is just another exploration along the same theme. Again, I'm not arguing that it's better or worse: just my motivations for making it.