Jquerymy.js – Purely declarative apps with complex two-way data-binding
jquerymy.com
jquerymy.com
- Simple, interactive example at the top.
- Short, ~150 word technical explication.
- Five detailed demos that are all different.
- Detailed list of controls.
Obviously, not every project lends itself to this type of information architecture, but I'd love to see more projects think as hard about their presentation as this one does.
For example, I've never gotten a good handle on what other people see as declarative. I know the definition and I know my interpretation - but other people's interpretations seem to lead to very slightly different sets of declarative things. Is the term really not strongly defined?
I think my main grappling with this (such as "two way data binding") is that they are generally things that aren't that hard, I just didn't know there was a name behind it. Then when I see someone describe it, it takes me embarrassingly long to figure out that it's something I've done for a decade.
Do other people experience this?
edit: I noticed a downvote. I don't intend this to be off-topic or irreverent. My apologies.
In my (not that long) career I've used .Net, Cocoa, Python + Django, Go, Ruby + Rails, Clojure, JavaScript. The same things crop up again and again, with quite a variety of different names.
Truth is, if you've understood a named concept you'll see that it's the concept as something differently named elsewhere. You just have to tell yourself that humans will be humans.
Some of these things, like Apple's Class Clusters in Core Foundation are understandable because they were probably pioneering uses / rediscoveries of particular design patterns which got named before the Gang of Four came along.
And some of them are just plain ridiculous. The Ember people refer to JavaScript objects as hashes (presumably because of their Ruby background) and that's particularly annoying.
I met people who had only been programming under a year who were more successful with it ... and I have been doing Javascript since the 90s.
I wish I could unlearn all the things that create this mental blockage for me ... but I've been unable to overcome them. I don't know what to do - I feel like I'm missing out on a pretty lively movement.
I feel like I need to approach ember, angular et al as if "ok pretend that this isn't javascript. Pretend that it's something new." Because honestly they don't treat the language like the scheme-self hybrid I've become so familiar with.[1]
I think that approach will help, but I just don't have the discipline to be successful at it.
----
1. It's like with C++ how there's basically two kinds of devs ... the C-programmer who discovered some nifty organizational techniques, and then the C++ programmer. The second C++ programmer writes code that the other one finds very odd and confusing and the first one doesn't understand why anyone would go through all that trouble to do something that ought to be so simple, in her mind.
Next project I thought I'd try Ember. It's very much my way or the highway. Huge amounts stuff learn. Not only concepts, but all those conventions. Very narrowly scoped models to which the whole world will conform (it doesn't, not without tying yourself in knots). The same thing that really puts me off Rails.
I ditched Ember for the project and now I'm using React which I picked up in an hour and it's brilliant.
YMMV. But I can't stand arrogance, and, to my mind, Ember drips with it. That includes renaming things that already have names.
I understand the goals of such an exercise, but I'm not convinced that it leads to quicker to deploy, easier to maintain, simpler to modify software.
I think they must have different goals in mind when they write code - a lot of people clearly love the stuff. I just don't know what these goals are.
Can you tell, why do you think this syntax is not declarative? What is your interpretation?
This seems like a nice solution, although like other commentators mentioned, the lag seems to be quite unbearable. So it might be just something towards right path and hopefully it will be maintained and updated to work more smoothly, but wont grow into full framework.
If that piques your interest, check out: https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
http://vuejs.org/api/options.html#computed
computed: {
foo: function () {
return this.a + this.b;
},
bar: function () {
return this.foo + this.zot;
}
}See for instance the code of the map:
ui: { //The loupe itself
"#loupe":{
recalc:"#json",
delay:1,
...
or Bézier Curve: {
id:"en.Bezier",
params: {delay:10},
...Promising project though. If they can fix the latency issues, it'd be something I'd use.
(1) What browser versions are supported? (Translation: are you willing to do/accept help with the work to support business users?)
Edit: answered at the bottom, IE9+
(2) How well is deep nesting supported? (Translation: can my parent-child-grandchild-greatgrandchild piles of data entry forms use this?)
Thanks for the time invested in creating this library and the associated documentation!
2) Forms can even be recursive. http://cloudwall.me/etc/json-editor.html – you can check youself how deep source json and associated forms can go and find out when it will stall )
Anyway, you can see some basic apps in action at http://cloudwall.me/
$.my apps behave like complex controls – you can enclose one $.my app into other, you even can make this enclosure recursive (for example http://cloudwall.me/etc/json-editor.html).
Also since $.my manifests are JSON docs, you can combine them just attaching one manifest as a property of another manifest – so app of nearly any complexity can exist as a single JSON.