Yes, I too agree EmberJS always a confusing library, Following are my resaons.
1)They say it follows MVC. Its actually MVC but MVP, if you look closely at the implementation.
2)Controller job is not precisely defined.
Example: Even the data validations are done at controller level not a model level
So i switched to Backbone.js, which is very flexible library with tons of plugins that can be used when needed.
Since implementation of UI is different from requirement to another requirement. I feel EmberJS doesn't satisfy this, which leads to people using Backbone.js.
Regarding AngularJS, please use it only if you are new javascript and prefer learning Angular Javascript (which is not javascript by the way) :)
Regarding AngularJS, please use it only if you are new javascript and prefer learning Angular Javascript (which is not javascript by the way) :)
I am not sure you "know" javascript. If you are saying that there is an Angular version of javascript then you are terribly mistaken. Angular is probably one of the only mainstream framework that stays true to javascript. All other frameworks ( Backbone, Ember etc.. ) are the ones that actually mould javascript into an OOP language. I would say that Angular uses the prototype chain ( you know javascript is a prototypical language right? ) the best. The whole scope object inherits prototypicaly while in all other frameworks we create an illusion of OOP. Someone correct me if I am wrong here.
Just for clarity, I believe that when you write Angular code you are writing the purest form of javascript. Because thats what you are writing there. Just plain javascript. There is no constructs imposed by the framework at all. This is probably why most people think "Angular's javascript" is not javascript. They have been always fed layers on top of javascript because "javascript is somehow not optimal, not right" and it has to be "changed" and "corrected" . OOP is shoved down the throat. This is probably gone on to the extent that when someone actually writes in pure javascript it starts looking like a foreign language !!
Before berating other people's knowledge, you should probably make sure that what you are saying is infallible. So with that I ask you:
Do you realise that JS is an object oriented language? Prototypes are a means for inheritance (i.e. reuse of code), just as classes are in more traditional languages - it does not mean JS is not OO.
My interpretation of the GP comment is that he means angular to JS is like jQuery to JS, it's effectively a DSL that you have to learn in itself. Someone once said "people don't write javascript anymore, they write jQuery". That's what I think he meant
Uh, you were the one who suggested JS wasn't OOP-oriented. It's all JS to me. jQuery is just a function that's spits out adapter/decorator objects. Just as Angular, Knockout, Backbone, Ember, etc... are all just bloatworks that miss one critical point. We already had the V and the C pretty well covered. They're throwing a big veil of abstraction over one that was already there and worked fine. It's like webforms all over again only this time we're trying to pretend the client-side isn't already what it is rather than not there at all. And while yes, IMO, we should think of web apps as two separate apps, the client-side's concerns are localized enough that it's kind of silly to try and apply MVC to it (not that what any of this stuff does can really be called MVC or MV-whatever anyway). What is it with modern developers wanting frameworks to be the answer before they understood the question in the question in the first place? How do you even write this stuff without starting to feel a lot silly about the fact that you're just duplicating effort? Because at some point they all have to bind with the mechanisms already in place to bind to their own bindings and that's just stupid.
Are you replying to the correct person? I quite clearly stated JS was OO, whilst the GP clearly says that MV* frameworks "create an illusion of OOP".
If you're not convinced of the benefits of MV* frameworks on the client, please write a complex client-side app with vanilla JS and share what you learnt.
I'm being sincere there - I've tried, and I quickly started drowning in sea of boiler plate code I'd rather not have to write. Not that it's not fun to write some of that stuff, but I'd rather be delivering value. And what happens when I create a second app? Hmm seems there's lot of similar boiler plate stuff, why don't I just abstract that into a framewo.. oh wait
Did you actually read what I wrote? I do agree I missed writing "classical" OOP in there, but I guess I assume wrong when I think that people can fill in the blanks. Here is the jist of what I mentioned earlier - "Most frameworks provide abstractions over javascript that create the illusion of classical OOP".Angular doesnt! .
I am talking about prototypes and the prototype chain there? You still think I am just throwing keywords in the air, in that previous sentence and dont understand javascript? You still think I am just writing crap there because ( fill in the blank! )?
> Regarding AngularJS, please use it only if you are new javascript and prefer learning Angular Javascript
I'm not sure that's very fair to AngularJS. I gave up on Backbone and Ember because they had too many features, then later I was comparing JavaScript MVC patterns and stumbled across AngularJS which just made sense.
If what you mean by 'prefer learning Angular' is you have to understand $scope and $resource, $http etc, that's true of using anyone else's code, plus it's not exactly a massive library!
I'm genuinely curious why you think Angular _isn't_ Javascript?
Yes that's exactly. you got it right,If you are JS developer, you still need to learn about "understand $scope and $resource, $http etc," features.
If you feel my comment about Angular is completely Unfair, I agree with you and will delete it. But here is my argument.
Why Angular is not Javascript:
1) The code written in Angular javascript gets compiled into javascript.
2) Tough to extend Angular and implement features that are not supported by Angular. Please Try adding new features on your own, then you will feel the pain.
3) Mixing bindings between the markup and script is not a good way to add bindings. Bindings should not be mixed with Markup (Unobtrusive JavaScript).
4) I felt Google is doing the same mistake they did with "GWT". They are not thinking in terms of issues faced by other JS developers, That is why jQuery is still pretty popular (Plugin based approach)
While developing client side app, each requirement is completely different and you really don't need a framework to address all this. But you need libraries like Backbone, jQuery ...etc as per the requirement and backed by open source . This is why, i love Backbone,jQuery ..etc
I worked on 4 applications with each having its own simplicity and complexity that uses Backbone. Never faced any issues, Community is very supportive.
If you have done R&D on JS MVC and like Angular than Backbone JS (Ember JS always confuses me too), Please continue with your work. Because there is always a nicer way of doing things in Client side :).
I've only looked at it but I know people who are into it and I'm not aware of Angular compiling anything. There's this crap they do with the "DOM-compiling" or whatever but that has little to do with rewriting JS or compiling AFAIK. That's just Google engineers wanting to feel like they have their big boy pants on when they talk about their JS framework.
Yeah, I know this. You wouldn't be able to step through your code in browser dev tools otherwise.
The DOM manipulation stuff is one of the features which sold me on Angular. I love the idea that everything renders itself then responds to a single redraw event fired on the DOM so that reflow happens once rather than the hideous way many people use jQuery to do things like:
var div = $('div').appendTo('.home');
var ul = $('ul').appendTo(div);
$('li').appendTo(ul);
> If you feel my comment about Angular is completely Unfair, I agree with you and will delete it. But here is my argument.
I said a little, not completely, but we're all entitled to our opinions, that's why we're here :)
> 1) The code written in Angular javascript gets compiled into javascript.
I don't fully understand this - although I have only been using Angular for a few months - are you talking about my code in my controllers, views, services etc? because it doesn't seem to compile it and I can step through in browser developer tools. Or are you talking about the directives?
> 2) Tough to extend Angular and implement features that are not supported by Angular. Please Try adding new features on your own, then you will feel the pain.
Again, perhaps it's my use case, I haven't tried to add features to AngularJS but treated it as a dumb framework, adding my own libraries to perform localstorage, offline/online sync, custom view transitions etc. What have you had difficulty implementing?
> 3) Mixing bindings between the markup and script is not a good way to add bindings. Bindings should not be mixed with Markup (Unobtrusive JavaScript).
I agree with you here, however unless you're entirely building the DOM from scratch in JavaScript, you're probably going to work with HTML/CSS templating developers. I feel Angular gets the balance right of extending the templates with directives while not making the HTML generation completely opaque.
> 4) I felt Google is doing the same mistake they did with "GWT". They are not thinking in terms of issues faced by other JS developers, That is why jQuery is still pretty popular (Plugin based approach)
Maybe they are, however jQuery solved the problem of writing one set of JavaScript code which ran on all browsers, even though they all used different syntax (remember the old XHR JS?).
I see a lot of people use jQuery in a hamfisted attempt to modify the DOM without considering Layout/Reflow cycles and then they complain that their pages are clunky and slow to use.
I have an issue with client-side template engines which use handlebars/some other syntax because it's yet another templating engine that HTML developers have to learn, rather than just ... using HTML, which is already a standard.
> I worked on 4 applications with each having its own simplicity and complexity that uses Backbone. Never faced any issues, Community is very supportive.
I think that's great! It would be a very boring world if we were all the same.
> If you have done R&D on JS MVC and like Angular than Backbone JS (Ember JS always confuses me too), Please continue with your work. Because there is always a nicer way of doing things in Client side :).
I swore off writing frameworks a long time ago! :) There are a lot of people much cleverer than I, working on them, plus I much prefer working in the UI/DB area.
Looks good. I think you may have a character encoding issue on one of the questions (it was the rearrange the letters one) I was getting ? ? letters in Chrome on my Mac (UK).
> Please share your toughts, Why you prefer Backbone JS over Angular JS ? It will be very helpful.
Today, I prefer Angular to all the other frameworks, but like I said I don't _want_ a massive library, I just want the routings/DOM manipulation to be handled for me and I can do the rest!
Having said that, if a new project came in tomorrow which was a perfect fit for what Backbone or Batman does, I would go for it. The right tool for the right job!
If Angular was to become a massive framework, I would probably ditch it or just use the parts I need.
I enjoy these discussions, especially when other people know more about a different library than I.
1)They say it follows MVC. Its actually MVC but MVP, if you look closely at the implementation.
2)Controller job is not precisely defined. Example: Even the data validations are done at controller level not a model level
So i switched to Backbone.js, which is very flexible library with tons of plugins that can be used when needed.
Since implementation of UI is different from requirement to another requirement. I feel EmberJS doesn't satisfy this, which leads to people using Backbone.js.
Regarding AngularJS, please use it only if you are new javascript and prefer learning Angular Javascript (which is not javascript by the way) :)