The reason Angular JS will fail

ANGULAR JS WILL FAIL UPDATE: 12/18/2015

Angular JS will fail, if it hasn’t already. It’s almost the end of the year, and the more I see defendants of Angular, the more I think to myself that they have something there. All of my side projects (about a dozen) including a management application found here at ActingShowcase.com do not have a single piece of code from Angular, and I have not suffered. Had I not had something like jQuery, development might have taken me a bit longer. I simply have not seen the need to use Angular at all. The world didn’t end. And, that’s another reason that Angular has failed. It has been losing popularity ever since I brought up the subject. It has been replaced by other “frameworks”, and overall, a lot of people have abandoned it.

The main reasons Angular js will fail are still: too difficult of a learning curve, and uselessness.

ANGULAR JS WILL FAIL UPDATE: 4/3/2015

I feel like I have to clarify for the people who keep trying to explain that jQuery is not angular.js. No duh! I’ve learned that over the years. However, what people don’t seem to understand is that I’m not comparing angular.js to jQuery. I’m comparing the difficulty to lean angular.js to the difficulty to learn jQuery. With difficulty in mind, I read an interesting quote the other day: “More entrepreneurs than ever before will enter this booming market with limited coding ability and they will need something other than [insert preferred framework / language here]”.

And now for the original post…

Angular JS will fail

I’m all about new technology, but just like Steve Jobs had put it, it has to be intuitive. It has to feel comfortable, and easy to learn. This is reference to another one of my posts done here: Angular JS Kinda Sucks. The main reason Angular JS will fail is because it’s too difficult. Honestly, who likes to make their lives more difficult? Not this guy. That’s not to say I’m looking for the easy way out. I believe in hard work paying off, but to make things difficult just for the sake of saying that I did something difficult that I could have done with ease, other ways? That’s just ridiculous. Yes, I can take a boat across the English channel, but why not make it harder and swim it? Other than getting into the book of world records, there really is no practical reason to do so.

Angular JS will fail

Angular JS vs other frameworks vs jQuery usage

Which brings me to the pattern of ever failing technologies. Remember Moo Tools? Prototype? I do too, and sadly, I use NONE of them in any of my projects. jQuery has evolved with the times. It has gotten better and better, and even with its 2.0 release, revolutionized. All while keeping its key ingredient of keeping itself simple to use and logically understandable. Any one of us who struggled with JS before jQuery came along created our own JS libraries to handle mundane tasks of JS. Class lookups, selecting elements, animation, AJAX, etc. We all wondered if there was an easier way to do repetitive work like that. jQuery came along and helped us out in that department. That’s why Angular JS will fail.

Prototype and moo tools tried to be innovative, but they just made things harder. Not only were they not intuitive to use, but referring to the documentation was even worse. Would take hours what jQuery could accomplish in mere minutes.

Don’t look at how many companies use those other tools right now. Wait for it and see how many companies will use those same tools in the future. 5 years, 10 years… jQuery has stood the test of time. And the reason they keep winning is because they cater to the developer, the people who are using the tool the most, and making their lives easier to deal with. It’s a complement to code, not a spaghetti nightmare filled with complexities and high learning curves. Another reason Angular JS will fail.

I remember the first time I built a web page using jQuery. It was easy. It was instinctive. It was amazing. It made want to use more of it. AngularJS unfortunately, did not have that same effect on me.

In the end, I guess it’s to each their own, but too many times I’ve come across reviews that are not so pleasant to read about Angular JS. Even doing a google search on “jQuery sucks” vs “AngularJS sucks” shows that there are more results for the latter, and AngularJS has only been around for a few years, while jQuery, almost a couple of decades. You’d think that there would be more results for jQuery since it’s been around for longer, and that AngularJS has been harbored by Google.

What are your thoughts?

ANGULAR JS WILL FAIL UPDATE: 7/18/2014

As promised, here it is. The first update of my attempt to compare angular vs jQuery. Before you jump in and start yelling at me about how they’re apples and oranges, I wanted to compare the ease of use of angular and jQuery to do something simple. Here are the three tests:

* Load elements onto a page
* User clicks on stuff
* Use AJAX calls to…
* Manipulate DOM elements.

Basically, this explains any sort of application that I’ve ever worked with.

* Program loads
* User clicks around
* A call is made to the “controller” which calculates some things, and returns some “views” to be rendered by the front end
* Swap out HTML elements, add classes, remove classes, etc.

Doing my research, I found out that angularjs does AJAX calls as simple and as easy as jQuery. Here’s some examples:

jQuery:

1
2
3
4
5
6
7
8
9
10
$.ajax({
url: '/ajax.php',
dataType: 'JSON',
success: function (data) {
$('#element').html(data);
},
fail: function (data) {
alert("AJAX failed!");
}
});

 

angularjs

1
2
3
4
5
6
7
8
9
10
$scope.myData = {};
$scope.myData.doClick = function (item, event) {
var responsePromise = $http.get("/ajax.php");
responsePromise.success(function(data, status, headers, config) {
$scope.myData.fromServer = data.title;
});
responsePromise.error(function(data, status, headers, config) {
alert("AJAX failed!");
});
}

Code Size:
+ jQuery
The very first noticeable thing here is the fact that jQuery has significantly less code. This may not matter right now because it’s a small ajax call, but what happens when you have multiple AJAX controllers (as I’d like to call them)? This can escalate quickly.

Library Size:
+jQuery
If you check your network tab like I do, you’ll also notice that jQuery is about 20% smaller in size. Not a biggie really, just a small win, but still a win.

Maintainability:
= neither / both
While I like how angular binds everything with variable names to make it easier to manage your code, there’s absolutely nothing holding you back from writing well structured jQuery code that will accomplish the same thing. Well structured code is well structured code. I can see either fail at this if either code is spaghetti.

DOM Manipulation:
++jQuery
I wanted to see an example of how angularjs will do DOM manipulation since my app is mostly DOM elements being updated, added, removed. This is where angular fails for me by far! The first google search led me to this jsfiddle link: http://jsfiddle.net/simpulton/E7xER/

Code:

1
var myApp = angular.module('myApp', []);

myApp.directive(‘myWidget’, function() {
var linkFn;
linkFn = function(scope, element, attrs) {
var animateDown, animateRight, pageOne, pageTwo;
pageOne = angular.element(element.children()[0]);
pageTwo = angular.element(element.children()[1]);

animateDown = function() {
$(this).animate({
top: ‘+=50’
});
};

animateRight = function() {
$(this).animate({
left: ‘+=50’
});
};

$(pageOne).on(‘click’, animateDown);
$(pageTwo).on(‘click’, animateRight);
};
return {
restrict: ‘E’,
link: linkFn
};
});

Notice something awkward? It starts all nice an ajngularjs-y, but the on line 11 of 28, something awesome happens. All of the DOM manipulation is handled by jQuery. Um…….. What? So not only do I have to load a library (jQuery), on top of a heavier framework, and handle my DOM with jQuery still? This is what I was referring to when I first started writing about this article. 8/28 lines are jQuery. And this after a google search on how to manipulate DOM with angularjs. I guess the answer is: use jQuery.

Most of my front end code is ajax calls and DOM manipulation. As most apps are, that’s the norm. And I mean 99.999% of my jQuery is just that. AJAX and DOM manipulation. This is why we’re creating an app in the first place; so we don’t have to constantly reload a page. This is as simple as it gets, and angularjs has failed me.

An app without DOM manipulation is no app. It’s an applet. Forget about building full SPAs without jQuery.

Scalability:
++jQuery
So, I wanted to see how my friends here would fare against some extended code to handle a dynamic AJAX controller with JSON data coming back from the back-end. I won’t post the back-end code since it’s the same code. I just want to see the difference of how angularjs handles the data coming back from the server, and how jQuery handles the same data.

For the purpose of simplicity, here’s the requirements:

* Two links, and two output elements on the page.
* One link loads a random number in the first element.
* The second link loads today’s date in the second element.

angularjs:
—-angularjs
First off, I had to search the documentation… A LOT. And although the documentation lists functions and methods, it doesn’t show examples like jQuery does. How do I know how to use it if there’s no example? Is it assumed that I already know how to use angularjs? Then why is there documentation if I know how to use it? It’s illogical garbage. If you, the reader, can show me how to achieve something similar to the jQuery example below, please, I beg you, show me!

Forget about trying to get an attribute value from an element. The documentation page about attributes… NOTHING. No examples:
https://docs.angularjs.org/api/ng/type/$compile.directive.Attributes

I found “some” answers on stackoverflow.

First, there was this:

1
// Use $observe to observe changes to the attribute:

attrs.$observe(‘data’, function(value) {
console.log(‘data has changed value to ‘ + value);
});
attrs.$set(‘data’, ‘new value’);

Where am I supposed to put this code? In my controller file? My main app file? In the HTML as a script tag? And I don’t care about detecting changes to the attribute. I want to get the value of an attribute. Found something else while browsing:

http://stackoverflow.com/questions/20636537/angularjs-find-element-by-attribute-value
“In AngularJS you won’t do direct DOM manipulation from the controller, you should create a directive to to that. Inside the directive you can use JQuery as you wish.”

……. dandy! So, while really trying to make DOM manipulations, which is the visual feedback that end users require in order to know if something happened… I went back to jQuery.

Binding and directives? How am I going to write them to achieve the dynamic world that jQuery offers through IDs and Class Names? How can one bind anything to achieve that beautiful DOM manipulation? What about rendering new elements (created after DOM ready) on the page that I can continue to manipulate with jQuery using the $(document).on(); function?

jQuery:

1
2
<a class="ajaxClick" href="/ajax.php" data-action="dobuttonone">Link 1</a>
<a class="ajaxClick" href="/ajax.php" data-action="dobuttontwo">Link 2</a>

 

The backend will return some JSON encoded code with the following structure:

1
2
3
{"htmls":{"#elemOne":496609}}
// or
{"htmls":{"#elemTwo":"2014-07-19 00:32:09"}}

The JS that will show the main controller that I was talking about:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
var manipulateMyDOM = function (data) {
for(htmlElem in data.htmls) {
$(htmlElem).html(data.htmls[htmlElem]);
};
for(appendElem in data.appends) {
$(appendElem).append(data.appends[appendElem]);
};
for(prependElem in data.prepends) {
$(prependElem).prepend(data.prepends[prependElem]);
};
for(updatableElem in data.updatables) {
$(updatableElem).html(data.updatables[updatableElem]);
};
for(replaceableElem in data.replaceables) {
$(replaceableElem).replaceWith(data.replaceables[replaceableElem]);
};
for(removeElem in data.removes) {
$(document).find(data.removes[removeElem]).remove();
};
for(after in data.afters) {
$(after).after(data.afters[after]);
};
for(attrchange in data.attrchanges) {
for (value in data.attrchanges[attrchange]) {
$(attrchange).attr(value,data.attrchanges[attrchange][value]);
}
};
for(classRemoveElem in data.classRemoves) {
$(classRemoveElem).removeClass(data.classRemoves[classRemoveElem]);
};
for(classAddElem in data.classAdds) {
$(classAddElem).addClass(data.classAdds[classAddElem]);
};
}

$(document).on(‘click’,’.ajaxClick’,function(e) {
e.preventDefault();
var $this = $(this);
var _action = $this.attr(‘data-action’);
var _url = $this.attr(‘href’) + ‘?action=’ + _action;
$.ajax({
url: _url,
dataType: ‘JSON’,
success: function (data) {
manipulateMyDOM(data);
}
});
});

And you’re done!!!! The only thing you will have to take care of is to provide elements with the class name “ajaxClick” and add a “data-action” attribute to tell the back-end which function to run. Here’s that PHP file I said I won’t put up. For each one of those links, you just add another function to your ajax file. The binding happens because of the data-action attribute is named the same as the php function. Yes you can obfuscate them if you’d like, but this is just to give you an idea of how code can be structured without the aid of 3rd party frameworks.

What I did above was to build my DOM Manipulator for as much of the functionality that I will use for most of my apps. You can reuse this for every application out there as a plug and play piece of code. Angular cannot make this possible as it can’t do DOM Manipulation on its own.

1
2
$action = isset($_GET['action']) ? $_GET['action'] : 'badcall';
call_user_func($action);

function dobuttonone() {
// DO PHP STUFF HERE
echo json_encode(array(
‘htmls’ => array(
‘#elemTwo’ => date(‘Y-m-d H:i:s’)
)
));
}
function dobuttontwo() {
// DO PHP STUFF HERE
echo json_encode(array(
‘htmls’ => array(
‘#elemOne’ => rand(111111,999999)
)
));
}
function badcall() {
echo json_encode(array(
‘error’ => true,
‘message’ => ‘No action was provided’
));
}

Now THAT’S good structure. No frameworks necessary. Just good ol’ code. An entire dynamic and scalable application.

I really wanted to compare a real life world example on how I can achieve something with angular that I already have with jQuery. Unfortunately, angular has already failed for me, and I provided examples on how it did so.

To all those angularjs developers who keep claiming how awesome the holy grail of angularjs is, please provide some examples of some work so I can understand what you keep claiming to be real. It’s like a religion, I swear. AngularJS is just awesome. You just have to be immersed in it to realize it. Sounds just like religion.

For me, angular has failed for the following reasons:

* No clear examples of the two most widely used front end features, DOM Manipulation and AJAX calls.
* Most of my development (over 99%) consists of those two features.
* jQuery easily provides AJAX calls, and keeps the code lighter and cleaner than angular.
* Even angular documentation suggests you use jQuery for DOM Manipulation.
* Why even bother using angular if most of my work consists of features easily implemented by jQuery?

I’m sorry to say that my research with angularjs has just strengthened my trust in jQuery to be my library of choice.

Well, actually, I’m not sorry. I’m glad I chose wisely from the beginning.

ANGULAR JS WILL FAIL UPDATE: 10/15/2014

After reading a lot of your comments, I’ve started to realize why the two are apples and oranges. Most angular developers speak of SPAs as something that doesn’t require DOM manipulation. Just numbers or text values changing here and there. Or even replacing your curly brackets with chunks of html within the document.

AJAX can be done by both, fairly easily. So that’s not a problem. I have noticed several comments that are less than nice towards someone trying to understand something new. It’s as if it should be simple because you understand it. Some people have an easier time with apples than oranges I suppose.

Performance wise, both can be good or bad. I keep saying it over and over, but it’s HOW you code, now what you use that matters in the end.

As far as making things easier… well, the shortest road is the one best known. Shortcuts can sometimes leave you wasting time if you’re not familiar with them.

Having been in the web dev field for quite some time now, I’ve realized that it all comes down to the basics. Adding levels of abstraction just creates necessity for no reason. Necessity to learn new things, which some people may be opened to, but this old timer (and apparently a lot of the commenters and readers of this post) is about done with learning new things that go obsolete before they get famous (prototype, mootools, GWT, Code Igniter for backend, I could go on and on).

Frameworks are nice when you understand them, that’s why I believe that the best framework is the one that’s easiest to learn. Unfortunately, most people don’t understand that the most popular framework is JavaScript itself. As for BackEnd PHP Frameworks, PHP still outlived every other abstract layered framework on top of it, and their many non backwards compatible versions. Looking at Laralvel, the greatest marketed PHP framework since Zend, it honestly looks like all of the other frameworks before it… just done differently with a little more or a little less abstraction, and its own quirks. Sparse documentation doesn’t help it either.

In the end, it comes down to the choice of the developer. I give a lot of respect to developers that still write pure JS. No abstraction for them. They know what’s needed from the language for their project.

I’ll stick to my apples, thank you.

ANGULAR JS WILL FAIL UPDATE: 11/3/2014

All righty then. Angular 2.0… a complete revamp of angularjs. Yet, another reason AngularJS will fail. I keep trying to explain why it will fail, and of course, I get all sorts of backlash about how I suck at programming. Maybe I just have a better understanding of business requirements integrated with development.

For all of those fan-boys of AngularJS… I don’t want to say “I told you so…” but… well, you know.

Apparently AngularJS 2.0 will be a complete rebuild of the first. It will blow your socks off… if you haven’t already built something with Angular 1.3 or its predecessors. Nevertheless, if you have built something with a previous version of AngularJS, sucks for you! Yes, there will be migranes… I mean… migrating procedures and such… but look at the cost!

I remember the days of when jQuery went to 2.0. Well. I remember them because I had to do it, and not too many people complained. In fact, the things that were pulled out that people used, were stacked neatly in an additional line of code that mostly housed IE dependencies. Easy, peasy! And… 99% of it is backwards compatible… And it’s not like things were added to it as bulk

With Angular 2.0, good luck migrating your entire code that’s dependent on a specific framework to another framework that’s not backwards compatible… at all… in fact, they will have to spend a whole year making it backwards compatible, therefore, bringing it back to a bulky mess that it was in version 1.3.

Does anyone else see anything wrong with this? Or are the fan-boys so faithful in this new religion, even if their projects crash and burn on the way down? How can anyone have any faith in a system that will drastically change their way of doing things? What’s to guarantee that they won’t do it in the future, causing you more headaches and lost hours… that you apparently saved while you were working with what would become an outdated version of itself.

Frameworks suck, and frameworks that are not updated with backwards compatibility, fail! Just look at all of the PHP frameworks that have gone by the way side because they didn’t keep up.

I understand that frameworks are supposed to make things easier for the future… but has Angular JS done that in this case? Uh… nope! Major fail in my book!

  • Alyssa-chan

    It seems like I was not the only one who felt something is wrong with AngularJS. I tried to like it… really. While learning it I consumed a lot of resources: books, blog posts, and screen-casts. But my opinion of it still doesn’t change. It sucks. I won’t say the word ‘kinda’ because it is only a softener that attempts to offend people less. I bet the creators of AngularJS can handle it because they are all grown-ups.

    The problem is that it’s backed by Google. Well, Google is composed of many smart people writing complex apps and inventing revolutionary algorithms. The people working there are in the top 1% of society when it comes to intelligence. What about us on the bottom 99%?

    Since you have mentioned Steve Jobs, I remembered the possible explanation why the iPod has been a huge success… It’s because it was intuitive to use, unlike other mp3 players at that time. One might argue that developers like us are smart people, and all we need is patience and persistence in able to learn something new. But times are changing. Things are getting more complicated. Why not make them simpler? As Albert Einstein said, “Everything should be made as simple as possible, but not simpler.”

    • George

      Brilliantly written.

      • Alyssa-chan

        Thanks. BTW you got a nice blog :)

        • George

          Thanks! Glad you enjoy it.

    • George

      And with the dozens and dozens of new languages, frameworks, and other libraries coming out every year, I’ll be spending more time learning new technologies and working less.

  • http://www.sachagreif.com/ Sacha Greif

    It’s not quite the same thing, but you might want to give Meteor a try. It definitely tries to make things easier.

    • imzey benichou

      Meteor seems magic but here is the problem with Meteor, it’s NodeJs. What if I want Golang? Erlang? plus I have to implement my own ddp or stick with mongo.

  • web4future

    Angular will fail because of the community. I asked a questions which many have asked after me, and 3 months on is still unanswered..yet, it’s a simple question, that the documentation or a 3 line example could have fixed. Goodbye Angular, I’ve since redone the work for my client with Jquery and datatables and it was even easier to do then in Angular.

  • dmackerman

    This is the reason AngularJS failed FOR YOU. I’ve built several apps with Angular with a lot of success – more so than if I were to build it with say, just jQuery.

    It’s quite a blanket statement to say that a technology will fail just because it failed for you. There are thousands of developers being productive with Angular. Beyond that, it’s still in it’s infancy. Understanding will improve, docs will improve, and the community will improve – I hope. :)

    Angular is not a fit for every project. Understanding when it’s a fit will go a long way in determining the success of your project. Angular is a fit for my brain, and the way that I think about building web applications. This is not true for every developer, and those certain devs WILL struggle with Angular.

    Just my 2 cents.

  • JonRimmer

    You have it completely backwards.

    jQuery is the equivalent of swimming: Easily understood, not too difficult to learn, and a great and convenient way to cross short bodies of water. However, when you reach a channel, or a sea, or an ocean, and you try to swim across it, you’ll quickly get into trouble, you’ll flounder, and you’ll drown.

    AngularJS is the equivalent of a boat. It requires more effort to acquire it and to learn how to operate it. You might even need a whole crew of people to do it. So why bother, when swimming is so much easier? Because when you do reach a sea or an ocean, and you absolutely have to cross it, you need a boat.

    The people who look at AngularJS are say “this sucks” or “this is way too complicated compared to jQuery” are most likely people trying to use a boat to cross a pond. For sure, they’d be better off sticking with an easier method, but taking that a step further and saying “nobody ever needs to do anything but swim” is a mistake.

    • Keith

      I agree with this. Although I can understand why many people think AngularJS will die as the author mentions. Many tutorials that exist teach us how to do the simplest of tasks that would take jQuery a couple lines to do. Maintaining a large scale jQuery application is a nightmare, but I’ve found that maintaining AngularJS applications is much easier (when structured right).

      jQuery was built for handle simple one-offs that would otherwise be difficult to do (and support a wide number of browsers) in plain JavaScript.

      As others have mentioned, those who write large-scale javascript applications, they will use frameworks like ember, backbone, and angular. Those who only need small dom manipulations will use jQuery.

      • http://marcellusmiles.com Marcellus Miles

        @disqus_pjFymHRlQ0:disqus “When structured right”………

        …and thats just it for me right now! I have yet to see one good comprehensive article showing solid modular architecture (I’ve looked for about 2 weeks now) for an angular application that’s comprehensible, includes testing and includes full runnable source. And I’m not talking about some short and sweet “how to” blog post by joe the coder, but rather something complete.

        I too like the author have been using Javascript/JQuery for years and have been a software dev for about 14 years. I too have seen the community come up with one tool after another only for them to be forgotten too soon. When you are shifting an entire team from one framework to another these decisions have impacts on the team for many years…especially when one works at a place for longer periods of time than those in the valley.

        I do see Angular’s benefit for single page applications, I surely do and have started an architecture myself for one which uses Sinatra as an API for the backend and RethinkDB. I just also need to see some good real world, solid, robust, testable and complete SPA architecture implementations, becuase right now, this Angular learning curve is a real bitch, for those that have done C all you really need to do is see some good damm code and how it was all put together to grok whats going on.

        • http://marcellusmiles.com Marcellus Miles

          I did just find this Yeoman generator, which is more up my alley than the more popular generator for angular as this one has more of an enterprise structure https://github.com/cgross/generator-cg-angular .

          • Dan

            @Marcellus Miles you might want to have a look at this comparison I made of different generators for AngularJS. generator-cg-angular is among them

            dancancro.com/comparison-of-angularjs-application-starters/

            Disqus is changing “@Marcellus Miles” to “@Nogbit” when I save. I don’t get it.

          • http://marcellusmiles.com Marcellus Miles

            @super_awesome:disqus thanks for that comparison, looks like you put a lot into it. We are using a modified version of the one I linked to.

            The username issue may be because I changed things around since I first posted here.

          • Guest

            @Nogbit:disqus, something weird happened with Disqus and trying to address this to you. Second try.

        • Neil Moffatt

          I agree. The fundamental problems with Angular are that it is overly technical, it exposes its inner workings as part of the developer toolset, the documentation is terse and severely lackig in examples, and, as you say, there are too few real world model examples. I spent a few months writing http://www.angularbasics.co.uk to cover the basics for newbies, but even now, it feels like a spaghetti set of tools – there is no clear harmonisation of functionality.

        • Yoyo

          I’m going back to ColdFusion Ftw.

          • greggT

            i was at NCDevCon a few months back: 300 developers.
            the main sponsor was CF.

            Q: “How many developers are using confusion?”
            ( 80% raise hands)

            Q: “How many developers are planning on using confusion for the next year?”
            ( 10% raise hands)

            wow.

        • glauberramos

          If you see the need for such article why dont you do it? 😀

        • pridisc

          I agree. Apart from what you said, I am a little wary of tech that comes from Google. I have been using GWT since its 1.0 release. With every release they changed the framework so much that I had to spend significant amount time catching up and refactoring the code (a LOT). Later they acquired a company that used to do WYSIWYG UI builder for GWT. At that time, GWT was at its prime and it looked as if Google will spare no effort in making GWT better. An year or two ago, they spun off GWT into a community run project and discontinued the WYSIWYG tool. Now the future of GWT is uncertain. Truth be told, GWT was a massive hack, one that I liked and bought into, but without the support of Google (and all the hype that comes with being a Google backed project) GWT will most likely die.

          Google likes to innovate fast and generally does not care about breaking things if it finds a better way of doing something. It assigns very little weight to the time invested by developers in learning its technology. This is not too odd for Google considering that it has very smart programmers who don’t mind learning cool new things all the time.

          Like GWT, AngularJS is a hack. It is popular now and people have confidence in it as Google is backing it. The average Joe does not really like it but trusts it because of the Google tag.

          It remains to be seen what happens to AngularJS when Google comes with with a new toy next Christmas.

          • Peter Drinnan

            AngularJS has an MIT license and most of the contributors are not even from Google.

          • pridisc

            I never said that licencing was an issue with GWT or Angular. The issue was that Google was blowing wind into it and ever since it has stopped doing that, GWT development has stagnated.

            Google’s philosophy is “move fast and break things” (ok, maybe that’s Facebook’s ;)). So if tomorrow they find a new way of doing things that’s more promising than Angular, they will abandon Angular and move on to that new thing.

            This is both good and bad. Good because innovation is not hindered by baggage of past and bad because you have to spend time learning a new framework – its okay if you wan’t to learn new things for sake of it but if you are running a software shop with with average programmers.

          • Peter Drinnan

            I can see your point. Personally I assume that whatever I’m using has a very limited lifespan. Two years ago I was knee deep in CodeIgniter but nobody will touch it a 10 foot pole now. Every tool has its day.

          • Oscar Blank

            Actually, this is a great comparison, because the same devs that would go for the trendiest PHP framework (now Laravel) would be the same that might choose Angular for JS. I’ve only been doing web dev for about 12+ years, but that’s long enough to see trends, and when something works well it may be worth sticking with. CodeIgniter for instance is perfectly suitable for many applications, being fast, lean, well tested, well documented, etc, etc, etc…. but you wouldn’t touch it with a ten foot pole. I guess the joke’s on you. Stay trendy my friend.

          • Joe Bloggs

            I use CodeIginter constantly. I guess my pole is just bigger.

          • Wendel

            GWT is still doing well and you can expect some major changes in 2015. It has two strong points. Shared code between client and server. The second one is the support for mobile html5. Angularjs is too slow for android tablets and it crashes iOS webviewer due high memory consumption.

            Also note that the new Google Spreadsheet app has been written in Gwt.

            Except gwtproject.org looks outdated and the tutorials are outdated as well. I hope this will change soon.

          • Bo83

            I agree with you that GWT is a massive hack. But I’ll go one step further and include JavaScript in that statement also. I’ll go even one more step and say that web apps themselves are a hack. Web apps only exist because as the internet became dominant in the mid-to-late 90’s there was no solution for wide-scale deployment of desktop apps and desktop apps were also silo’ed to a single platform. Web apps solved this with their cross-platform reach and single-site deployment.

            So we moved towards web apps because we had to not because it was preferred. No one prefers a web app to a desktop/native app. Forbes did an article this past summer that showed we spend an average of 2 hours 42 mins on our phones each day and only 22 minutes of that time is spent within the browser. And of those 22 mins the user rarely used the browser as the point of origin. They usually end up in the browser because of clicking on a link within an app.

            So the user will eventually bring that mindset and behavior to the laptop/desktop world. They will expect their desktop/laptop to work exactly like their smartphones. Using the browser will very much start to become antiquated and users will begin to frown upon having to start up a browser at all.

            App Stores and package managers are finally making it easy to deploy desktop/native apps. Windows 10 will ship with OneGet and even though it will only be available thru the cmd line it will eventually tie in with Windows Store in future versions. In a few years time users will never have to do a “next-next-finish” install ever again. The only other issue to overcome is cross-platform reach. But with .Net being made available on OSX and Linux, cross-platform reach will eventually be achieved also.

            I think in about 5 years time we’ll see 3rd party solutions similar to Xamarin.Forms begin to proliferate and there will be a move away from web apps. Web apps will very much be viewed as the “old man’s way” of implementing apps. They have always been a stop-gap solution but as technology solves the deployment and cross-platform problems they will fall out of favor.

            Of course they will always be around but the industry will start moving away from them to satisfy users “like my smartphone” expectations and desktop/native implementations will assume the helm once again.

          • James Nelson

            Gwt is actually very much alive and well. It actually has more users than ever, and the Gwt team at Google is still posting a lot of big improvements. Just because it’s been turned over to an open source steering committee does not mean that Google is not pouring resources into it; their new Google Inbox uses Gwt as does Sheets, AdSense, Groups and other products…. They did not kill the product, despite the fact that people all over the internet got butthurt and started claiming “Gwt is dead” because Google opened the product up to the community in general.

          • pridisc

            Have you used GWT yourself?

          • James Nelson

            I actually speak at the annual GWT conference every year, and have multiple clients who pay me to use GWT on a daily basis. :-)

          • Mehrdad

            GWT is already dead. Do a search for jobs which require GWT, and you just a handful of jobs require it when jQuery is is required by something like 70,000 jobs. I have learned so many technologies and frameworks which were useless; but I have the sense to just drop them when I know it is dead technology. Now, you want to keep working on GWT, it’s your own time; you want to invest it in a garbage technology such as GWT, be my gust. I for one wouldn’t waste one more second on it.

          • James Nelson

            Curious to know why you would call it a garbage technology; it’s actually very powerful and fits very nicely in with any java web application. Sure, maybe you don’t like java either, but it slaughters the competition for performance and scalability, and between Gwt and J2ObjC, you can reuse your code across literally every relevant platform (Server, PC, Mac, Linux, Chrome, FF, IE, Android and iOS), and even windows is working on a java transpiler for they aren’t left out either.

            Soooo, go ahead and try that in jQuery. A Cordova app is fine for small projects, but if you are serious about building enterprise level applications, a wrapped website is no replacement for a fully optimized, massively tested native application (where up to 80% of your business logic can be shared across all clients).

          • Nikola Johnny Pavlovic

            Actually you should get your info on cordova updated. It is now a long way from a wrapped website. The company I work for has exactly what you asked for: an enterprise level application, and cordova works magics. Especially check out intel xdk, crosswalk and such. Web worker api works for better resource management. A cordova app might not be a native app, it can never theoretically have the same efficacy as a native app, but how many people do you need to build the same app for an android, iOS and windows platforms?
            I don’t know about the native apps, but as for cordova, you need one capable web dev (feel free to add more in, to speed up the job). My two cents.

      • George

        “but I’ve found that maintaining AngularJS applications is much easier (when structured right).”

        Couldn’t the same be said for jQuery? If your architecture is right, how is using jQuery harder than angular on a SPA?

        • Keith

          @gbutiri:disqus , that is a good point. jQuery can be structured in a way to build a SPA. Do do some of the stuff that AngularJS does like two-way data-binding and such, I’d likely have to build a jQuery plugin that handles that. To handle routing, same thing, and sooner or later, it’s more of a framework with it’s own set of problems and maintenance issues.

          To be fair, I’ve never build or used a SPA framework jQuery, so it might be easier to maintain and easier to dive into than AngularJS, but in my limited jQuery experience, lots of jQuery has produced poor performance on the page.

          • George

            I have actually built several SPAs using jQuery. One controller that handles the “button clicks” or “link clicks” and one controller for “form submission via ajax”. The back end would do all of the work in processing data, gathering templates, and spewing out new HTML, or which dom elements would do what, including what classes to add to what elements, etc. What I discovered was that the better you structure your page HTML, the better structured your jQuery will be. Use #ids when necessary to keep performance up, etc. As far as usage, the only thing the application does is render initial page (no initial ajax calls. multiple http requests are bad when you can avoid them), and ajax calls to the backend to manipulate that application. Remove elements, add HTML, remove and add classes, replace HTML, all done from the backend bound with those two ajax controllers. And that’s it! Simple. Easy. Done. My application is alive and well.

            For live updates, I’m doing some simple javascript polling every 3 seconds to make sure that end users get notified. The “notificaions” are also processed in the backend, and run through the same “rendering” engine that the ajax run through to manipulate dom elements.

            YES MAINTENANCE IS NECESSARY in order for your backend to match the frontend. But that goes the same with angularjs.

            Real Data:

            I personally don’t like manipulating the DOM without checking with the backend first. What if you have a “add to cart” button, and the database doesn’t have any more of those items? By not checking with the backend, constantly, upon any user input, you’re providing possible false data to the front end.

            The way I understood applications to work is that there’s some sort of application -> data communication happening constantly. Hard to do on the web, especially when your data is in some sort of a sql database somewhere. A jQuery ajax call is much simpler to implement if done right through the controller mentioned above. And, polling can accompany that to make it almost live like.

            I’m on my way to create a jQuery vs angularjs mini application to see which one is better off. After reading many of the comments, apparently, angularjs does not need jQuery in order to function, and vice versa. I would love to see a vs test done on a mini app. I will post as soon as it’s done.

          • Keith

            Sounds like an interesting project! Keep me posted :) I did a similar test building minesweeper for both AngularJS and Backbone. Backbone (with jQuery) had a lot of difficulty rendering anything bigger than a 50×50 grid, but AngularJS still had about 60 fps with a 500×500 grid.

            “I personally don’t like manipulating the DOM without checking with the backend first.”

            I wasn’t suggesting that the DOM should be manipulated without checking the backend first. Neither do any serious AngularJS applications. AJAX calls can (and should) be made with AngularJS or any front end application, without jQuery. The nice thing with AngularJS is that it handles caching, and it’s pretty REST friendly.

            Yes, with any kind of Single Page application, you will ALWAYS want to validate data through whichever server you’re using, whether you’re using AngularJS or jQuery. The client-side JavaScript is too vulnerable to manipulation to trust data.

            In the example of your cart, the Angular app would handle the click, do a quick check with the database, then add to the cart if the items were there, then don’t if it doesn’t.

            In the use cases you gave, Angular would play the same role in relationship with the back-end services. In those cases, I would still to server-side validation, could still ping the server for new results (or just use web-sockets and let the server tell me when I should update my data), and wouldn’t update the dom unless I received confirmation from the server.

            Let me know when you’re done with your mini application! I might write one of my own and post it up on GitHub this weekend. Would you suggest that I put in some kind of back-end service? Or maybe just have some static JSON file to pull data from?

          • Derrick Simpson

            @disqus_pjFymHRlQ0:disqus Very great points.

            In fact, first checking the back-end is much cleaner in Angular than with JQuery, imho. Controllers can infer that you’re using a promise, then hide the details of getting and binding the data from you.

            The author often compares apples and oranges in many 1:1 examples. Angular’s use of promises is an extra layer of complexity, sure, but it solves many problems that often require messy code with JQuery, such as nested function calls in callbacks.

          • Rodolfo hernandez

            javascript polling every 3 seconds… really ?.. where is long pooling? where is SSE? sockets ?

        • 2Buku4U

          imagine all the various third party code you have to drag into your solution to get the full set of features that makes an application framework.. then as those third parties may fall behind on updates you are stuck with older versions of other libs due to various unfortunate dependencies.

    • craigvn

      He didn’t compare jQuery and AngularJs, he compared the complexity of them relative to competing libraries.

      • badPriest

        I think the point of the defendant was that in the same domain as Angular, there’s nothing out there much simpler. I mean, there’s no “boat” simpler than “swimming”.

      • Clint Eastwood

        Worse than that, he used simple cases. Jquery in complex cases can get out of hand. Angular on the other hand can break down complex problems to simple parts. Scope is a huge deal.

    • Motoman Mick

      Totally agree! I have taken the painstaking road to learn Angular because JQuery maxed out. JQuery was easy to learn and I still use it, but now that I have learned Angular I will never go without it. Once you understand Angular’s power and fact that DOM manipulations become unnecessary this will be your #1 tool.

    • jjenkov

      I disagree with this. AngularJS is more like the equivalent of a supertanker with cranes on top and cruise cabins. Lots of features but not really fit for any specific type of application. AngularJS code replaces “DOM centric” code of jQuery with HTML centric code. This concept has been tried and abandoned already by e.g. Java on the server side, .NET on the server side etc. What makes the JS guys think it will work better because you do it in JS on the client instead? Component based GUI frameworks work the best in my experience. They are more intuitive, scale better (maintainability) for large apps, and are typically more flexible. Google is even acknowleding that with web components and their Polymer project.

      • http://mrcoder.github.io XiaoPeng

        What makes the JS guys think it will work better IS they do it in JS on the client side. It is fundamentally different with JSF or ZK. It allows you to debug JS with real DOM.

    • Rikard

      Spot on. Like my karate master says about technique: “If you can perform a so called technique easily, probably your opponent also can do it, that is not technique, technique takes time to learn and might even go against your nature, but when you know how to use it, you will do better than your opponent”. Some things in life has a learning curve and I’m tired about pussies whining about other things having a steep learning curve, if you don’t even sacrifice the time to learn something to it’s fullest extent you lack the knowledge and have no privilege to even make these kind of articles.

    • McFlyyy

      Angular does not manages/creates database. You need to rely on something else; that double up the load of work then.
      Your boat don’t float; end of the story
      Mobile ? Go native. Jq just manipulate the dom and other stuff; does not pretend to reinvent the wheel. That’s where it might fail

    • Azri Jamil

      Totally agree Jon, just because we dont understand doesn’t mean it will fail. Use right tool for the right job.

    • Dominic Claxton

      I agree entirely with this analogy by JonRimmer. Brilliantly put. There are tasks or projects that would be best suited to jQuery. But if you plan to build a large application with the need to do two way binding across different parts of that application then you have to use a framework like AngularJS. I love jQuery and I love Angular. Neither are perfect.

    • William Hoblitzell

      You’re going to need a bigger boat. Google had the same conclusion and thats why they’re not supporting AngularJS 1,0. Turns out the OP was right. AngularJS is crap.

    • Michael Barber

      But Jon, that’s the problem. We always creating Boats now. If you have a swimming pool in your back yard, what are you going to do with that boat you built….assuming you are not Noah? People are building web site applications like they are going to live forever but the companies are out of business in 2 years before a new framework even becomes popular. Or, that person leaves and a new manager comes in and says…why the heck did you mornons use AngularJS instead of the new TargetMVCJS (some name I made up for some new technology that will replace Angular JS in 5 years). “Oh, It was a bad decision made by the last guy”

    • Sagar Mohite

      Not entirely true. See React is also a boat. Actually a much faster, flexible, forgiving (just like vanilla JS), less bulky, easier to learn, easy to maintain and well made boat that proves that boats should not be super difficult to learn or ride.

  • Guest

    ah, your inflammatory original post got you some views so you’re at it again? Next post “Angular is stupid and so are you for choosing it”

    Angular is dominating the framework landscape in JS land. It also shares key patterns with future web/JS tech. It’s not going anywhere. Not sure why you had such a hard time learning it, either, as I was on a team of twenty that picked it up in a week for a large project.

  • http://antjanus.com/ Antonin Januska

    I get what you’re saying but you’re comparing apples and oranges. Really.

    jQuery is a great wrapper for dom manipulation and is a wonderful for enriching our sites. From slideshows to form validation and all kinds of stuff. It’s great for that. It’s easier than Javascript because you don’t have to understand javascript to work jQuery.

    But AngularJS is a whole other mix. There IS complexity in using AngularJS just like there is complexity in using PHP frameworks, Ruby on Rails etc. Where you have to deal with dependency injections, routing, scope, etc. All of it already present in most other frameworks for the back-end. Angular just brings this extensibility to the front.

    • Daniel Selinger

      Second that. Angular serves a whole other purpose than jQuery. A subset of jQ is actually included (http://docs.angularjs.org/api/ng/function/angular.element). And the docs are not that bad..

      • http://antjanus.com/ Antonin Januska

        Well, I can’t agree with it. The docs are…well, they’re docs. They’re good reference documentation. I would love to see more tutorial-driven docs so that someone can learn AngularJS from scratch.

        • George

          They don’t exist. I’ve looked for them. There was this one video tutorial site that would charge you for viewing. Forget that! Even more of a turn off. Is it really that hard to understand Angular that you have to pay in order to learn it? Geez! I never once bought a book on jQuery and I feel comfortable that I can build ANYTHING with it on top of JS.

          • Bojan Matić

            I can recommend a couple of books:

            http://shop.oreilly.com/product/0636920028055.do
            http://www.packtpub.com/angularjs-web-application-development/book?tag=dp/masteringwebwithangularjs-abr1/0913

            There’s also ng-book (https://www.ng-book.com/), which I haven’t tried but I heard praises of.

            Also, of course AngularJS is harder to learn than jQuery – it’s scope is much broader (no pun intended).

          • http://www.moovia.com/null Darlan Alves

            You can try egghead.io. There’s a complete step-to-step guide there for free to get you going on AngularJS. I know it’s heally hard to learn in a few days, when you compare to other tools, but I think it is the AngularJS greatness. You will be forced to review everything you thought you know and go a step further in your professional carreer. In the end, you will be a better coder and a beter professional than you were when you was just “swimming”.

            About the examples and articles, is not there in the first page of Google, ready for you, but is there. I found a lot of articles, examples, other coders’ experiments and so on, and I don’t think it is that hard to find. You just have to look in the right places.

          • Thomas Raba

            I learnt angularjs without buying any book. There are full of how-to tutorials around, google it. For example: http://code.tutsplus.com/tutorials/building-a-web-app-from-scratch-in-angularjs–net-32944

        • Derrick Simpson

          @ George I’m thinking you simply don’t know where to look. I’ve been a long time JQuery advocate, and I’ve picked up Angular JS within a few months – using the official tutorial from the Angular site, plus others…

          Since learning, I’ve never considered looking back to answer the question “Which do I use as my base framework?” The answer is without a doubt Angular… I still use JQuery, because the two are designed (in many respects) to solve different problems.

      • http://facebook.com/md2perpe md2perpe

        AngularJS can even use jQuery if it’s available.

        • George

          Why use just a library when you can pile a framework on top too? Yikes!

          • Derrick Simpson

            George… That’s simple… But first, you have it backwards. Adding libraries onto a framework, such as adding JQuery onto Angular, makes complete sense. While there’s plenty of overlap, the two are designed to solve different problems.

            There are no controllers, two way binding, promises, dependency injection, etc, out of the box with JQuery…

          • 2Buku4U

            actually jQuery does have $.Deferred which is basically a promise, plus the ajax calls now return promises. .

    • Marvin R.

      totally agree. AngularJS is a MVC and a whole framework. jQuery is one part in such a MVC. The better comparison would be comparing Backbone.js + jQuery + ??? with AngularJS. So do not listen to this blog post. Better do your own research and google for backbone.js vs. AngularJS vs. ember.js vs. XYZ 😉 jQuery!=AngularJS

      • vandigroup

        +1 for jQuery!=AngularJS

    • Andir

      > It’s easier than Javascript because you don’t have to understand javascript to work jQuery.use you don’t have to understand javascript to work jQuery.

      This doesn’t make sense. jQuery IS JavaScript …It’s a higher level abstraction, sure, but it’s still JavaScript

  • Renso

    You are comparing apples and oranges!

    • Bojan Matić

      More like, apples to fruit markets.

  • GonchuB

    The problem here is that you are comparing two things that server different purposes. jQuery is like a toolbelt, allowing developers to do things in an intuitive (now that it has matured and has become sort of a standard) way, whereas Angular was thought of like an MVC framework for js. You should compare it against Ember or others attempting the same thing.

    Yes, Angular is new and is kind of poorly documented, but when you pass the starting point (for some that is harder) you get to understand how good it is, and problems it solves.

    Also, I disagree about the bad community. Check the AngularJS tag on stackoverflow and tell me if it is frozen…

    To the author: have you built a 50+ pages Web app solely with jQuery?

  • http://asko.io/ Asko

    1 decade = 10 years, a couple is 2 and therefore you’re saying that jQuery has been around for almost 20 years. Considering the initial release was in 2006, you’re math is horribly wrong.

    • George

      So is your English.

      • Andrew Martin De Nicolas

        Way to deflect– seeing as he’s completely right. I stopped reading after coming across that little goldmine. Apparently jQuery is older than javascript itself.

    • dvidsilva

      he’s not very smart it seems. 😛

      • George

        Seems like someone likes to nitpick to avoid the point of the discussion entirely. Who’s the not so smart one now?

  • Benjamin Goldberg

    Writing a web app with AngularJS was the first time I’ve ever felt that web development was fun or natural. AngularJS strongly embraces good design patterns and encourages reusable, organized, and well designed modules. My feeling is that new developers from outside the web development community might find AngularJS more familiar than those who have grown up professionally in web development. My two cents, though. I think its great to have so many options these days.

    • khalidmbajwa

      Nailed it. Fun is the key word here. Angular is just so much fun. JOY !

    • sai kiran

      Exactly that is how I am feeling.

  • khalidmbajwa

    Oh you have it completely wrong. For years i tried to get into jQuery and Javascript and i failed. Coming from the world of flash and flex, it was just too messy. Too much code for too little. It scared me, and yet i tried, again and again, and i just couldn’t wrap my head around how dirty the code got. And above all, it gave me no joy. Programmers love a language/framework which gives them joy, which makes them go ‘Wow, this was so clean and pretty’. jQery gave me none of that. Then along came angular and Holy Wow. Within hours i had built a complete e-commerce app,within a week, a music app with 80% features of groove-shark. Now here was ease, now here was joy. If you make the effort, just spend a few days learning angular, and its admittedly scary way of doing things, just by the virtue of being so different than anything else, i promise you, you too will have joy, and you will realize, there is NO other way to code javascript than Angular. Angular is IT. Angular is joy !

    • http://marcellusmiles.com Marcellus Miles

      This sounds like some scripted religious robotic response from someone at Google.

      Please provide links to these ecommerce in a week apps you speak of as I’m looking for some good examples showing comprehensive and modular angularjs architecture.

      • Andir

        I actually feel quite the opposite to the person you responded to. I was a Flash/Flex/C#/”whatever the boss wants” developer for the longest time and building projects using MVC frameworks like Robot Legs, etc. felt like an over-encumberance. Getting into pure JavaScript was like opening a door of programming enjoyment. Maybe this stems from my enjoyment of Functional (declarative/referential transparent, whatever) languages over rigid class based typed constructs, but there is definitely a difference in opinions and I fear it’s going to boil down to a religious debate like tabs vs. spaces when you get into the realm of rigid frameworks like Angular and more free form development.

  • nbevans

    Somebody doesn’t understand dependency injection and is blaming the world for his IQ problem. It’s a common theme in the JavaScript ecosystem. It’s full of developers who don’t have a sodding clue about software engineering, design or anything. Hackers and hacking is all they are able to do. So when faced with a framework like AngularJS they freak out and retreat back to what they know; which frankly isn’t very much at all.

    • https://twitter.com/albertkoz Albert Kozłowski

      +1
      It’s similar to situation with php few years ago when Symfony2 and other big frameworks were introduced, many people still complain and they use simple non oop php to create websites. Some people will stuck to jQuery but most will move to new mvc frameworks because they are much easier to maintain.

    • http://www.codingswag.com/ Niklas Modess

      The top reason that I’m a big fan of AngularJS is that it pretty much forces you to use dependency injection. That might come out of that I’m a backend developer primarily and have a passion for software engineering. Once you realize that “forced” dependency injection is awesome, you’ll realize AngularJS is awesome (when working on a project that it is suited for).

      • David Burrell

        Dependency injection is popular because current development platforms don’t give developers a good way to create testable applications. Injection makes simple apps hard and hard apps impossible to understand. What we need is a platform which allows testing without changing the architecture of an app. One tool does not fit all

    • 2Buku4U

      Right on.. script kiddies vs software engineers, different mind set all together. As I said earlier, if MVC, DI and other software patterns confuse you then you should probly stick to copy and paste jQuery from page to page and leave the real stuff to the rest of us.

    • Smith

      But you don’t need a large client-side library to implement MV* design patterns (which, yes, can be a useful architecture). You can do that server-side with well-organised Node.js code or something similar, which has the added security benefit of not exposing your raw data directly to the client, as is necessary with Angular or Backbone etc. APIs. The fact that you have to wait a few milliseconds on page load (which is inherent in the HTTP protocol and the way that we understand the web as a collection of documents) is more than compensated for by this and also by the fact that you don’t end up with bloated code duplication in both environments (e.g. recreating some form of model object on both the server and the client) — and, of course, you have to wait in Angular to download data from the server with AJAX or websockets or whatever anyway, so you still end up with just as much of a wait to get what you actually want on the page (and have to implement one of those annoying spinners, when your browser already has one of those for page load).

  • Ben Newton

    I have to disagree with this. Perhaps you need to go back and dive into angular a little deeper. I have built my last few projects in angular with no dependency on jquery except for 3rd party dependencies and they have been the cleanest, easiest to understand projects I have done in a while.

    As others have said, you are comparing apples and oranges. Do a job search for Angular.js and you will see how many companies are quickly changing to it as a preferred platform. It’s here to stay, or until the next great library comes along.

  • http://jcubic.pl/ Jakub Jankiewicz

    AngularJS is as hard to learn as other JS Framework like Ember or Backbone (I even think that backbone is harder), so you think they will all fail? There is no alternative. And also those are framework and jQuery is just a library.

  • Sven

    This graph tells the story about learning angular pretty well

    • George

      Unfortunately, jQuery or even JS is a straight line angled at 45 degrees constantly going up. Looks like Angular is doomed for another trip on the way down after this last dot. 😉 JK

      • LocalPCGuy

        I know I’m late to this discussion, but jQuery in this context is a 45 degree line to about halfway up, and then it plateaus. Yes, you can do cool stuff with it, but once you know how it works, your productivity does not keep going up, it just is.

    • Walid Hosseini

      You nailed it.

  • smsohan
  • http://cheynewallace.com CheyneW

    jQuery is better than Angular for web app development? I had to read that twice to be sure.
    You didn’t even explain why you think so, just that it’s too hard for you. Which means you never completely understood the framework and how to use it properly.
    You must be working on toy sized web applications because you clearly haven’t hit that brick wall DOM spaghetti hell that happens with a large application based on jQuery. I have many times, and it’s nasty.
    JonRimmers analogy was spot on. Angular is the heavy lifter framework, jQuery is a tool. You use the right tool for the job and after your web app grows to a certain scale, jQuery is not the right tool.
    If you had suggested Ember, Backbone or something in the same ball park over Angular I think i would of taken this post more seriously.

    • George

      First of all, I understand what I’m coding, and I structure everything from the beginning. It’s called architecture. I don’t need a framework to force me into a disciplined mind set. You can be a bad coder with any language if you’re not disciplined enough. If your claim is that angular avoids spaghetti code by forcing developers with rules and constraints, that scares me. More of a reason not to try that trap. 😉

      Why would I need to use angularjs as a framework when my code is so well written that I know what’s happening, AND my developers know what’s happening. The difference is that we plan things out before we build them, we don’t just go of running into a project with code from day one. System Design 101 dictates that you should spend as much time thinking out your project as you do developing it. And yes, I’m disciplined enough to actually plan things out before I do them. If that makes me a cowboy coder, then, Yee Haw!

      I could say the same thing to you. Maybe you’re too lazy to actually write direct JS code, so you try to look smarter by learning an abstract layer on top of a perfectly fine language (js) not understanding that you’re actually bloating your codebase with unnecessary code therefore reducing performance on your site overall.

      Lesson: Why use a framework when you don’t need to? The code is fine as it is. I built it and it works. Have not hit the proverbial spaghetti code DOM wall in my,… oh… 12+ years coding.

      • http://cheynewallace.com CheyneW

        I’m sorry, but you say you have 12 years of experience and yet you find Angular too difficult? I too have over 10+ years experience, many of which involved building out large web applications for enterprise companies. I resisted the new breed of frameworks until it be came painfully obvious I was being naive about the topic, which is what I think you are doing right now.
        You claim your code “is so well written” you have no need for these frameworks? What a load of self indulgent crap. And I suppose the rest of the world that uses Angular are just a bunch of hopeless hacks who can’t code, yet seem to understand a framework that you find too hard?
        Im sorry, I don’t buy it. You’re free to to bag out Angular, Backbone or Ember all you want but at least provide a solid case. “Its too hard to learn and my code is already perfect” is just crap.

        • George

          Thanks for your reply. It’s just that in my experience, I have never needed to throw bloatware on top of my code to make it more efficient. My sites load under 2 seconds, most of which under 1 second, and that’s what matters to me. My turnaround time for code is usually in a few minutes, not a few days to wait for some release deployment. I’m just asking the community to explain why use an abstract layer on top of something that already works? JS is fine as it is.

          My question to you is… What’s going to happen when too many people get their hands on the angular js implementation you have now and muck up the code? Are you going to try to fix it by throwing another layer of abstraction on top of that?

          Can’t you honestly realize that it comes down to not what tools you use, but how you use the tools you already have? Browsers don’t understand angular, or jQuery. You need additional libraries on top of your code to make it work. Browsers understand JS. It’s that simple. Why add complexity? I’ll tell you why… because someone thought it was a good idea to layer crappy code with some icing on top. And that icing? You got it… angularjs.

          • Blake Acheson

            George. It sounds like you had good intentions here. However, Cheyne is dead on. I don’t mean to sound blunt but you are simply a hobbyist at this point. I can can almost see the developers in this thread tearing their hair out trying to get through your antiquated mindset. The web has passed you by. You have and will fail long before AngularJS.

            I mean come on … are you seriously arguing against unit testing?

        • George

          Of course I write perfect code. At least I try to. I’m not going to lie about it and say that I suck. I try to perfect my skills, apparently, unlike you guys who will find other ways to bloat your code instead of focusing on the currently existing code and making that better.

          • http://konscript.com Søren Louv-Jansen

            “Of course I write perfect code”
            Nobody writes perfect code. We all make mistakes. Tests will help you catch these errors without having to go through the application manually, which can be very time-consuming for big applications with complex flows. More importantly, unit tests will ensure that your code is de-coupled, and will work as documentation for the next dev, so he/she can easily see the intention(s) of a method.

        • http://cheynewallace.com/ Cheyne

          Hilarious. George, I think you forget that you have your portfolio listed on this website. You and I have very different definitions of what constitutes a large website or “perfect” code. You clearly do not have experience on large scale websites based on the listing of toy websites iv seen.
          You and I are talking about different worlds i’m afraid.
          I just read another post you wrote that says your code needs no tests because its so good.
          Again .. Just hilarious, you clearly don’t understand why testing in done either and just gave another insight into your level of professionalism. I feel sorry for your work mates.
          That line would get you fired in most large development houses, I would pay money to see the reaction of a manager when you tell him you don’t need to write tests, hah.
          I have no idea who is hiring you, but you should hang on to that job. I would never hire anyone with your attitude towards new technology and delusion about his own perfection. Its fine to dislike frameworks or abstraction, but the other things you’ve said here have pretty much discredited your self and dug your own hole. You should also remember, at some stage you probably resisted, but then eventually adopted jQuery, an abstraction over javascript, now it’s your tool of choice. Do you really think its going to be that way for ever now? Are you going to be the last man on earth still writing jQuery apps in 20 years? Pull your head out of the sand, there is a world of new more powerful “jQuery like” tools out there, you’re just too stubborn to see it.

          • George

            Interesting reply how you try to belittle someone who has a different view than you. And even after I’ve explained why I do what I do, you fail to see those points. Just cherry pick what you’d like. I don’t mind it. You can live in your own world of happiness. That’s fine with me.

            One question for you though. How can I list large scaled enterprise applications that are only accessible through an intranet? You’re a bright one aren’t you? I do have an awesome job with a small enough company. We’ve realized that to keep a site going, you don’t need a team of 1000 developers all not knowing what they’re doing. You just need a few good ones that know what they’re doing. I don’t know how much clearer I can be that what we’re doing works and has worked for years. No need to change or add anything. We get what we need. Fast responses, light loads, happy customers and clients.

            As far as your jQuery comment… I adapted it very soon after it came out because it was the same tool I was building for my sites. A lot of developers back then had a similar library. And a lot of them had crap. jQuery just had similar features and I really liked the. And I’ve used it since, for over a decade. It has stood the test of time for us.

            Do you remember another complex and bloated and hard to understand library, oh… I don’t know… called prototype js? mootools? Not every new thing that comes out is gold, friend. You need to really study what comes out and test it yourself and see if it is better for you or not before you jump into it. We don’t need to re-invent the wheel to make a good application work.

            jQuery was already similar to what we were building, so it was much easier to adapt it. jQuery has proven itself over the years to be the top used library. It should be obvious that it makes sense to use it.

            You seem to like bashing me a lot more than debating my points. Could you knock it off please and show a bit of professionalism on your end? Thanks.

          • George

            And yes, the code is perfect. We’ve tested it over and over against any other methods, formats, frameworks, what have you… It doesn’t get better than what it is. I wish you could see it. It’s beautiful. It’s like Neo in the Matrix. It just makes sense! It’s like the first time Steve Jobs saw his mac up on a stage. It was perfect! It made sense to him, and apparently to many, many people that agreed with him. We’ve reached the point of reusing the way we write code to meet any size website or wep application. You give me the task and we can make it work. And when you look at it, it’s so simple and just makes sense. It’s crazy! I’m telling you. And we’re not using anything outside of a LAMP stack. Apache, Core PHP, MySQLi commands written inside the php files, and templates also written in PHP and HTML. It’s perfect! I can’t describe it any other way. And we’re developing a way to translate jQuery back to JS upon file save, or an IDE plugin. That’s our last step to get rid of jQuery on the client side. So, back to JS. This way, the client isn’t bloated with crap either. I know it’s hard to believe for someone who has been lied to about coding practices all these years… but believe me… it’s not only possible, it’s reality. It’s too bad you’re too stubborn to even try to understand it.

          • http://cheynewallace.com/ Cheyne

            Sorry George, my intent was never to belittle you. You caught me before my morning coffee today and from what’s been said, it’s clear we work in different worlds. I think we’ve both said everything that we needed to. Feel free to delete these messages if you don’t want them on your blog.

          • George

            This, I agree with you. We work in different environments. What I’ve written here is why things work or don’t work for me, not for everyone else. But, I do see that there’s a 50/50 split between the two groups. That’s a lot of people on either side of the fence.

            Haha about the coffee bit… Fortunately, I had mine earlier.

            If I delete any message, it defeats the purpose of commenting. It’s a free for all blog. I actually thank you for your input. I definitely heard what you were trying to get across.

            Cheers!

          • http://cheynewallace.com/ Cheyne

            Haha, well you’re very welcome. Who doesn’t like good internet banter, right?

            Cheers George

      • Guest

        Tell us about how you write tests for your code. How do you handle testing in isolation and mock your dependencies? What tools do you use for providing test data?

        • George

          That’s the beauty of the code I write. No tests necessary. I have multi tier environments set up that I test throughout myself. If the site doesn’t break, it works. I like keeping things simple, if you haven’t noticed.

          • Ag ibragimov

            Hahaha… “No tests necessary”. I am laughing at your face, Sir!

          • http://GlassOcean.net/ Perry Butler

            You must mean writing unit tests, which act like training wheels to help preserve bad code and bad architecture one step at a time, because as long as it “works” then that’s good enough right? Wrong, your architecture should be modular enough to allow re-factoring (improvements) without breaking several other parts of the code or making things so ambiguously difficult to debug. Make a change, test it for real, stuff might break, fix it; you now have a working feature or modification without the unit test bloat and time waste. Of course there are reasons to use unit testing, but for the majority of projects it’s overkill. No reason to laugh.

          • George

            My point was exactly the same.

          • Ag ibragimov

            You like keeping things simple? Then keep them simple. Use angular.js and stop manipulating DOM elements imperatively from javascript where it’s possible to do it declaratively.
            You don’t go to buy a tuna sandwich and ask the guy to make you a meal between two slices of rye bread that consists of mashed meat of atlantic bluefin tuna, condiment creamy white sauce, with melted product of coagulation of milk protein on top.

          • Jorge Baroudi

            hahahahahaha best answer EVER!

            I will have to say i love angularjs and have pass on those incredible learning curves (not yet in the “Best…Framework…Ever…” point but close)… I think it is ok to keep pushing forward and learn… and i respect jquery too for giving us, developers, a great way to deal with (@ the time) complex javascript…. so, i don’t see the problem, neither the point of this article… although, this bitching about things what has make us, developers, rethink every framework and build something cleaner and concise… so yes… angularjs is to jquery what jquery was to javascripot in my most humble opinion…. Maybe Polymers will be for angularjs their next step and then so on ’till… i don’t know…. 42

          • Ag ibragimov

            Unit testing is important and essential part of any system. It’s like a climber’s safety gear. Yes, good climber can do without it and may in fact climb faster and better. Misusing the harness or choosing wrong carabiner though may result in failure. People always respect reckless climbers, but common sense tells you that one always have to check harness and should neither completely trust yourself nor the rope.
            You may not use unit tests but your system should be designed the way that at any point you could implement some. Using unit tests (properly) and knowing how to design testable systems is very beneficial and that’s why it makes angular so awesome, because it’s been built with testability in mind.
            I am not saying that unit tests can completely replace manual QA, no. But in large projects exposed to millions of users manual testing is never enough and even an army of QA testers can possibly miss something. For that reason it’s usually always a good idea to have some automated end-to-end tests as well. Also many times I was in a situation where unit tests helped me to speed up the development, instead of waiting for other parts of the system to “kick-off” I could easily mock them up in a one-time, temporary test. Otherwise I would have to manually click through elements or do something else in order to see how the thing would interact.

          • Ag ibragimov

            My favorite quote of Michael Feathers: “Code without tests is bad code. It doesn’t matter how well written it is; it doesn’t matter how pretty or object-oriented or well-encapsulated it is. With tests, we can change the behavior of our code quickly and verifiably. Without them, we really don’t know if our code is getting better or worse.”

          • http://GlassOcean.net/ Perry Butler

            Fair enough, here are a few more quotes then:

            “Good unit tests reduce bugs. But so does good production code.”

            “Unit tests are mediocre for anything database-driven, where often the only way to verify correctness is to use production data and verify the results”

            “It’s a kind of crutch because it reduces the amount of thinking you have to do—or at least codifies the thinking.”

            “The problem is that the unit tests are written by the same programmer who wrote the function, to the same set of assumptions and with the same level of skill.”

            “Unit tests only prove that the code works for the specific inputs/outputs that the programmer has already considered. For experienced developers, virtually all bugs occur in the edge cases that aren’t covered by unit tests.”

            “A test is only as good as the person that wrote it.”

            “For my company, time constraints and “just get it done” attitude are the biggest deterrents for doing unit testing. Also, the places where our systems fail tend to be more at the integration level (services, database accesses, complex queries that require specific data for testing), not the unit level.”

            “Junior developers have relatively low chances to have such influence, though. Thus, whether a company is a proponent of the unit testing depends on whether they have a senior developer or architect that is an advocate of unit testing.”

            “If you are writing prototype software, that has an uncertain commercial future, then there is a pay off to be had between having code quickly, now, that works sufficiently well versus having unit tested code in 2 weeks that works better.”

            “Unit tests do nothing to expose architectural flaws, which are the most expensive ones to actually fix (assuming the requirements are correctly defined).”

            “I think unit tests ought to revolve around the complexity of a task, as well as whether they’re going to pay off. There’s no sense in writing extra code that isn’t going to get used.”

          • George

            Then, who’s going to write the code to test the test code?

    • Modulo m

      Frameworks are for bums!

  • sgtpep

    Developing of comparable web applications without using tools like Angular is much more difficult. So it worth its learning curve, until a lot of fundamental things in web platform get better.

  • ivanfioravanti

    Difficult??? Like anything else you don’t know. Was it easy reading when you didn’t know how to do it? It has a learning curve, but once mastered is pure power.

  • Callum Vass

    What a poorly written article but thankfully the comments redeem the article by showing more common sense than the author. I hope new developers or developers new to angular read the comments before reading this article..

    • http://marcellusmiles.com Marcellus Miles

      Because one should be persuaded by the masses instead of the few or one? Too much of that logic these days. Read them both and let the reader decide for themselves. I’m not arguing using Angular or not, but I’ve seen these trains before in the web app development community and many never make it to the next station (however, I do believe Angular will do well in it’s space).

  • Lauener

    Have a Look at https://moot.it/riotjs/ Perhaps this is the architecture the author is searching for.

  • Normalised

    for me angular + coffescript is the only thing that has made browser development anywhere near enjoyable. Sure angular is difficult to learn in places and the naming choices could have been better as pointed out by smsohan, but once you get the hang of it, it’s much better in terms of structure, encouraging functional decomposition and hence maintainability.

    Like most development the choice of libraries you use within the stack can greatly help, to get the best out of angular it helps to take the term ‘framework’ for what it means, it wont solve all of your problems but the ones its there for can be solved quite elegantly.
    It might help to take a look at something like Yeoman : http://yeoman.io/ which gives you a nice way to setup angular projects along with the other tools and libraries that complement the framework.
    I’d recommend paying particular attention to learning how to use promises and also underscore / lodash.
    Promises for dealing with data transport, lodash for data manipulation then you have angular for consuming and presenting the data.

    If you are used to other environments where concepts like Dependency Injection, factories, services etc.. are quite normal then i’d thoroughly recommend angular as a way to take away the pain of browser development. Sure it’s worth knowing some jQuery but I find myself using it less and less every day because the apps im involved in are not so much about the DOM and how to manipulate it but they’re all about the data. Most of the code knows nothing of the presentation layer and nor should it.

    Is learning angular difficult? in some ways it is, but are the rewards worth it? for any kind of data-centric app absolutely.

  • Robert Montesano

    Your right the learning curve is horrible and the documentation is unwelcoming, but I prefer angular for large scale web apps and jquery for a basic website build. Angular does use jqlite.

  • Verikono

    I think PrototypeJS didn’t fail but rather the idea of extending native prototypes in the DOM seemed like a good idea until those implementations needed to change (Either through stardardisatoin or vendor implementation); the idea was a good one but counterproductive ultimately to enable javascript to evolve.

  • blueshoes

    I am just now learning AngularJS. I am finding the book Pro AngularJS by Adam Freeman to be an excellent way to learn it. As to comparing AngularJS to Jquery or anything else, I do not know of anything other than Flash or SilverLight that supports 1-way and 2-way data binding and rich controls, which I think is practically a necessity for single-page RIAs. I am guessing that AngularJS is a good solution until HTML5 (or whatever it becomes) evolves to have the power of Flash and SilverLight apps, both of which were ahead of their time and have been mostly rejected because of that (and Steve Jobs). I think AngularJS will be around until the needs it meets are available in some better way.

  • Voice Of Saruman

    I’m late to this post’s party, but I found Angular utterly intuitive, though it is (for the best IMO) a real shift in thinking away from jQuery (and pre-jQuery) style thinking. Maybe there’s a steeper learning curve than jQuery, but it’s apples and oranges. The idea of building a single page web application with Backbone/jQuery is utterly wretched and unthinkable to me now after building one with Angular.

    • George

      How can something be utterly intuitive and have a steep learning curve? If it’s intuitive, it should not need any learning, or minimal learning.

      • Voice Of Saruman

        Well, I said “steeper” learning curve, and that should go without saying, because Angular is made for building complex single page applications, and pretty much anybody can learn to use jQuery to find a DOM element and turn it blue. As I said, apples and oranges. I didn’t think we’d have to split hairs on this, but “intuitive” is a relative term. Programming can be intuitive in a different way than learning how to use an iPhone is intuitive. I’m talking about the (perhaps subjective but self-evident) feeling while learning something that “this idea makes sense” vs. “huh, that idea doesn’t make sense.”

        • George

          So then, does it come down to a comfort level? Use what you feel you’re more comfortable and knowledgeable in? I basically created my own ajax controller that I use constantly without having to change anything in jQuery / JS. Is that something Angular can do out of the box?

          I think in the end, both are layers of abstraction, and until someone can show me actual examples of code that will show me which one is more performant and easy to implement, I’d have to stick to what I feel is the right tool for me.

          • Voice Of Saruman

            That’s fair, so I don’t want to belabor the argument, but I think we would also agree that you choose a tool based on the job at hand, not purely based on comfort. There’s no doubt that Angular isn’t right for every situation. I suppose I just had a different experience than you did with it. I might be missing something re: your ajax comment, but $http is a core service (out-of-the-box) in Angular that is very easy to use to handle AJAX and its responses. It’s incredibly quick to spin up an application that handles routing and related AJAX requests that return data back to the view scope, or external API requests with deferred promises and such. Everything just…seems to work. I guess that’s abstraction, but it’s welcome for me.

  • Jeremy Tellier

    This article is so spot on with my experience I would have thought I wrote it myself. Time and time again I have worked projects where management or architects dictate a micromanagement framework in order to maintain some semblance of standards but if you have been in the industry long enough to track some of these projects long tails we find they grow so large that the Micromanagement framework becomes something that makes simplicity, extremely complicated, simply for the “benefit” of having repeatability….In fact what you have is a slew of boilerplate, useless, code and find your engineers copying and pasting hundreds on top of hundreds of lines of code for no reason other than “that is what the framework requires”…. Great Article!

    Remember ActionScript?… Wonder how everyone with Cairngorm, Swiz, RobotLegs, and Mate projects are doing if they have to be maintained.

    • Jeremy Tellier

      I just read through your comments section and noticed a theme of people questioning your IQ rather than making valid points…. To that I say I was once in R&D where my entire job was simply to prototype one framework versus another…. and what I found is that people who tended to like frameworks similar to how Angular works, are those that came from very specific background, namely Rails or Java, and they create micro frameworks to try and mimic what they are used to…. My example with Flex above was huge with this, Java developers rarely truly got the execution of code along a timeline like executing on a video clip… This is where you had to get your mindset with Flex, but instead we see people making “JavaBean” type functionality inside of ActionScript so that they would feel comfortable operating in unfamiliar territory….. The people opposed to Frameworks like this are used to the “lean” operation of web development and understand JavaScript and how it should be written… We do not need our code to mimic another to be comfortable…. I write in Java, JavaScript, ActionScript, C, C#, PHP, all over in my days and I would consider my ability to not impose the rules of one technology, onto another, a virtue rather than a sin…. I have been known to Pascal Case my JavaScript after writing a C# Api though and I know that can drive you camelCasers crazy. 😉

  • Brdavs

    This is your second rave about angular and it’s shortcomings.
    I can see that you still do not understand angular.
    Don McLean’s Vincent (Starry starry night) comes to mind :)

  • scorcher14

    Thanks for this article. Nice to know that Angular is not just one big love fest. We’ve been using AngularJS on large scale projects for over a year. The good is that the code is easy to navigate due to good structure, and that helps with maintenance. The bad is that for us, even after months of experience, is that it takes several times longer to do anything. And we’ve had more team meetings than I can count that started with, “Well, I can’t do that really desirable thing for the end user because it’s too hard in Angular.” At first, I assumed it was the learning curve. Now, I firmly believe it’s the nature of the beast. The tipping point for me was the need to understand the meaning of “transclude.” WTF. Knowing it might make you one of the cool kids, but it’s about as far from intuitive as one can possibly get. Ultimately, the lost productivity and extra expense of AngularJS combined with the frequent inability to create the desired UX for our customers is slowly driving us to consider alternatives.

  • jsebring

    AngularJS already succeeded just as jQuery has.

    AngularJS has completely accomplished what it had to do and is now icing on the cake as it continues. The fact that AngularJS IS the most popular JavaScript application framework by a magnitudes is “enough said”. If something else replaces Angular tomorrow, it already succeeded because programming frameworks come and go as technology moves pretty darn fast these days. Not sure what failure means to you. I would argue that if someone is not capable of figuring out Angular, they would be incapable of making any web app of sufficient complexity. AngularJS actually makes things much simpler in that regard. This is coming from very stubborn, roll-your-own solution type of personality in which I’ve created so many things from scratch, then finally coming over to jQuery and now AngularJS after overwhelming praise in the community.

  • Kaue Machado

    Simply put? jQuery is ok and enough for you because you just need a tool to help you build websites. jQuery fails badly for all of us who needs to build complex and scalable web applications. Honestly, you should really learn something before saying it will fail, instead of saying it will fail because you failed to learn it =)

    PS: Although, you are right, AngularJS is very hard, but it pays off

  • Cool dude

    You’ve got the whole picture wrong buddy. jQuery is a set of utility functions and helpers on top of DOM to make the life of developers easier working with different browsers. Angular on the other hand is an application framework and promises you a testable and structured front-end application. If you would have ever been through designing of architecture of a huge client-side application, you would have known that comparing jQuery with Angualr is the most ridiculous thing to do.

  • George

    Ok, so call me simple. I noticed that w3schools.com has a tutorial to follow on angular. I will start there. If things go well, I will post back to let you know how it’s going.

  • hardywu

    With little experience in front-end dev before using Angular, my words may not count much. But I found Angular is easier to use than jQuery. The codes are more intuitive and easier to maintain when written in Angular.

  • George

    I’ve updated the post with clear examples as to why I theorize that angularjs will fail. Please read the update before making any more claims about how “awesome” angularjs is. Thank you!

    • Fedor

      I get where you’re coming from. There’s an overdose of flavor of the month frameworks for the past few years and most of them are just plain failures at making a case for themselves. Would AngularJS be anywhere without Google backing it? Hell no, it’s a damn mess, but there’s no way to fight fanboys. It takes balls to come out and just say what you think. I dig that shit. Things are getting over-complicated these days, sometimes pure php and js is the best solution.

      • George

        Right on! It’s like a freakin religion.

  • albertpeir

    Angular is a language for creating code-scalable and maintainable web applications. It is good for rich interaction web, that’s where you really find it useful. Jquery is a hack-and-go language that has never aimed to simplify complex problems like code maintainability or reusability on the web, where AngularJS is a quite good performer. Your article is fully based in your own experience which is clearly limited to simple websites with a low need for code reusability, complex performance optimizations (page load), or rich interaction like very informative forms or partial template caching.

    • George

      Like my old systems developer teacher told me. If it ain’t written, it don’t exist. Show me some code. Show me how this complex code can be good. Convince me, because right now, I’m not convinced. And I tried! Believe me, I tried to see how it’s better. Show me some examples. Real world examples. All I hear all the time is “it’s good, it’s great for complex things”. Demonstrate. I demo’d above how angular is useless when it comes to 99% of the websites out there.

      And, apparently, this “hack and go” tool is more popular than angular. The numbers speak for themselves. Check out this article that I agree with as well on many levels:

      https://muut.com/blog/technology/frameworkless-javascript.html

      The problem is that no one has shown any example code to prove their point.

      While I do agree that we’re talking about two different things, why are so many angular fans on this article posting how jquery is not as good as angular?

      • albertpeir

        I never comment in blogs and the reason I did here is I thought the arguments given by others were not spot on the real deal. I really dig your comment. I’ve been there many times. I’ve been wrong many times: e.g. I chose Backbone.js to implement a social network single-page app and DIED. Consider these points:

        1) FORMS & Data-binding: The core of the web.
        2) CORSS: If you have an API, you need to jump this fence too.
        3) ROUTING: You’ve got to care for search engines and user friendliness right?
        4) FLEXIBILITY: Some frameworks don’t give you a choice, by design (it’s a pain otherwise).
        5-pro-point) SOFT DESIGN: If you are building an app you’re probably building something useful. Useful things can most times be called tools. Tools evolve.
        6-CTO-point) FRAMEWORK: It doesn’t matter how good or bad your code is, sometimes just having 30 people doing things in sort of the same way simply helps more than everyone just patching away.

        If you DON’T care about any of these 6 points. Then you’re done. Go with jQuery and be happy. Angular is not for you. Angular addresses these points, some more than others.

        If you DO care let’s jump to the code excercises for you:

        1) FORMS: Implement exactly the functionality of this https://twitter.com/signup with jQuery, then with AngularJS (https://docs.angularjs.org/guide/forms)
        2) CORSS: Implement a call from domain mywebsite.com to api.mywebsite.com setting some custom authentication headers and XSRF using active preflight responses (HTTP OPTIONS). With jQuery and then with AngularJS.
        3) ROUTING: Implement a two inner-page switcher with custom routes with jQuery (and no Twitter Bootstrap eh!). Again with jQuery and then with AngularJS.
        4) FLEXIBILITY: Implement a single-page app bootstrap with any lib/framework of your choice (emberjs, backbonejs,..) and use a minimum of 15 3rd party libraries and a build flow. Then split some functionality into a separate bootstrap file. Then try with AngularJS.
        5) SOFT DESIGN: Build an app with some features, then add a lot more features. Then add many more features. Then create another app that uses 90% of the created features. Do this in jQUery, then do it properly in AngularJS.
        6) FRAMEWORK: Hire someone who sits 60K Km away. Setup a hangouts and explain requirements of a new website, send him links to examples and some wireframes. Have him code it. Do this in JQuery and AngularJS. Then compare in base to this: code Testability, Reusability, Quality, Portability, Integration. And compare actual final quality.

        For all these points, you might not get always better results with AngularJS. But anyone reading this who’s been where I’ve been will dig my answer. My question to you is: do you care about these? If not, then accept you can’t just state “Angular will fail” demonstrating “Angular is not for every website”. I agree, angular is not for every website. But has a barrier so low to get started (guess why?) and devs are getting so sweetened by the charms and successes of “apps” that it is becoming a trend.

        Talking trends, let’s look at your picture: is it just me or looks like jQuery stopped growing since AngularJS came out?

        PS: This graph was the final straw that made me decide to try AngularJS a week ago. Maybe you and me see life differently, right? 😉

  • simon

    Just had to say your first code example is a terrible comparison. First of all both do something very different (jquery code fetches the ajax and puts it in the DOM, while the angular code creates a function on the scope which allows fetching and placing the results in the scope). Secondly, the angular code can be written far more efficient (7 lines 179 characters), which is less then tje jquery code.

    Ranting is good, but do so objectively, not biased.

    • George

      I keep asking anyone to show me how to duplicate the functionality using angualr, and still no example.

      • simon

        // create get request with promise directly following it
        $http.get(“/ajax.php”).then(function(data){
        // on succes, bind data to a variable, which can be used in html like
        //
        $scope.someDomModel = data;
        }, function(error){
        // on error, alert
        alert(error);
        });

        Exact same behavior as jquery code :)

      • Hans

        Which functionality, specifically? I’m fairly sure you just misunderstood AngularJS and tried to use it in the exact same manner that you use jQuery. They are fundamentally different and have fundamentally different approaches of handling data vs. presentation. If you gave a nice, basic example in jQuery to be replicated in Angular, I’d be willing to do it and comment it enough to make it understandable to you.

  • GuillaumeBalaine

    I stopped at the first example, are you trolling ? Where is your click binding for jQuery (that you are doing with angular) ? Also you could save a line of code in Angular by setting the property doClick during the object initialization.

    If your point is that you need to actually be a good developer to use AngularJS, I completely agree with you. And I’m fortunate that it’s the case. I used jQuery a few years ago when I was ignorant about the newer ways and HTML5, now I use Angular because the future is Data Binding, Components, Polymer, Shadow DOM etc. Not dumping all your code at the bottom of the page and writing 2000 lines of code to append a div to a textarea.

    • George

      Thanks for proving my point that most Angular JS devs are snobby jerks who will belittle anyone “less” than themselves.

      “are you trolling?” What’s that supposed to mean? Even after I specifically asked for help on how to do it. This is the main, fundamental problem. I have to re-configure the way I think in order to understand AngularJS. I have to do everything differently, and instead of showing me how, you take me as a joke.

      “need to actually be a good developer to use AngularJS”… again, saying I’m a bad developer instead of showing me the ropes makes you a complete jerk. How am I even going to even consider learning AngularJS if NO ONE, or NO WEBSITE is willing to teach me this magical piece of software that I just can’t seem to be intelligent enough to grasp.

      I guess I should just bow down to you, your magesty, since you’re so right, and I’m so wrong, oh, grand master of all that is code! May I call you Neo now?

      I’m getting sick of this kind of attitude from counter-productive developers who think they’re way the hell up there on their throne, verbally beating the snot out of anyone who thinks different than them instead of showing them the way. You’re no Jedi master, you’re a fucking asshole!

      Your intelligence would show more if you could make a simple minded idiot such as myself understand the wonderful world of AngularJS, and have some damn tact next time you post such arrogant crap!

      How do you like THEM apples? Huh?

      • GuillaumeBalaine

        I don’t think you are stupid, just misguided. Your post is like saying “Hey, C++ is too complicated, let’s just stick to C shall we”

        • George

          Misguided? Sounds like you’re trying to convert me to a religion. C++ has its place. As does C. What I’m saying is that for anything that I’ve ever done in the past, I never considered it difficult managing jQuery at an enterprise level application. Adding angular for the sake of sounding off smarter to managers is not the best solution. Creating an application, no matter the language, has to be done properly. Adding angular to a team on non angular users is also not the best solution. And not once have you answered my question… Can you show me examples that could solve the above mentioned issue? Everyone likes to give their opinions, but when it comes time to try to understand, no one steps in. Not only to understand angular, but to understand why I’d want to use angular over jQ… Fan boys will be fan boys, I suppose.

      • http://konscript.com Søren Louv-Jansen

        Hi George,

        I think it is great you take the time to write a blog posts, but to be taken seriously, you should have done your homework first.

        I think this comment from you, sums it all up: “How am I even going to even consider learning AngularJS if NO ONE, or NO WEBSITE is willing to teach me this magical piece of software that I just can’t seem to be intelligent enough to grasp.”

        If you wanted help understanding Angular, you should go to StackOverflow and ask a specific question you have with Angular, instead of writing this ill-informed blog post.

        Also, your examples are not very good – when I read them I legitimately thought you were trolling (reminded me of this: http://i.stack.imgur.com/ssRUr.gif)

        Please do as Saga Riihinen and GuillaumeBalaine say, and update the examples accordingly. The angular part is overly complex – if you are not trolling, you clearly need to read up on Angular.

      • Dave Newton

        Guillaume didn’t say you were a bad developer, he said that you need to be a good developer to use AngularJS. I think that goes without saying for a library or framework of any complexity. I think jQuery has a lower barrier of entry because it *does* make simple things very simple. AngularJS does too. AngularJS requires a different mindset as soon as you go beyond toy examples, whereas jQuery remains familiar regardless of application complexity.

        Unfortunately, that last point is what makes large, complicated apps a complete *mess* in jQuery, regardless of the developer’s skill level. jQuery-only simply does not scale past relatively simple manipulation. There are *reasons* client-side frameworks, not just libraries, have become the de facto standard for apps of any real size or complexity.

        Your response to Guillaume is *way* out of proportion. You don’t want to use AngularJS, fine. You think you can code equivalent apps and have them be more understandable, testable, extensible, fine–perhaps you’re even right. I’m highly skeptical, and I’m not an AngularJS developer–but I *am* a jQuery developer, and have enough experience to understand it has *very* real limitations, as well as sweet spots. SPAs are *not* jQuery’s sweet spot, nor are SPAs what jQuery is designed to deal with. jQuery was built to make DOM manipulation trivial, and to clean up/abstract Ajax. That’s about it. It does that really well.

        Your name-calling rant makes you look like a peeved child who’s butt-hurt the client-side development world is leaving you behind–which it is, apparently. He’s right–you *do* seem misguided, or at least unwilling to entertain the notion that some people write complicated apps for which jQuery is unsuited for, impractical for, and perhaps most importantly, not designed for.

    • LeeJS

      I stopped reading your comment at ‘trolling’.

  • Saga Riihinen

    It appears you are not that experienced with angular. Just your example of an ajax-call shows this. And the fact that you constantly talk about DOM-manipulation. Anyways, because it was the first example and it was so obviously flawed/unnecessarily complex and verbose, here’s a more compact version of the http-call in angular:

    $scope.myData = {};
    $scope.myData.doClick = function (item, event) {
    $http.get(“/ajax.php”)
    .success(function(data) {
    $scope.myData= data;
    })
    .error(function() {
    alert(“AJAX failed!”);
    });
    }

    jQuery is great for manipulating the DOM and the angular app I’m developing at the moment uses jQuery where applicable. But jQuery and vanilla javascript will not hold together an app that consists at the moment of 2000 lines of code – and we’ve only just begun. Angularjs is not concerned with the petty details of DOM-manipulation (it does, however, handle http-calls in a very nice way, including a ready-made mock for testing), it is concerned with separation of concerns, business logic, data-models… jQuery is a LIBRARY to do fancy visual tricks. AngularJS is a “backend” for the frontend, if you don’t mind me saying so. What you are doing is like comparing java.swing to Java EE.

    • http://scottbmitchell.net Scott Mitchell

      Sorry I know that you said this 3 months ago but thinking 2000 lines is too big for jquery and javascript is laughable. I literally just wrote an interface in vanilla js and some jquery over 2 days that has more than 2000 lines and is perfectly maintainable. I have apps that really have more than that. Anyway, the bottom line is that through the simple use of module patterns and dependency resolution you can easily write maintainable code without a heavy framework. That might be why backbone is still used in the js ecosystem even though its considered “1st generation”

  • Paul

    Not sure how you find AngularJS hard? Pretty straight forward framework. Comment about your first comparisons (lines of code), it quite the same logic here as there is only 8 lines of code that compares the Jquery version.

  • disqus_sIrHy9rk2t

    At no point in this article did you sound like a professional web developer. Honest to god you sound like an idiot. I hope for your sake that no prospective employers/clients see this.

    • George

      Thank you for your honest comment. I suppose I forgot to wear my suit and tie to make myself sound more important. 😉

      • disqus_sIrHy9rk2t

        Your response makes almost no sense just like your article. What does putting on a suit and tie have to do with anything? I think you need to give up on web dev and pursue the custodial arts.

        • George

          It’s unfortunate that some people don’t get humor and sarcasm. I thought we were both intelligent beings trying to understand from each other. Oops. I was only half right… And I know which half you think that is. Based on the 50% of the posters on here that not only agree with the article, but also like it, I would have to disagree with you. Well, you know what they say… Think about how “intelligent” the average person is, and realize that half of them are below that.

          Cheers mate. If anything, you are definitely entertaining. And, according to google, so’s this blog post.

          • disqus_sIrHy9rk2t

            Your response is neither witty nor humorous. The 50% of the people that agreed with you are 100% f*&k-tarded. The only people this article could of possibly appealed too are ones that aren’t smart enough to teach themselves a new skill set and adapt with the industry. In about 4-5 years you’ll either be unemployed or doing word pressed sites for the local used car lots.

          • George

            Interesting… calling me names, and claiming that you know what a professional web developer should sound like… And how intelligent… combining two negative words to make another one… probably in hopes to make yourself sound better than everyone else… I admire your creativity, sir. In all honesty, if only two people liked this article, then I’ve done my job to speak my opinion. I really do appreciate everything you wrote because that just gives me insight on who’s visiting my pages.

            It’s one thing to adapt a skill set, and another to jump onto the train that goes nowhere. Yes, Angular will go far for a bit more. Maybe one or two years, but then, when the developers like myself, which make up 50% of the web, apparently, realize that angular is no bueno, they’ll abandon it just like every other popular (in its time of fame) JS library. I re-iterate on what I’ve said. Prototype.js was supposed to be the best and most awesome and righteous library of all. And although it was logical to super thinkers, such as yourself, it failed because it couldn’t appease to majority of developers such as myself.

            When you’re going to finally cave in, or not, and realize that you can do anything with jQuery that you’ve been able to do with angular, and that angular is really just another unnecessary layer of abstraction, I will accept your apology for talking so negatively to one of your fellow web developers that knew better.

            It’s ok. I forgive you.

            Oh, and chill out before your blow an artery, dude.

          • BraveEagle75

            Where do some of these “commenters” come from? I have really enjoyed this discussion as I feel the same as you George. I have never ran into a situation where I thought Angular would actually benefit the types of Web Apps I develop so I don’t use it. I tried Ruby On Rails several years ago and quickly found that there was way too much “magic” that made troubleshooting complex. Same with Symfony framework, it had such a high-lvel of abstraction that it never made sense to use it. I do most of my work in NodeJS nowadays, I love that I have full control of the native language without the unnecessary bloat of another “wrapper”.

          • helloworlder

            The industry doesn’t need developers with this kind of poor attitude. Besides, what’s wrong with doing WordPress sites? I work with MVC PHP frameworks as well as Angular. Building Worpdress sites and plugins is also enjoyable and EXTREMELY lucrative considering the $$$ to time ratio.

    • LeeJS

      And at no point in this comment thread did you not sound like a total prick.

  • stp008

    AngularJS is difficult? Compare it to java or c# which were used before for huge web apps. Good joke. Its the best framework for js and one of the best frameworks among other languages. Its so easy if u undestand whats happening around. Its easy to maintain, test and scale. To do the same things on jquery or simple js u will have to write tonns of YOUR code which will be unmaintainable or too expensivelong to develop. And dont forget that angular’s app is fully ajax driven. And if u want data exchange u can use rest web-service which will return json. Java will suit well for this thing (good documentation, speed etc.). With these two things u can move the earth. If js has the future so angular is its future.

  • Bryan Patrick Coleman

    AngularJS and jQuery are not mutually exclusive. jQuery(in the form of jQlite) is the foundation for AngularJS. You can think of AngularJS an advanced MVC framework in the form of a jQuery plugin. When I first picked up AngularJS, I still coded a fair amount in jQuery… now months later, I can tell you much of what I thought I needed from jQuery is unnecessary when writing in AngularJS. If you find yourself doing a lot of DOM manipulation you are doing it wrong. Leave DOM manipulation for jQuery and let AngularJS do the heavy lifting. If you find yourself doing the same DOM tasks over and over again, write an angular directive and DRY.

  • Thomas Raba

    Ohh yes, will fail… NOT. Thanks god we have Backbone, AngularJS or Ember. Applications with a huge amount of js wrote just with jQuery are the worst nightmare ever. Reading this it seems like backing to 5/6 years ago, when java and php developers were refusing to use MVC commercial frameworks cause them solution were much more “simple”(shit). Then, people learnt. Yeoman, grunt, bower and mv* framework changed the front end developing for the best. Now days also the front end code is tested and solid. When I read stuff like “good old code structured” I’m getting “brrrr shivers” and your example are mainly wrong or bad practice. Learning curve is difficult for any of the js mvc, but try mate, all the people that will work on your code won’t find a mess

  • DaoShen

    I hate to pile on, but this not an either/or scenario. jQuery as a library serves mostly different purposes than Angular as a framework. There is some overlap, but that is only because jQuery and possibly Angular are trying to do too much. Continue to use jQuery where it suits your needs. Where we need help with large applications, single page applications, dependency injection, data-binding, and so on however we need something like Angular or the other frameworks built to solve these issues.

    Note also the new HTML specifications for web components, shadow DOM, and so on. These significantly change how we are solving many of these problems. Angular is changing too as a result.

  • handijk

    I am sorry to say but you do not need dom manipulation in angular, whenever you do need it you are doing something wrong.
    I have never needed dom manipulation in any angular app and the only times i used it was because i did not understand angular completely. It does has soms learning curve, but in the end angular apps are soooo much easier to write compared to jquery.

    • George

      Ok, how do you replace an entire block of HTML without DOM manipulation? Isn’t replacing content inside curly brackets DOM manipulation? Aren’t you essentially replacing some sort of text or HTML, therefore manipulating DOM elements?

      • handijk

        Dom manipulation has been abstracted away with angularjs, sure there is dom manipulation going on.

        $(‘#title’).text(‘newtitle’);
        $(‘#text’).text(‘newtext’);

        Using jquery i would be updating the text inside the element (manipulating the dom) by selecting the node with some selector.

        Using angular i update the title and text property on the current scope.

        $scope.title = ‘newtitle’;
        $scope.text = ‘newtext’;

        Angularjs brings some of the goodness that Web Components will bring to the web platform. I still use jquery (angularjs uses jquery also) but for large heavy javascript based apps using angularjs has a lot of advantages.

      • handijk

        Yes there is dom manipulation going on, but it is abstracted away and i don’t need to write any dom manipulations. Every dom manipulation i have ever written in angular in my rookie days i have replaced with a much nicer and cleaner solution when i was more experienced with it.
        It has some learning curve…

      • handijk

        OK, i am replying here for the third time…
        Manipulating the dom is abstracted in angular, that is exactly why development time for big javascript driven apps is reduced significantly compared to jquery. Angular still uses a stripped down version of jquery to manage dom manipulation.

        I would only have to bind an items array to the current scope, compare this to jquery where i would have to create a function to add/remove/replace nodes.

      • handijk

        test

        • George

          I see the comments just fine.

  • Will

    Wow. I can’t even… this is just bad code.

    • George

      What makes this bad code? Please elaborate. Or is this just your opinion? Which I’d be happy to hear as well.

      • Will

        Well, for instance, there’s a DOM manipulation in response to an Ajax response triggered by an event listener. Can you get more tightly coupled than that? Nothing is reusable, no way to deregister events, no encapsulation, heavy global pollution. Need I go on?

        Not to mention the fact that he skims AngularJS documentation, cherry picks stack overflow questions for his purpose, dismisses directives because he doesn’t understand WHY you should only use jQuery there.

        I mean this article is not even “this is good, this is bad about angular.”. Instead, this article is constant angular bashing, disingenuous statements and poor research. Plus the code examples are amateur at best.

        Also, don’t you just love how he prefers jquery for Ajax and DOM manipulation. Too bad the majority of jquery has nothing to do with that but you have to load it anyway. No wonder this guy love tight coupling.

        But go ahead, dismiss my opinion because “That’s, like, your opinion man”.

        PS: He also knows very well that jquery and angular perform different things and do not compete. You can use angular with or without jquery and vice-versa. He even admits it but continues with the comparison anyway… One is a library and one is a framework. They don’t compete, period. This guy is just writing click bait articles. Shame.

        • George

          Thanks for the reply. I guess you caught onto my “click bait”, even though, writing this article has taught me quite a bit about what angular is supposed to be. I understand now what the phenomena of “angular vs jquery” means. In the end it’s about the fact that most of my work has been done on graphically inclined websites rather than full page number crunching applications, with a few exceptions for my own personal projects.

          There is a “preference” factor here. There’s a saying I learned well in my past. The shortest road is the one best known. Do you not agree? If it’s easier for me to use my “amateur / bad” code to develop MY applications, having done so for the past 1.5 years, having almost instant turn around time, with the ability to re-develop an entire application page (sap) within two days, not using any angular.

          As far as using a “small” part of jQuery is concerned, it has what I need. Looking at its API, most of it is just DOM manipulation and AJAX. add, addBack, addClass, after, ajaxComplete, ajax[FUNC], animate, append, attr, before, css, fadeOut, fadeIn, .get, post, html, ajax. Oh, and I forgot to mention selectors and events, which I also heavily use from jQuery. Yes, at times I use functions to sort array, check arrays, etc. I would say I use about 75%-80% of jQuery, and it does most of my JS work for me. I’m used to it, I’ve used it for years and years, etc. etc…

          I suppose if one day I’ll decide to really learn more angular, I will, but until then, angular just doesn’t seem to do anything different for me. It won’t help me improve anything on my sites. It’s not like I need angular to do things that jQuery can’t already. So, until later, because there’s no need for angular, why bother using it?

          Again, this is my experience, and my basic understanding of 12 years developing websites.

          Cheers!

          • Will

            Thanks for the quick response! I think I understand where you’re coming from and why you don’t like AngularJS very much. I appreciate the commentary.

            A few things that I feel were misunderstood.

            It doesn’t matter that you use 75% of jquery. The point is you don’t have a choice, you need to load all of it. A 10kb website with 10 lines of code needs 100kb of jquery. Bad!

            This is because jquery is out of date. It’s not modular or testable. And it’s grown out of control, it’s way to huge for what it needs to do! Plus the simplest jquery function call can have an immense overhead, degrading performance quickly in large apps.

            The fact that jquery is working hard to fix these issues today proves that these are serious problems. Newer libraries don’t have this.

            Finally, 12 years of technical experience means nothing in this industry, I don’t know why you keep bringing it up in this thread. Things move too fast. Designing websites in tables and patching IE5.5 are useless skills today.

            Plus jQuery is only 8 years old…

            PS: A person with a horse doesn’t need a car either. But maybe he should give it a go one or twice.

  • handijk

    In angular manipulating the dom is abstracted so instead of adding/removing/replacing dom nodes whenever the content updates you would bind a variable to the scope and whenever this variable gets updated your dom changes accordingly.

    1
    2
    3
    <ul>
    <li ng-repeat="item in items" ng-bind="item.text"></li>
    </ul>

    Looks cool doesn’t it? And descriptive also. The controller code would look like this (using your ajax call).

    1
    2
    3
    4
    5
    6
    7
    function ($scope, $http) {
      $scope.doClick = function (item, event) {
        $scope.items = $http.get("/ajax.php").error(function(data, status, headers, config) {
          alert("AJAX failed!");
        });
      }
    }

    If you could compare this to the code that would be required to make this work in jquery it is pretty obvious abstracting away dom manipulation is more efficiënt for application development.

  • handijk

    Dear George,

    Please stop removing my helpfull comments.

    • George

      Sorry mate, I did not remove or alter any of the comments. I’m not sure what happened. I did receive emails with comments from you. Not sure why I’m not seeing them here.

  • Reto Ryter

    You are looking for a code-example of an app.

    There you go: https://github.com/tastejs/todomvc/tree/master/architecture-examples

    I know it’s only a tiny app, but already here you can see the advantages of Angular over jQuery already now, also you can imagine what happens when the project grows.

    And George, you are talking about bloating the codebase with Angular. From my experience, you will write less code with Angular than with jQuery. Off course, when your site is just having two buttons with a click handler each, there is no need for Angular. But as soon as your application becomes more complex, it makes perfect sense!

    Also an example of “bloat” taken from http://coffeereels.com/ the first website listed in your portfolio.

    Grade F on Make fewer HTTP requests
    This page has 19 external Javascript scripts. Try combining them into one.
    This page has 6 external stylesheets. Try combining them into one.
    This page has 8 external background images. Try combining them with CSS sprites.

    Haters gonna hate…

  • Ciel

    I just read through this at last, and I have a few points to touch on.

    First, the fact that you came back later and updated the article to reflect more research is extremely good, and healthy. This makes it a lot easier to digest the information and assume it is from a more informed source. The ability to have the humility to come back and say “It is not as bad as I thought” is a big thing. Thank you for that.

    Second, you seem to have a slight misconception about what Angular is and isn’t. You’re approaching it from the perspective that Angular is vying for a seat of power, or trying to struggle with jQuery for market share and dominance. But the opposite is actually true. Angular does not try or purport to be a replacement for jQuery – in fact, much of jQuery is built into angular. You can use jQuery without even loading it if you have angular loaded. You are looking at Angular as the full tool box, when in fact it is just an extremely big, customizable power tool that can be upgraded and extended alongside the other tools you have (jQuery)

    Third, you complain about how cumbersome it is to do some things. I do not entirely disagree with this, however I would like to point out that I have over 20 years experience in web design/development and I honestly did not find Angular any harder to pick up than jQuery. Figuring out how to first use jQuery for little trivial things, yeah that was extremely simple and took almost no time at all. But figuring out how to use it for anything more complicated has taken just as long as it took me to make things in Angular.

    Like using any tool, it takes time and investment to do it properly. Angular is powerful, and anything powerful takes a lot of work. jQuery is also very powerful, and it takes a lot of work. You might like to say otherwise, but that is because you look at the investment it would cost you to fully appreciate Angular and then compare it to your present knowledge of jQuery and what you have seen it do. While this is a realistic viewpoint to have as an actual developer, it is not a good perspective as a reviewer.

    If this concept were “Why I do not use Angular”, you would be pretty spot on. The investment you would have to give to fully adopt and implement Angular is pretty severe, especially when you are not unhappy with jQuery. However consider that not all of us are like that.

    I love jQuery, but it has its severe limitations. Despite all you say here, jQuery still follows a procedural code flow methodology, and is still just a wrapper around throwback behavior. That is why it is so powerful, it is not really anything you could not do without it, it just makes everything you could do easier.

    Angular, however, is an entirely different train of thought. And javascript is a difficult language. Despite being the most popular language in the world right now, it is a very hard language to use because of its extremely quirky nature. Angular presents a different approach to wrangling it, and a different viewpoint to getting things done. We deserve to have these alternative approaches.

    We have many ways to write web pages. I can do something in ASP.NET MVC that I never believed I could do in ASP.NET Web Forms. Likewise, I can go back to Web Forms and do some pretty incredible things. I have ASP.NET MVC apps that I have written in the last 3 years that have needed consistent maintenance, and I have a Web Forms app that I wrote 9 years ago that has never needed a single update (‘needed’ is a loose word, here. Bear with me. It runs. And it finishes each task)

    Why should we not have these perspectives with javascript? Why should jQuery be the only way we make a high end application? This debate appeared when MVC frameworks began to become prolific the first time (a very long time ago), and the second time (about 5-6 years ago), and it will appear again in the future. All this means is that javascript is reaching the status of being a first-class language that has as many possible ways to function as other major ones.

    • George

      This was by far one of the best written responses. Not just because you call my update healthy either. Yes, the more I looked into it, the more I learned, but, I’m always skeptical of new technologies as we’ve seen in the past, it’s not always a good idea… rather, most of the time, to jump head into something new before it’s been proven and tested, and approved even by the skeptics.

      In the end, only time will tell how well Angular will fair. Of course, if they take the proactive approach instead of the pushy approach to tell people to think differently, they may have my support soon enough. In all honesty, I did not include jQuery in all of my projects as soon as it became available. I slowly integrated it into one project at a time, learning more about it, using more and more, etc.

      Maybe, soon enough, after I make enough small angular projects, I can start integrating it into some of my SPAs.

      If the angular developers are willing to make angular as easy to use and understand as the jQuery developers did for jQuery, I might even change the title of this article.

      Thanks!

  • http://www.noobmovies.com/ Chris Hawkes

    Dude your font sucks, white on black, what are you thinking? I can barely read this garbage

  • MyGonads

    Also it’s not that hard, thy asp.net webforms if you think this is hard. Nothing is harder than Microsoft’s bullshit because it mostly doesn’t fucking work.

    • toach

      Well that was random… Tough day?

  • http://www.earwicker.com Daniel Earwicker

    Have you tried Knockout.js? It’s the jQuery of two-way binding – really minimal, simple and yet powerful.

    • toach

      I am a big fan of Knockout myself.
      @gbutiri:disqus you may find it to be an interesting library to learn/work with as well as a middle step between jQuery and learning Angular.

  • Rob

    The biggest flaw I find with your rationale is that you’ve actually never built an application with AngularJS. You completely dismiss it and find it difficult because you don’t understand how it works. If all you want to do is manipulate the DOM, then jQuery will work just fine. But if your application handles data, which almost all web apps do, then AngularJS is the right tool for the job.

    I created a fiddle which I illustrates what AngularJS does to help you better understand it’s purpose. No jQuery was written for the app btw.

    http://jsfiddle.net/03c6sj9z/

    I would be interested to see how you could create a simple application like this with jQuery.

  • Your Mom

    you’re a dumbass.

    • jredic

      a coding milf?

  • Phil Merrell

    It sounds like you’re really comfortable with your process and your way of doing things, and that’s awesome. It’s an enviable position to be in. However based on the context of your argument it seems what you are really saying is that the paradigm shift to client-side MVC frameworks will fail, which really seems unlikely.

    Angular, Ember, Backbone and Ext.JS all address a specific problem that has been a knock against JavaScript for years, namely maintainability and the separation of concerns. These frameworks have brought features and concepts to client-side development that other languages have benefited from for years. Angular JS and the like are hard because modern client-side development is hard and the expectations of UX/UI have been raised significantly.

    It sounds like you have addressed this in a way that works for your company. You have a workflow that is tried and true that fits your needs. Maybe your company has its niche and Angular is an overkill. Whatever the reason, to title something, “The Reason Angular JS Will Fail” is downright hyperbolic and short sighted.

    I’m taking a shot in the dark here, but when I read your post it doesn’t read as a rigorous comparison (and frankly comparing the two doesn’t really make sense). Although I appreciate your updates to the post, It reads like someone that has invested a lot of years in a particular way of doing things–someone that’s on the defensive because their “algorithm” for creating sites/apps is threatened by a new way of doing things.

    I would say that momentum is steadily increasing to adopt these frameworks, and for good reason. There are different tools for different jobs, and whatever works for you is great, but I hope you aren’t stubbornly holding on to a certain way of doing things because change is hard.

  • 2Buku4U

    I’m gonna go ahead and be the guy to say it.. Apples and Oranges! It is moronic to try and compare Angular to jQuery and a huge waste of someones time, They have things in common but jQuery is not an application framework where Angular is. Chances are if you are agreeing that Angular sucks and jQuery is the way to go than you are not a software developer. A programmer maybe, if application frameworks scare you then just stick to scripting your web pages and leave the web applications to the pros. If your trying to build client side apps with jQuery then I’ll bet your code is a huge mess, hard to maintain and prone to break often when there are multiple developers working on it. Angular will not die because professional software developers are desperate for an application framework to build client apps with the right way. If Angular is confusing to you then so is software architecture in general and you are most likely out of your league. A lot of middle tier and back end developers are learning to work in the front end now due to frameworks like AngularJS, Once you have mastered coding in an OOP (server side) way scripting seems stupid. i predict that Angular will also rule Html5/javascript mobile app development too in the next 5 years. Good luck..

    • alsjemeneus .

      “Leave the web applications to the pros”
      You clearly have never developed a framework yourself.
      You are probably pretty helpless yourself without jquery, angular, knockout etc.

      “Pro’s” usually write there own stuff. To keep maximum control and efficiency.

      • 2Buku4U

        “”Pro’s” usually write there own stuff. To keep maximum control and efficiency.” Spending time designing, coding and testing yet another framework is efficiency? In the real world we use the tools that are available to us to solve business problems. Most any framework worth using is modular and extensible so if you need something it does not already provide you can extend it. I work in a fast paced environment producing value to the business in every sprint, I am not afforded weeks to spend reinventing something that already exists. Again, I provide value to my employer by providing solutions utilizing tools that are already available. Creating yet another javascript framework that also becomes code that requires maintenance and regression testing adds more cost than benefit. Additionally, when you roll your own framework it creates inefficiencies for developers that come in behind you to work on the same project. Unless you are taking the additional time to write documentation that explains your custom framework and any api’s. Documentation requires man hours to create and maintain and provides zero business value. So in my 14 years of building web applications i have never seen a Dev manager or CTO that would agree to spending the time and money to build yet another javascript framework along with supporting documentation when the community has already given us this many times over. it may make you feel better to write your own frameworks but for me it’s a waste of time and someone else’s money when i can just use something that is already proven and has community support around it to help the other developers on my team to learn it as well. You totally miss the benefits of open source community driven tools when you let your ego talk you into designing your own frameworks.

  • Nick Verheijen

    In your first comparison you make angular look way more complicated than it is..

    You could rewrite it to:

    $scope.myData = {};
    $scope.myData.doClick = function(item, event) {
    $http.get(“/ajax.php”)
    .success(function(data) {
    $scope.myData.fromServer = data.title;
    })
    .error(function(data){
    alert(“AJAX failed!”);
    });
    }

    Which is exactly the same amount of lines of code and not more complicated than jQuery at all. And I don’t see you use the other parameters you can use in the jquery response function as you do with the angular response function..

    Therefor your argument is invalid and I stopped reading. Bye.

  • alsjemeneus .

    comparing apples and oranges but: Angular style (Declarative binding with some MVC) can be much easier and even more intuitive.
    jQuery is like a garbage dump and many programmers have been dumping into this library.
    But the whole world is using it so it must be fantastic right!? wrong..

  • guestman

    You are totally right. The main thing about being a Googler is about how to be an evil arrogant little snot that can’t stop showing off how smart you are by doing things the most convoluted way possible.

    But what all the googman ended up doing is… exposing their deep seated insecurity.

    • George

      I know. Everyone talks about apples and oranges, but they treat it more like gold and crap. Nothing of what I wrote with jQuery is bad at all because I thought about before I built it. I just don’t get it, and probably never will.

  • sidazad

    It seems like your argument is that AngularJS has a steep learning curve. Yes, that’s true. But once you get the hang of it, it makes you a lot more productive as well as your code a lot more maintainable and reusable. Or should I say, it makes it easy to write reusable and modular code. I have a video tutorial on AngularJS here: http://www.angularjstutor.com
    This may help.

  • stephen cooper

    I can’t help but feel your explanations to your views are very biased. Your Angular seems overly verbose, i presume either due to a lack of knowledge or to deliberately help your argument.

    I mean an ajax request (see first image, i am not being anal there, your editor has terrible formatting when you copy text…)

    Then your whole concept of DOM manipulation with angular is flawed. There is no need to manipulate the DOM directly. You define your model in your controller and with the use of directives (which are completely modular between angular apps) and Angular’s two way binding You bind it to your HTML template. Then when you manipulate your model angular manipulates your DOM to represent the changes. With directives such as ng-class, ng-repeat, ng-show, ng-if and ng-model you can extremely easily make changes to your DOM just by changing your model. ng-repeat rendering multiple elements in the DOM over an array in your model, removing and adding elements in the DOM as you remove and add them to your model, the rest are pretty easy to work out their functionality.

    Then most if not all (not 100% sure on the all bit) of Angular’s directives that manipulate the DOM apply classes during its manipulation (enter, leave, move etc) which you then use CSS to actually perform your animations.

    Your argument that “Angular cannot make this possible as it can’t do DOM Manipulation on its own.” is rubbish, if above isn’t enough to manipulate your DOM you can use ng-bind-html to inject html directly into an element in a secure manner as you show with jQuery. Whilst with jQuery your changes to your data in the DOM does not automatically change your model.

    Then there’s all the awesomeness of filters. Then the plain {{}} notation to bind values and text within your DOM.

    And finally the argument of Angular’s complexity. I have only been working as a web developer for a year, straight out of University so far from as experienced as the author. For the first six months i worked with plain jQuery, for the last i have been working with Angular and Node. Building a system that allows my company to deploy automated builds of their product with any data to internal or cloud systems. This is just my personal opinion but i found it extremely easy to understand and find documentation even with my limited knowledge in the field. However this could be because of my lack of experience, i am not stuck in other frameworks, similar to .NET developers when they get given NodeJS.

    http://jsfiddle.net/dakra/U3pVM/

    http://plnkr.co/edit/kKzXBtXIheVpowtPXlsT?p=preview

    http://plnkr.co/edit/sEVfAsUxW5yhBr6YTmJL?p=preview

    http://jsfiddle.net/jCUSh/149/

  • peazz

    Jquery and angular have two I different learning curves. Jquery is a steady track upwards while angular is like a hockey stick.

    Iu you are serious about your career as a frontend developer then learn angular, if may fail because another framework does it better or what ever, but for now it’s what employers want,, that and node / api xp.

    Andy
    http://www.webcanvasdesign.co.uk

  • George

    One of the things I saw angular devs praise was the separation of code principle. Unfortunately, they don’t understand that web dev is not about separation of code entirely. In the end, it won’t matter how much you separate your code. A browser, unlike a desktop app, likes a combination of code (CSS, HTML, and JS). I understand where the “separation” comes in. And it all comes down to HOW you write, NOT WHAT you write. I separate my JS from my HTML, CSS from HTML as much as I can. Unfortunately, in reality, you have to render / include your angular controllers and directives on the SPA. How do you do that? You have to render some sort of dynamic data, typically from the back end. This means, TONS of ajax usage. JS and JS manipulation on its own is super fast if you don’t have to access the back end… but this also leads to JS being easily hackable. I can change by numbers on the front end, and voila! I got a million bucks in my bank account.

    I think what’s been happening lately, and I’ve read a lot of articles reflecting this (do you own googling if you don’t believe me)… a lot of console developers (Java, C++ and the like) come to the web world where things are done differently because the only interface is not some OS API, but a web browser that follows different rules. Imagine if consoles had the ability of browsers. Imagine if we could use a separate language for handing design in an app, or bells and whistles. Single page applications for app developers typically have everything loaded at run time, and the application stays alive until the user quits. This is why even objects make sense. It’s one user, using a single application on a single machine. Sometimes those apps connect with a web service. That’s entirely different.

    We seem to have gotten away from understanding web development. Some of us treat it as if it was application development. It’s not! But, some just can’t seem to understand that, so they bring their principles of app development to the world of web dev and make everything difficult for us, true developers.

    Of course, the defenders of app dev are going to kick and scream and never admit what I say here… but they know I’m right. And they may even try to mock my way of thinking simply because they feel like they’re being attacked. What I’m stating here is simply to remember that web development is web development. It’s handled completely different. Rendering a pop up in a desktop app is completely different than rendering a “pop up” on a webpage. At the app level, you’re creating new objects, using existing live data. On a website, that action typically re-connects with a web server that connects with a database that gathers data, calculates, creates some html or JSON information and spews it back out to be rendered to the browser. It’s a world of difference.

    Imagine if I was to bring web development ideologies to a console. Every button you click has to connect to an offsite database that does stuff. You’d have to be constantly connected to a server… Unless you do online play (where minimal data is sent back and forth, and we know how laggy that can get), it makes no sense in putting your app data on the web.

    Yes, the internet is getting faster, and ISPs are getting better at staying connected with everyone. I understand all of that…. But… not everyone has that ability. It’s like trying to play SOCOM 2 on a dial up… Remember those days? Maybe these new developers don’t understand what that meant.

    Anyway, enough for my rant. Angular JS is more for application development. Unfortunately, we can’t treat websites in the real world, accessed by slow connections as full blown applications like on a desktop PC.

    I also know that there are a lot of devs out there that understand what I’m saying, and typically, it seems like they’re the ones who understand that anything more than CSS, HTML, and JS is just abstration. But what about PHP you say? Well, that HTML has to be rendered somehow if you want a dynamic site. And yes, if I could write my own “short” version of jQuery to help me out, I would. But, it would definitely reflect the JS language itself, not some abstract version of someone’s idea of what a coding language should be… which looks and behaves completely different than the language it abstracts.

    I’ve also read articles that have mentioned that this sort of thing usually happens because you have bored developers who are given a web project, and they want to make things challenging…. Steve Jobs would eat you alive!!!

  • Abhishek

    “For me, angular has failed for the following reasons:

    * No clear examples of the two most widely used front end features, DOM Manipulation and AJAX calls.
    * Most of my development (over 99%) consists of those two features”

    Dude, this clearly states you haven’t tried to understand AngularJS at all. You’re clearly thinking like a JQuery coder. Angular doesn’t work this way. There is no option for DOM manipulation in Angular because it DOESN”T WANT YOU TO MANIPULATE DOM. It wants you to keep the DOM as it is and just show/hide data dynamically as and when required.

    And talking about AJAX, there is the $http service in Angular, which I’m surprised you didn’t know of.

    Having said that, I’m no expert in either of Jquery or Angular, I’m just a newbie front-end guy exploring this overwhelming world of front-end web development. I recently stumbled upon Riot.js. It seems a pretty promising replacement for Angular. Best of all its simple as fuck. The minified version of Riot weighs only 1.6kb! Now that’s something. I’m gonna give Riot a try, you should too coz you’re like me(I think) who believes in KISS (Keep It Simple Silly).

  • Deepankar Bajpeyi

    I might be late here , but here is what I have to say anyway. I have been working for a company for less than 2 years and we have built a fairly large application with AngularJS of which a lot of lines of code was contributed by me in the last 1 year. I never thought web development could be so much fun.

    I think it all depends on where you are coming from. I have only worked on MVC frameworks (Django, Flask, AnugarJs) and it was fairly easy for me to pick up AngularJS without much of web development experience. Maintaining our code is fairly simple . For example, adding a resource for getting data from servers is just adding a few lines of code, without even worrying about anything breaking anywhere else in the project.
    These are my two cents. A lot of inexperience here, but hey 😀

  • toach

    If you are curious about looking at comparisons of apps built in various js frameworks, jquery and vanilla JS try ToDoMVC http://todomvc.com/

  • jredic

    AngularJS is the worst piece of shit I’ve worked with. Let it die.

    • George

      Thanks for your honesty and input. Can you give us specifics?

      • jredic

        Sure. You start off with a piece of shit language with no type safety (Javascript) then you try to make it impossible to read and comprehend by using a mix of css, lock-in patters and a bit of behind-the-scenes magic. Blend in some bad api design, and you got angular-js.

        • George

          Thanks for that. And, I couldn’t agree with you more. At least jQuery tries to make some sense of it all.

          • Simon

            You guys are funny. Learn the language and tools you’re using.

          • jredic

            I was forced to become something of an expert in Angular. I know every ins and outs of it and have even contributed a few minor patches. The more I learned about it, the more I hated it. “It’s from Google so it has to be good”, right? Uhm, no.

          • http://facebook.com/md2perpe md2perpe

            Why?

          • jredic

            Read the article?

          • http://facebook.com/md2perpe md2perpe

            Yes.

          • jredic

            Okay, all you need now is to acquire thinking skills and you should be all set.

          • http://facebook.com/md2perpe md2perpe

            6 + sqrt(64) = 10

          • jredic

            qed

          • http://facebook.com/md2perpe md2perpe

            I suppose that you’re not geeky enough to see how the equality is valid.

          • jredic

            I suppose you’re not intelligent enough to see that my qed alludes to the fact that you had to resort to lame jokes when running out technical arguments. It’s a common trait among angular-js aficionados.

          • http://facebook.com/md2perpe md2perpe

            Then explain how the equality is valid.

          • jredic

            The equality is valid under base 16. It’s common amongst unintelligent people to resort to lame jokes like that. It’s in the same category as “there are only 10 types of people, those who understand binary and those who doesn’t”. Pretty lame.

            Now go improve that brain of yours with research-level substances so you can hand out real challenges.

          • http://facebook.com/md2perpe md2perpe

            Nice, you got it!

            I have my own version of “10 types of people”:
            There are only 10 types of people; those who don’t understand binary, those who do, and those who understand Gray code.

          • jredic

            Another lame joke. Donald Knuth is not amused and Frank is giving you bitch slaps.

            Bye now.

  • George

    “Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius — and a lot of courage to move in the opposite direction.”
    ― E.F. Schumacher

  • James

    Seriously, it took me 3 weeks of persistent trying and failing to get anywhere with Angular but stick with it. Once the application of its core concepts have been instilled into your workflow, you will realise it’s a cracking little framework for building web apps.

    I learnt via 3 sources:

    1) Work through this free course: http://campus.codeschool.com/courses/shaping-up-with-angular-js/intro
    2) Use AngularJS Up & Running by O’Reilly as reference and reading as opposed to the official documentation
    3) Decode all the tutorials out there for the specifics

    My biggest issue when learning was when to apply services, directives and dealing with scope (and $scope). I was lost for ages but then, when building a SPA login and session control (from about 20 different tutorials), I finally got it. There are several different ways of achieving the same thing (and the 1.2 update didn’t help).

    Learning Angular isn’t the same as learning jQuery at all but I was far more proud of my achievements in Angular than anything I did using jQuery.

  • Levente Nagy

    ” The main reason Angular JS will fail is because it’s difficult. ”
    What i draw down from your article is, that AngularJS it’s hard for you and because it is, you do not like it and “okay this will fall because i dont understand it.”

    This could apply to any other libraries, frameworks, or languages, all of them are hard for some people, but its only hard because they do not understand it.

    And i hope you do know you are comparing a library to a framework, so of course it’s larger

    In jQuery, you design a page, and then you make it dynamic. This is because jQuery was designed for augmentation and has grown incredibly from that simple premise.

    But in AngularJS, you must start from the ground up with your architecture in mind. Instead of starting by thinking “I have this piece of the DOM and I want to make it do X”, you have to start with what you want to accomplish, then go about designing your application, and then finally go about designing your view.

    • George

      All good points… however, let’s analyze what you are saying.

      First, you say that applying the “difficult” paradigm to anything will not make it obsolete. If a framework’s job is not to make the job easier, what’s its point? Simplicity has always won the hearts and minds of anyone, not just developers. Some of us seek to complicate our lives, others to simplify. I choose the latter.

      Think of the saying,

      “If you can’t explain it to a 6 year old, you don’t understand it yourself.”
      – Albert Einstein

      Have fun disagreeing with him.

      Oh, here’s another one:

      “Life is really simple, but we insist on making it difficult”
      – Confucius

      Comparing a library to framework? I’m simply stating that adding anything on top of the language of the gods (browsers) is interpretation. Choose your interpretation wisely. Choose something simpler (see above quotes).

      In jQuery you design a page and then you make it dynamic. Unfortunately for you, that’s what most (99%) of the projects out there are about. Most projects I’ve worked on that deal with some sort of code being pushed to a browser will have a constantly changing layout, interface, and the likes. I’ve even had projects become AJAX/push state, only to come back to regular non push state, only to merge into something semi-push state while retaining their AJAX states… all within 3 months.

      If you find the business persons who will design the perfect never changing layout / design please clone them for the rest of us.

      The rest of the world, meanwhile, will have to deal with an ever changing website (call it web app if you’d like, it’s still a website) filled world. Eventually the “piece of DOM that you want to make it do X”, evolves to do Y and Z, while creating additional SPAs to handle additional business requests, etc… Clearly none of the angular fans have worked with dynamic websites. Yes, even an SPA is still a website composed of one webpage.

      So, to your argument, I would still choose jQuery.

      • Jadon2003

        Ha! “Language of the Gods” Are you serious? You are kind of funny. I Know Brendan Eich is at home reading this stroking himself right now. I like the the scripting language too buddy but it’s far from that. Just you saying that tells me you don’t understand the language very well nor have never done any real development.

        “Any fool can know. The point is to understand” – Albert Einstein

  • Tony Alicea

    “I believe that the best framework is the one that’s easiest to learn” – I think that statement sums up the feeling of this blog post and many of the ensuing comments. This speaks to what many feel is the fundamental problem with AngularJS, but one that has nothing to do with whether it’s ‘good’ or not — AngularJS is hard to learn.

    In many cases it’s akin to the difference between developers who come from a core computer science background, and the self-taught (of which there are many in the web development world).

    AngularJS’ terminology and approach is heavily influenced by the computer sciences, and so is foreign to many web developers (who may have gotten into ‘web development’ via jQuery). It doesn’t help that AngularJS documentation doesn’t explain concepts well, just implementation (and many other tutorials/courses out there).

    Also AngularJS depends on deeper javascript concepts that those who have come into web development via jQuery were probably never exposed to. So the problem with ‘it’s hard to learn’ is that it’s actually a critique of the quality and style of education available for AngularJS (and the difference in the backgrounds of many web developers vs more low-level software devs), not the framework itself.

    ***shameless plus***
    I put together a course to try to plug the gap – a course designed for jQuery users and others who find AngularJS hard to get into, by explaining the javascript concepts, how AngularJS works, and then how to use it. The first 50 minutes of the course is on YouTube here: http://youtu.be/ejBkOjEG6F0
    ***end shameless plus***

    Learning AngularJS is worth it – you end up writing a lot less code for simple usages, and it’s a whole different ballgame for truly large web applications, single page applications, and projects involving many web developers. I would encourage anyone to look around the internet and learn. You can end up saving yourself time and stress in the long run.

  • adappt

    I love the fact that your thought process has evolved as you have learnt more, that you have taken the time to learn more and that you have shared that knowledge – thanks for a great Article and all the debate it has sparked :) I do love angular for a couple of reasons, 1) a lot of what we do is data bound with a lot of data filtering and manipulation 2) Angular really helps teams work together by keeping the code structured and modular. Its a tough learning curve, my personal recommendation – definitely worth learning angular

  • anon9182

    I’m an old dog who’s worked in Java, Perl, and Python for 10 years, and discovered AngularJS a year ago. Here’s why I like it.

    I do web development rarely — and thank God. It takes forever and is incredibly frustrating, because it is not how I am used to thinking. Client-Server is my bread and butter, but the way that JS and HTML fit together is really badly designed and really counter-intuitive. Because it’s so badly designed, long annoying coding blocks have been developed to do simple things. According to AJAX by O’Reilly, the simples cross-browser compatibly AJAX query (their example in Chapter 1) is almost 100 lines if you write it by hand.

    “That’s where jQuery comes in,” you would say. And you may be right, jQuery takes that 100 lines and shortens it. But it does not alter the conceptual relationship between JS and HTML that I struggle with.

    This is the backdrop for my most recent project: an embedded device which needed a web UI for configuration options. My first version was functional, but straight from 1996: all intelligence in the backend CGI, static HTML and CSS displayed to the user, and every time you click Apply, it does a page load. No JavaScript.

    When I was griping about how much the backend had to do, a friend of mine said, “Is that all? Use AngularJS.” No, not another framework! You web guys keep coming up with these, and they don’t help. But he pushed hard, so I read about it. I was impressed: it was MVC for website design, a concept I was more than familiar with.

    AngularJS basically says: don’t think about this XML document you are writing as HTML5 anymore. Think of it as a markup language you can extend, as you write your view. This means that the integration with the JS “controller” is a lot more powerful, and can be the main source of logic. Aside from some weirder features (like nested scopes) it reminds me a bit of the event driven Java UI stuff I have done.

    And because of that conceptual leap, I got excited by it. At last, some way to do web 2.0 when I have to! After several days of understanding and doing examples for myself — the learning curve was worth it for MVC! — I re-wrote the frontend in an hour, and made the backend do what it was supposed to: just process actual commands from the client. I’m sure my web dev friend would complain about how I’m not doing a bunch of things “the Angular way” either, but it works and that is the important thing.

    I just think your complaint boils down to: any framework that makes you rethink web development is bad. Didn’t you say exactly that in a subsequent post?

    “So, some graduating engineer students decided that a webpage was not a webpage after all, and that they needed to mess with code in order to make themselves feel better and feel more at home writing complex and overly engineered code.”

    Guess what? Writing “complex and overly engineered code” has been my career.

    AngularJS is not built for you. It’s built for me. You keep using your jQuery and PHP and be happy.

  • http://jamesmartindavies.co.uk/ James Martin-Davies

    Give this SO thread a read, if you haven’t already. Though I find many users on SO far too “up their own”, I did find this thread extremely important defining the scope of where to use jQuery and AngularJS.

    http://stackoverflow.com/questions/14994391/how-do-i-think-in-angularjs-if-i-have-a-jquery-background/15012542#15012542

    Take it or leave it, I find this article extremely scrutinizing in the way it has voiced the difference in the two. Though, nicely written and to an extent there is a point here,what you are saying is like trying to compare an F1 car to an every day family car; jQuery being the everyday family car, Angular being the F1 car. Whilst Angular uses jQLite in its core premise, it’s hardly a framework for just writing click handlers when and where you need them. You’ll find many developers just bang jQuery in to their projects because they think it’s necessary for a tiny, single click event, for example. “Great! my dropdown works now! Packaged with almost 100kb of extra fluff too!”. You wouldn’t fire up an Angular project and do that. You certainly wouldn’t do this for anything else jQuery can do either. Angular is all about automation and server-tied components that I couldn’t do in jQuery unless I spent a few hours writing “client-side” code to do the job. I certainly wouldn’t pipe anything out from jQuery using Express, Node & MongoDB. I’d much rather tie Angular in to that; which is it’s core reasoning for building websites. If I want animations, I use CSS. You don’t need a any JS for that now. Slider? Build my own reusable JS component. I could argue that vanilla JS is blazingly faster than jQuery. I know why a lot of people use jQuery too, primarily because it is a framework built on native JS making it accessible for a bunch of features, though abused for a very small minority of them, which is the problem here. You’re comparing an F1 car to an every day family car. I don’t use Angular for binding events, I use it for full-scale applications that require a great knowledge of modular, reusable components that can be accessed across *any* project.

    The docs are pretty easy to understand. I learnt a lot through them, though learnt a lot more by going that extra step and learning about why I should use it and why I shouldn’t. Fortunately, and mostly because of performance, I found Angular (or any JS server-side functionality) to be increasingly faster than any PHP/.NET server I have ever built, after compromising many, many performance tests.

    You have to look at it this way:

    jQuery is a framework of JavaScript for making front-end architecture much easier.

    Angular is a framework for making back-end architecture much easier, given that you’re using Node.

    Two different kettles of fish, depending how naive you are about the usage between the two.

  • Guest

    In angularjs http errors are handled globally with interceptor. You can put any logic there. Ajax request code for angularjs is much smaller:

    $http.get(‘/ajax.php’, function(data){
    $scope.title = data.title;
    });

    $http.get method returns promise, it’s “evolution” of callbacks. You are saying that less code is written with jQuery, that’s very wrong. jQuery can be used in angular as helper. What about data binding? routing? Angular is difficult to learn but very flexible to use after you master it.

  • David Jonsson

    Your exemples dont even match. I see you use the $q pattern in the first ajax example but not even showing it in the jQuery code. And not hooking the ajax call to the view like you do in the angular call. Rewrite the example with jQuery Q and with the binding and you will see just a simple example on how AngularJS makes life easier. I agree its not perfect but with the scope of EE web its just not comparable

  • http://blog.rizowski.net/ Colten Rouska

    I can see your concerns about angular as well and I can say I have had a few of them. One of the things that I have learned while trying to understand angular is that it can definitely be frustrating to learn. Isolate scopes, data bindings, scope model types in directives; that is a lot of data to process. Angularjs is definitely for larger scale applications but it can also be used for smaller apps that are planning on growing in the future. While I do believe that angular may die in the future as other frameworks rise, I don’t think it is going to die for all the reasons that were pointed out here. Many of the examples I see here are incorrectly structured which I can see why it would make it hard to understand or even use for that matter. By not trying to use the framework for what it is designed to do and how it is supposed to work, you are going to cause a lot more growing pain rather than getting any kind of benefit from it.

  • Scott Marcus

    I think you need to learn the difference between a library and a framework. I also think you need to learn what a “couple of decades” means because jQuery was released in 2006 (8 years ago), which is not even one decade, let alone two.

  • BearerOfHarshWords

    So basically you are telling us that AngularJS will fail because you find it hard? I guess people should not be doctors or mathematicians because most of us deem those professions to be “too hard”. This is the biggest load of garbage I have ever heard.

    Yes, jQuery is easy if you want to change a class on something or move an element when a user scrolls the page, but what about when you want to handle page states? Sure, you can download a HTML5 History API adapter, then wire it up, but it is just another library you need to put over the top of jQuery thus bringing us back to your argument of using jQuery with Angular.

    I agree Angular should not be used for easy tasks, just like jQuery should not be used for complex tasks. If you are trying to use Angular to animate a simple element or switch up a couple of classes, then you are doing it wrong. If you are building a complex web application comprised of many sections and sub-sections and need form validation, support for making AJAX requests, interfacing with API’s, dynamically updating the UI with data, then even you can surely agree, it would be a pain in the ass to do that in jQuery as cleanly and structured as Angular.

    The whole point of jQuery was to make the lack of standardise API’s in Javascript more unified, allowing you to make the same call in all browsers without having to worry about whether or not “classList” is supported in a browser or not. It was never intended to be used to build whole web applications, jQuery is a patch. It cleans things up and the whole point of it is to be simple.

    I think what this situation boils down too, is that YOU found it difficult and perhaps out of spite, you said it sucked because you felt defeated. While I agree you do not grasp AngularJS right away, it took me less than a week at my new job to understand it well enough to use it and build things with it. I am not the worlds smartest developer, but I try things until they work and I think the complexity of Angular is highly exaggerated.

    If you think Angular is difficult now, wait until version 2.0 and the new AtScript syntax, you are REALLY going to struggle. I look forward to your “I tried AngularJS 2.0 and it sucks because it is too complicated” post.

  • Matthew Langston

    As several have already mentioned, jQuery code is really difficult to organize and maintain in a large-scale web application. This isn’t jQuery’s fault, but rather stems from the fact that direct DOM manipulation gets really messy as the project grows in complexity. I think jQuery is great for what it is, but you have to remember what it is not. It is a library, not a framework.

  • Jimmy lLO

    Do not waste your time with AngularJS now because some futures will be removed ($scope, .module, DDO, controllers, jqLite) and others will be added with AngularJS….

  • Pulkit K

    Your first example is unfair.

    Your jQuery code doesn’t include the click binding, and your Angular code doesn’t include chaining, which is why you get more lines in Angular. You can chain the http get, success and error calls.

    You should have also removed the header, status and config attributes that you’re using at all. Once you trim it down, you’ll find Angular’s ajax to be much shorter and succinct.

    Here’s the corrected code snippet for Angular corresponding to your jQuery example: http://pastebin.com/SjBhsc6p

  • Xander

    Grumpy cat!

  • fumoshi

    You don´t have to do DOM manipulation in an Angular.js app, Angular.js does it for you, the only thing you need to do about DOM is defining the dynamic dom on templates including angular directives such as ng-if, ng-each, etc…

    Is the Angular way

  • James Wright

    Why are you comparing jQuery to Angular? One is a library and the other is an entire application framework.

  • Borislav Iordanov

    Nice to see some common sense talked about AngularJS. It amazes me how the hundreds of developers around the world are trying to find a way to rationalize their choice of AngularJS (it’s difficult, but it pays off, though learning curve, but it’s because it’s so new and innovative, blabla), where in fact it’s just the Google brand name that got combined with a heavy dose of mediocrity in this particular case.

  • Impurist

    You says angular uses JQuery for dom manipluation.
    That’s not true.
    It’s only the case if actually load JQuery which bigger than angualar anyway
    Angular uses jqLite which you do not mention at all.
    jqLite is just selector engine from JQuery
    From the docs.

    jqLite is a tiny, API-compatible subset of jQuery that allows Angular to manipulate the DOM in a cross-browser compatible way. jqLite implements only the most commonly needed functionality with the goal of having a very small footprint.


    So wake up dude and get your facts right.

  • Vlada Janošević

    I will be brief – This post is a bullshit.
    He compares library for DOM manipulation and framework

    • George

      Thanks for your insightful opinion.

  • Ray Suelzer

    “Frameworks suck” What?!

  • Sankar Rao

    You are absolutely correct. I had tried to learn Angularjs. But it is very difficult to learn. Syntactically JQuery is best.
    I want to know which is best performance either Angularjs or JQuery.

  • Iatzin Borvich

    You are absolutely right.
    The only thing that could be saved is the dependency injection, the rest is pure madness.
    The proof is that 2.0 is a totally different framework. Spent time understanding 1.* insanity? It will be useless in a few months from now.
    Follow new technologies, adopt them after they proved to be solid.

  • Pietro Grandi

    Nice post, but I think that your error is in trying to compare different things: jQuery is a powerful tool for web developers, while AngularJs is a powerful framework for web applications.
    Web developers who build websites shouldn’t use AngularJs, as it calls for some software’s architecture knowledge.
    In two words, different jobs.

  • http://luquinhas.com João Silva

    Angularjs is horizontal framework …

    jQuery is vertical framework …

    You can’t compare both …

    jQuery has no mvc support, no data-bind, no directives, too much code, to much setters and getters… (isn’t a horizontal framework :P, jquery is good to resolve some problems, not all problems :P)

    NOOB

  • froginvasion

    Please give better arguments than these and try to actually use angularjs. How can you judge it without knowing what it can do exactly? There are more factors than just being “easy to learn” about a framework.

    I understand that your post is to learn about angular, but your post is kind of offensive calling out to fanboys, and calling jQuery out to be more of a holy grail. Try maintaining a 5000 line code jQuery powered program and you might speak differently.

  • disqus_sIrHy9rk2t

    You do realize that angular 2.0 is being developed as a response to ecma 6 and all of the changes that where just made official with html 5 becoming a standard, which is going to change how browsers work. Also, I’d like to point out that aws is adopting angularJS. I know for a fact that the elastic beanstalk UI is done in angularJS. If you’re looking for a good foundation to stand on and get running with angular I’d recommend this yoeman generator. https://github.com/Swiip/generator-gulp-angular

    • George

      That’s great to know. Now… if we would have all built our websites with html5 in mind from the beginning instead of depending on frameworks to do that for us, there would be no issue. And, you’re completely missing the point. You’re so focused on the narrow road of what’s happening now, and how “exciting” everything is, that you’re willing to disregard everything that’s happened in the past, and the whole point of my post. I can only hope to hear from you after a decade on this issue.

  • Phillip Brandon Holmes

    I agree totally. I think it’s already fizzling as we speak. I will use it, but for only small projects that don’t need a lot of complex data interaction. We wrote a large accounting application in angular (Thomson Reuters). I thought it was sort of novel but mostly thought it was an immature framework. I guess when all you want to use hammer, everything looks like a nail.

  • livetweetfeed.appspot.com

    Posting it here as well since that discussion seem to have closed…

    You are spot on here! I have built an offline ERP that works on a browser (now top this complexity!!) with more than 100 screens with jQuery and it works fine. Any changes asked my client and business analysts are delivered within hours, not weeks. Performance wise its within the benchmarked limits. Readability is good enough, and more importantly didn’t have to interview or train folks in any framework since learning curve is pretty fast with jQuery.

    Since with Angular JS one already needs to have sort-of final blueprint of the app ready before you even start coding, it is next to impossible imagining an iterative approach of software development with Angular.

    I simply don’t understand this “2-way data binding is awesome” or “Angular isn’t suppose to do that” or “You don’t get Angular JS” lobby. How is that suppose to ensure smooth decoupling of view with a resource in service oriented architecture enabled with REST? Isn’t people not getting Angular JS but getting jQuery easily, a testament to its intuitiveness?

    While a framework approach will be better for a server side application where you don’t want two developers to do
    — transaction management
    — handle requests
    — handle threads
    — write facades, delegates, or views
    — integrate with other homogeneous systems like Database
    in their own way, so it makes sense to use a framework and impose those restrictions on the developer.

    But in a single-threaded and single-user client apps, why would you want to impose any kind of restriction on a developer? Unless, all these server-side architects are asked to do a client side app design and they simply can’t unlearn that junk they learnt during server-side architecture design without knowing why it was done!!!

    • George

      You are spot on as well, especially when you mentioned the self testament of intuitiveness. I’ve been saying it all along. Thanks for validating my sanity. Cheers.

  • Jason

    Wow this article stirred up a hornets nest… Just wanted to throw a vote in siding with the author if for some slightly different reasons.

    IMHO jQuery has become a big factor in modern web development largely due to its ease of use/adoption.

    Frameworks (regardless of which one) are rarely adoptable into existing projects, and the more complete the solution they provide, the more there is to learn to be effective with them. Angular (and Ember too) are really only useful when starting a new, dynamic web application that doesn’t require crazy ui work(loss of any part of dom manipulation can cost you more time than you save in those situations).

    In 15+ years of writing web applications for large corporations I haven’t used ANY framework more than once in a major project. Generally speaking, the technology, platform, company, or all 3 change so much every 18 months that I don’t even have a chance to use one twice. Libraries however – I’ve been using several of those (including jQuery) for many years now as I can just tack em on.

    So yes for all offended programmers out there – the author was somewhat wrong. JQuery != Angular. That doesn’t make the conclusion any less correct. For me, the odds of me getting to use Angular more than once are slim and so I try to focus my time on learning the base languages in and out. (java, c#, javascript, python, php, etc…). At least I know I can use those on my next project, and I think thats whats really getting to the author. Time he sees as wasted learning something difficult that hes unlikely to use again and wanting that to stop.

    I for one share his frustration.

    • George

      This was really well written, Jason. Thank you for understanding what I was really getting at. I suppose, some people will be fanboys for life no matter what you try to explain. At least, for the life of the framework. In my defense, I did start this article when I just started learning angular, so yes, I thought that angular was supposed to be the next thing to replace jQuery, and based on some of the comments here, you can understand why I thought that.

      Thank you for validating my sanity. Since angular 2.0 is coming out soon, and completely different than 1.3, let’s see who else will adopt angular 1.3 after 2.0 comes out. And then, later down the road, Angular 3.0 will be different than 2.0, so might as well not even call it that if it’s that different, and woe and behold… a super duper framework, that’s so awesome, that no one uses anymore. Can’t say that about jQuery.

      I only wish a python environment was as easy to install on a windows machine as WAMP.

      Cheers!

  • David King

    While I respect your attempt to compare jQuery to certain features of AngularJS, I feel that you are misrepresenting Angular due to your lack of understanding of the framework. I don’t meant this in a bad way, but I want to show you and others how Angular can make your job and the web developers job easier. I too came from the jQuery camp, and still love but I rarely use it now that I have discovered the goodness of Angular. Plus you only campare two tiny aspects of Angular, making asynchronous requests and DOM manipulation, both of which I feel you do Angular an unfair injustice.

    There are SEVERAL more aspects of angular and concepts that you DO NOT explore in this post such as:
    – dependency injection
    – Using factory services to promote modularity and testability of code (HUGE development philosophy of Angular)
    – Angular directives (ng-repeat, ng-show, ng-hide, ng-class)

    – Routing

    – Using promises to avoid the jQuery AJAX callback of hell nightmare.

    – Two way data binding

    – Using a true MVC (Model, View, Controller) architecture to design and scale web applications

    Angular about making complex, testable, scalable, single page applications. NOT SIMPLY manipulating the DOM.

    Here are just two examples of “unfair” and “inappropriate” comparisons of jQuery and Angular.

    1. You are attempting to apply the jQuery development “philosophy” in Angular, This DOES NOT WORK and will lead to frustration and confusion, trust me I tried… Your example is selecting elements on the DOM and then providing some functionality to them via a jQuery function INSIDE of an angular directive. While you can do that, IT IS VERY UNESSESSARY AND WILL CAUSE ISSUES… If I had to do an animation on a click event that way I’d run from Angular too. Almost all of the DOM manipulations you will need can be handled adding simple Angular classes (directives) to elements. Such as ng-show, ng-hide, ng-class, ng-animate, etc.

    You can do all this in Angular using CSS 3 transitions and toggling the elements classes via the ng-click directive.
    All your DOM Manipulation code can be rewritten as:

    *insert other HTML here*

    Then in your toggleTransitionClass function you simply update your myClasses variable to string with your classes named (or removed). Of course two of your CSS classes would have the transitions in them one to show and one to hide. DONE!!

    WAIT IT GETS BETTER!!!!!!!!!!!!!!!!!!!!!

    Now if that is TOO hard, this is REALLY going to blow your mind. You can get even easier than this. There is a concept in AngularJS called dependency injection, where I can use other peoples libraries and ideas. Simply include a library, using dependency injection, called UI Bootstrap. It already does this! http://angular-ui.github.io/bootstrap/#/collapse

    Here is the full code. It’s all one line of HTML. LITERALLY….

    *insert your HTML code here

    2. You comparison of retrieving data from the server is fundamentally incorrect as well (not trying to be harsh, but provide insight). AJAX calls are NOT typically done in the controller as you are doing, but in an Angular service that returns a promise. WHY? So that the code can be decoupled and tested. Angular was built with decoupling objects so they can be tested and scale.

  • hzane

    Pretty absurd blog post. AngularJS represents MVC on the client-side. It’s a javascript based templating engine. If you don’t understand the benefit of logical separation then you are not building substantial apps. The comparisons above are ridiculous. Let’s see you compare two-way binding between Angular and jQuery… The concept of templating, the concept of distributed computing these are not going to “die”. AngularJS will inevitably outlive it’s use as a framework – but it won’t be jQuery that “kills it”.

  • http://www.Santoriello.com/ Thomas Santoriello

    I found it, I read it, and every last comment. Fuckin invaluable. Thank You All :)

  • secr3t0

    OH my god! I never post on any of these boards, but the guy who wrote this pile of crap is such a dork that I have to comment.

    I am a professional web developer, worked for major IT companies, and have worked with JQuery for many years, and angular for a few years now.

    Everything you said is wrong. I won’t go through all of this crap, I’m just gonna go with a few things here to destroy one or two of your arguments and to make you understand the absurdity of the things you wrote, even though I’m not very convinced you will ever understand.

    Let’s see if you can understand this, angular has a lot less boilerplate and lines of code than JQuery and when I mean a lot less is about 1/5th of it. Now if you start comparing poorly designed angular functions with jquery functions that don’t even do the same thing (since your JQuery function still needs a listener to work with a click and you didn’t count that code), now that’s another story.

    Just to give you a clue your first “lines of code problem” angular function example can be rewritten to have less characters than your JQuery one. Also, let’s say you have 20 fields on that model you’re getting from the server, and that you want to map those to different elements. Now your JQuery function in that format will have 20 more lines of code and the Angular function will still have just one.

    “I wanted to see an example of how angularjs will do DOM manipulation since my app is mostly DOM elements being updated, added, removed.” -> This phrase and following mental crap are very powerful in demonstrating that you have absolutely no idea how AngularJS works. “updated, added, removed.” -> these 3 things can be done in Angular without any DOM manipulation with ng-show, ng-if and two way binding.

    I must tell you that even on massive scale online projects, the amount of DOM Manipulation I do with Angular is 0.001% of the code. It simply doesn’t exist, but being as obsessed as you seem to be with having to do DOM Manipulation, I can’t see you understanding that it’s a different programming paradigm. One where your html elements are being marked directly with the directives that they need, so you don’t need to write selectors to grab DOM elements, because your html code is directly telling your elements what they have to do.

    Also, in the remote chance that you require DOM manipulation, Angular doesn’t need JQuery. It uses a subset called JQLite that offers a little bit of DOM manipulation functionality.

    But all in all that’s exactly where you’re very wrong, because with Angular your needs for DOM manipulation will be reduced almost to zero anyway, hence the end of all JQuery boilerplate. When you DO need it, you can do it using reusable patterns with directives, but once again the directive code you posted is poorly designed by a lame coder, because you would never need a directive to do what’s being done there.

    With regards to your concerns about Angular’s failure I think you’re very wrong as well, since I’ve been getting more offers than ever. Extremely well paid jobs are on the market for AngularJS and its inherent technology stack.

    Oh and about Angular 2.0 don’t worry, because 1.3 support is going to last more than every project would ever need, unless you are working for a really bad company that doesn’t like to update their projects for a long time.

    Still, I think Angular 2.0 is going to be even more awesome than 1.x!

    Regards.

    • George

      I just had to respond to your “have to comment”. Let’s see. First of all, I was looking for some guidance to entice me to better understand angular, since at the time of the original post, angular documentation was very poorly written, and the code that existed out there on stack overflow was as bad as the bad example you spoke of: “the directive code you posted is poorly designed by a lame coder”… an angular fanboy nevertheless. Instead, you do exactly what every other angular fanboy did. Bash the hell out of someone who’s trying to understand it. Typical.

      Second of all “Also, let’s say you have 20 fields on that model you’re getting from the server” ??? Really? You don’t see this as a problem that needs to be addressed? When in the world did you ever have to map 20 different fields as a typical day in the day of a programmer? I want to see that example of those 20 fields to be mapped. And don’t just invent one. Show me some evidence please. Again, typical abstract bullshit that makes for a great case for angular, but not for the real world. If you have to map 20 things, I think you’re doing it wrong in the first place. On the same note, “and the Angular function will still have just one”… Really? So I can’t just have a class=”something” or data-result=”something” and just map it once? Your argument is invalid, fan boy!

      “This phrase and following mental crap are very powerful in demonstrating that you have absolutely no idea how AngularJS works.” Hence, I wanted to understand how it works, and how I could do it better with angular… instead, I find better ways to do angular stuff with jQuery. “ng-show, ng-if and two way binding”. Exactly how is this helpful is I still have to do these things via ajax calls? It would still be the same amount of code. Show me real world examples instead of continuing to bash me. Have you ever had to re-structure your angular app because of requirements changing? Was it easy? From my experience in the real world, it has caused too many headaches and the entire company just ended up removing angular altogether.

      ” I can’t see you understanding that it’s a different programming paradigm” There you go again with your religion. I’m too stupid to understand the level of complexity that you’ve warped your head around, therefore you’re better than me. Again, typical angular fan boy behavior. I expected this much from you, sir.

      Someone smart once said… “If you can’t explain it to a 6 year old, it’s too complicated”. Just because you understand it so well, and so do the apparent genius fan boys out there, and it’s so easy for you, doesn’t mean that you’re a better person. In fact, you’re kind of a douche bag for constantly bashing others over the head with it. Have fun with your angular fan club cronies.

      “With regards to your concerns about Angular’s failure I think you’re very wrong as well since I’ve been getting more offers than ever” Oh really? Most of those offers that I’ve come across are done by marketing and hr people who have NO IDEA of coding, and they just spew out “cool worlds” to fit in with the rest of the bullshit job postings out there. I remember when AJAX came to be a popular term. Used for many many years before it was the cool thing to say, once someone coined it, ALL job postings dealing with front end or javascript had AJAX as requirement. Funny, how I don’t see that word used as much anymore, but I do see a lot of angular. And what’s even funnier, over the past 3 months, I’ve seen a steady decline in requirements for angular as well. In fact, I’ve seen job postings in the little tech hub of Orange County pop up with requirements such as “we are a jQuery shop”. I wonder why…

      “Oh and about Angular 2.0 don’t worry, because 1.3 support is going to last more than every project would ever need, unless you are working for a really bad company that doesn’t like to update their projects for a long time.” That’s about 98% of the companies out there. Too afraid to change anything until it all collapses. You may have been int he workforce for many years, but not enough to see the reality of things. “Still, I think Angular 2.0 is going to be even more awesome than 1.x!” That’s your opinion, not backed up by any evidence… hence I called it a religion. We will never know until it’s released… If it’s ever released as an angular project.

      Oh, by the way, the person who said the quote above, Einstein… A fan of simplicity, who made the world understand his “genius” ideas. And that’s why the world respected him for it.

      Peace!

  • oligriffiths

    You start by saying you’re not comparing angular to query, then go on to compare angular to query.

    They’re both very different tools and not ever intended to be used for identical purposes.

    Whilst I’m not an angular fan also, articles like these are mere straw-manning.

    Also, your PHP script is without doubt the most insecure PHP script that you can write, and yet you follow the code block with “good structure”, makes it hard to take anything else written seriously.

    Choose the right tool for the job, don’t use a boat to cross a pond and don’t try to swim the ocean.

  • Garrett Murphy

    I just stumbled upon this post and have to say that it reinforces much of my Angular experience over the past year:
    1) The learning curve is absolutely ridiculous…it seems as if some people can wrap their heads around it pretty easily, but it really seems like most people just can’t grasp it
    2) Documentation sucks. It really does. Yes, I know there are “Hello world!” tutorials out there…but the moment you try to do anything that you would expect a real web site to do, it becomes a convoluted mess.
    3) The Angular community, I hate to say it, consists of some of the most belligerent and egotistical douchebags…if you don’t believe me, feel free to read through these comments. Folks, just because somebody can’t grasp something does not mean he/she is an idiot.
    4) Any question that is answered with the phrase, “That’s not what that’s for” or “Just because” exposes problems. Whenever you ask, “Why can’t I manipulate the HTML from a controller,” that’s the kind of answer you receive. And that’s a major red flag.

  • SomeoneSmarterThanYou

    You wrote bloated code in AngularJS of course you can make it look complicated! I could write a javascript function that only printed out “hello world” that would take 100+ lines of code, and have more complexity in it then anything you’ve ever written.

  • #Moldovan#

    In fact, Angular.js is the first framework that persuaded me to move from backend generated UI (Java Server Faces, JSP, Spring MVC etc etc – Java frameworks) to JavaScript generated UI on the browser. In fact, Angular.js resembles me Java Swing (GoF patterns)

    On the other hand, I’m horrified by the classic JQuery way. Angular.js is so much like the Java frameworks! Same thinking style, same kind of order and the same ideas, same patterns. And I’m pretty much sure .NET developers love Angular.JS as well.

  • George H

    Anyone mention the performance loss on all the “watchers” being created on the page? I just don’t get the idea of using an MVC framework running on the client side… It’s like wanting to have a framework and needing to use JQuery inside the framework to make things work.

  • Lukáš Marek

    Hi.

    I tend to disagree, but that’s not the point.

    What’s more important are provided code examples. It’s not AngularJS in any way. So I wrote a blog post with corrected ones: http://blog.fragaria.cz/2015/01/the-reason-angular-js-will-fail.html

  • YemSalat

    I think the reasons Angular might very well fail is not its initial complexity but the following:

    – lack of focus (too many entities)
    – bad performance (especially on mobile)
    – too many ways of doing similar things (hard to find best practices of doing particular tasks)

  • Mehrdad

    I’ve been trying to learn AngularJS myself in the last 2 weeks; and the only reason that I did that is due to the fact that I see so many articles about it being the second most popular framework after jQuery; and right now I am so confused with all the directives, filters, controllers, scopes, resources, services, etc., etc.

    I also remember the first time that I learned jQuery; within half an hour, I knew what the framework is about, and how awesome it is. It was like finding a gold nugget. I just wanted to play with it more and more.

    With AngularJS, all I’m thinking about is am I wasting my time on this framework? I think I totally agree with the Author that this is probably another dead end framework. Who wants to work with such a convoluted framework with all its spaghetti programming. One of he first things they teach in universities is to avoid spaghetti programming. I guess AngularJS developers weren’t paying attention when they were learning how to do clean programming.

    I just can’t imagine a real world, easily maintainable application based on AngularJS. On your team, you lose people, and new people have to learn the code fast and be able to become productive fast. There is no way that an application that is based on AngularJS would be easily maintainable or easily understood. In fact vanilla JavaScript is far more understandable than AngularJS.

    • http://facebook.com/md2perpe md2perpe

      What “spaghetti programming” do you see in AngularJS?

    • toach

      Mehrdad,
      Before digging into angular I would suggest spending time learning what it is and why/how it would be used. Also, it would be worthwhile to learn the difference between a library and a framework.

      jQuery by its own definition is a library which allows you to use its functionality as needed and as you see fit.
      Angular on the other hand is a framework which forces certain design patterns on you as a developer and handles certain functionality for you in its own specific way.

      Angular is not meant to replace jQuery, nor is it meant to be used in any given project.

      Think of it this way:
      You use jQuery while building an app
      vs
      You build an app with angular.

      It’s a small but important difference.

      Also, dig through the comments in this post. there are a lot of good discussion on this topic.

  • Matt Terry

    This is a really odd article, Angular makes developing certain things really fast and really easy. It’s not really comparable to jquery since it’s built for a different purpose.

  • Joey SI

    Glad to have reached your blog, helped me decide; felt like succumbing to the pressure of current trends but asking myself exactly the same qs – WHY? You go against the wind but I’m with you for your logical reasoning (btw the same experience with Laravel alas (came back finally to good’ol plain Php))

  • marc

    Reading a bunch of these comments; seems like most people lost track of what (I believe) the article is about: why AngularJS will Fail! Best quote:

    “Angular 2.0… a complete revamp of angularjs. Yet,
    another reason AngularJS will fail. I keep trying to explain why it will
    fail, and of course, I get all sorts of backlash about how I suck at
    programming. Maybe I just have a better understanding of business
    requirements integrated with development.”

    I don’t see how AngularJS will be around as long as jQuery, or any other library/framework that keeps backward compatibility! Why do you think there are still lots of I.E. 6/7/8 users (and hence support for them in JS code)?

    Because a lot of Very Large companies have built enterprise applications that use web technologies, and to save money only tested/built them to Windows XP I.E. versions. I worked on one such project for a bank; 1 single phase (think they are at phase 11 now) was $40,000,000! and the testing portion of that (where I worked) was $4,000,000! you think they want to spend $4,000,000 again just to test on I.E. 11 (or whatever the latest is)? never mind the code change costs.
    Not anytime Soon! How old is AngularJS v1? to completely drop it for a new v2 is crazy if you want to keep people using the framework.

    • toach

      Problem is, that part of the post was added on 8 months after the original post was published.
      I agree, that may hinder or kill angular usage, but in the context of the authors view on angular it was just chance.

  • Reto Ryter

    You keep going on about how you try to understand it. But obviously you don’t try hard enough. In my opinion you don’t even try at all. all you do is finding excuses why angular is worse on task x than jquery, based on angular examples that are so horribly wrong, that I can understand you think there is no point in it. checkout egghead.io, learn angular properly, and then write another blogpost. let’s see how that turns out.

    • George

      Funny. With jQuery, I didn’t have to try at all. With PHP, I didn’t have to try at all. With MySQL I didn’t have to try at all. It just all made sense. I would just suggest you read some of the comments on the other side of the fence and see if it makes sense to you instead of just belittling me, like every other angular fan. It has a huge learning curve, which turns any experienced developer off. Experienced devs know that they don’t have time to spend so much time on learning an entire framework that is short lived. We need to turn business processes into code, not re-engineer google or facebook.

      I understand your POV, but if I had the time you have on your hands, I might actually take a year or two and learn the new angular 2.0 when it comes out… only to probably be replaced by angular 3.0… which will be a completely new language…

      On top of it all, for performance sake, I say no to front end frameworks. I’ve already experienced the frustrations of working on backend frameworks with more fan boys instead of using pure php, js, and css to write code that evolves into a custom framework.

      I’m sure no one will convince you otherwise, but I ask you to do more research about the status of angular 1.x and see why it’s a dying framework.

      I would rather use a js library that makes sense and write my own js code instead of being constrained into a framework that in only a couple of years becomes obsolete.

      Cheers!

      • Reto Ryter

        If you would have put all the time and effort into learning angular instead of this blog post, you would not have written it in the first place. Have you ever thought about that jQuery might be obsolete a lot sooner than Angular?

        • George

          Fortunately, I had time to put in both. The blog still lives on. Guess which one was easier? jQuery be obsolete sooner than Angular? Not likely, considering the ease of use. Are we talking several decades time span here? In that case, PCs might be obsolete as we know them. Haha. Unless you have some extraordinary evidence that goes along with your extraordinary claim… no.

          • Reto Ryter

            Maybe to you that’s extraordinary, but it really shouldn’t. It has nothing to do with ease of use. jQuery mainly solves cross-browser issues which are going away kinda quickly these days I would say. Keep an open mind dude.

          • George

            Nothing to do with ease of use? You must be a youngin’. Back in my days… about 10 years ago, every developer was scurrying to develop an easy to use library to create shortcuts in JS. The dollar sign was the standard that everyone was using so we don’t have to type a bunch of stuff including getElementById, etc. AJAX calls were a mess to write as three separate blocks of codes, and jQuery made it simple and combined it in an easy to use one command that accepts a json object as parameters. Easy of use was jQuery’s middle name. Based on your latest response, now I truly understand that you do not know anything and your arguments (all of them) have become invalid instantly. I have lost all trust in you, and all angular developers because you ruined it for me. I hope I never have to work with you, or the likes of you. Man, would we be fighting constantly. Cheers, and all the best to you!

          • Reto Ryter

            I assume you know that i was saying that “ease of use” is not a reason why jQuery will not become obsolete? I never said jQuery is not “easy to use”. So the only conclusion here is: You don’t want to share “knowledge”, you also are not interested in other peoples arguments, or a serious discussion about this topic. you never really tried to understand angular, all you want are visits to your blog, so that you can earn something on the side. Good luck with that 😉

  • daniallokman

    Checkout this valuable AngularJs resource as well

  • daniallokman

    Checkout this valuable AngularJs resource as well. http://www.learn-angularjs-apps-projects.com/

  • McFlyyy

    http://techcrunch.com/2015/03/05/microsoft-and-google-collaborate-on-typescript-hell-has-not-frozen-over-yet
    isn’t it just the *very main* reason ?

    oppositely to “linux”, microsoft will always end up to restricts things to their platform.
    Microsoft have failed on mobile. Google have failed on social. Hype level : below 0.

    In 2015, can a dev tools shines with such a bad karma behind the scene ?

  • https://github.com/dchacke Dennis C. Hackethal

    Slightly off topic here, but if anyone DOES like Angular and wants to integrate it with an existing Rails back end, try out Entangled. It’s very easy to integrate and is basically ActiveRecord for Angular. It also syncs all changes to your database in real time across all connected clients.

    https://github.com/dchacke/entangled

  • Simon S

    Really? Is this guy serious?

    He’s comparing AngularJS to JQuery? Obvisouly, he didn’t realize earlier that AngularJS requires JQuery to run. I’m developing a rather large application using AngularJS and it’s a DREAM compared to anything I could have done otherwise.

    The learning curve was there, with Angular, but it wasn’t too bad. Now, though, I’ve created features in a few hours that would have otherwise taken me at least days without the framework before.

    JQuery is not a framework, it’s a library. If you don’t believe me, let’s both compete on making a 20 page SPA with using only AngularJS or only JQuery. Community votes on the specs and the winner.

    Hint…. I’ll win.

    • George

      20 page SPA, huh? You’re definitely a winner……

      • Simon S

        My current project is at 130, I just have less time than some might.

  • Bo

    I stop reading after your first example.
    The equality for your jquery code should be:

    $scope.myData = {};
    $scope.doClick = function () {
    $http.get(“/ajax.php”).success(function(data) {
    $scope.myData = data;
    }).error(function() {
    alert(“AJAX failed!”);
    });
    }

  • nasko0

    To compare AngularJS with jQuery is simply idiotic, nothing more to say here…

  • Florian

    Here is a great tutorial on AngularJS ^^

    https://angularjs.org/

  • Gianluca Cirone

    For me the problem is javascript, we want find best way to use it but it’s old..this is the true.

  • Aries

    Angular has it’s ups and downs. It has some well designed areas which you’ll love, and then you’ll spend hours pulling your hair out trying to figure out why your updates aren’t cascading through nested scopes. Regardless, it’s no different than any other framework – weight the pros and cons to determine whether if it’s a good fit for the project.

    But regarding your comment that jQuery 2.x was revolutionary compared to jQuery 1.x… Reducing the code base approx 10k by removing 200 or so LOC related to IE 8 may be practical and a big win for TCO, but I’d hardly call it revolutionary.

  • Yusuf Amro

    I cannot complete reading this article because the black background, it is not comfortable.

  • hhvdblom

    I agree with your Article. I can program several languages. I could not figure it out why the hell you want to simulate a MVVM architecture on a platform that is MVC by nature. I also do Windows Phone programming then Data binding like Angular seems a logical choice. With MVC jQuery works well and no need for Angular.

  • Reinhard Motya

    George I made a Disqus account just to upvote some of Cheyne comments. Honestly….

    You seem like a super experienced developer, but these are some comments you made that really sent me a “what??” signal:

    “That’s the beauty of the code I write. No tests necessary.”
    “who’s going to write the code to test the test code?”
    “How am I even going to even consider learning AngularJS if NO ONE, or NO WEBSITE is willing to teach me this magical piece of software that I just can’t seem to be intelligent enough to grasp.”
    “I separate my JS from my HTML, CSS from HTML as much as I can.”
    “…perfectly fine language (js)”
    “I give a lot of respect to developers that still write pure JS.”
    “the most popular framework is JavaScript itself”

    With all due respect George, just read those comments…

  • Reinhard Motya

    Anyway, there’s more fundamental misunderstanding here than just AngularJS vs jQuery. It’s the misunderstanding of “easy” vs “simple”. Easy is _not_ the same thing as simple…I would recommend watching this guy’s video: “Simplicity Matters” https://www.youtube.com/watch?v=rI8tNMsozo0

  • Reinhard Motya

    I can’t edit/add on to my previous comments yet, but as a follow up: the reason for abstractions (like programming languages, and also, yes, frameworks) is not precisely to make things _easier_, but more precisely to make things _simpler_. Hope that thought helps.

  • MatthiasReining

    Nice article!

    But I think it’s wrong to compare Angular.JS and jQuery.

    For me
    – jQuery is a JavaScript library.
    – Angular.JS is a own language

    This means, if you are a good JS developer you are not automatically a good Angular.JS developer.

    Angular.JS introduce a new abstraction level for programmig.
    It’s like starting from C (comparing to jQuery) and go ahead with C++ (object orientation). It’s a new programming model.

    Furthermore, for me your comparison is like comparing Basic (low-level) and Java (high-level) or Assembler and C.

    low-level language: everything is possible, but you have more to code
    high-level-language: if you are familar, you are more productive.

    Maybe Angular.JS will fail for problems with backward-compatibility in the future, but for the language itself… I don’t know.

    We will see :-)

  • James Van Leuven

    I think this blog entry speaks more to the skill and ability of the author than the quality if any particular framework.

    I’ve never been a fan of frameworks or libraries. I’ve always been of the opinion that if a developer can’t write their own framework distinct to the project, they’re not a good coder. Having stated this, I do indeed – and have in the past – used libraries and frameworks either because the contract required it because said framework/library is already the base foundation, or because – yes I’m going to say it – I wanted to get it done quickly so I simply included a library and utilized a framework.

    Over the years I’ve always given accolades to jQuery for quick DOM/Ajax manipulations/interactions. But again – I can code, so I use the data binding aspects of jQuery religiously.

    Now about “Angular is hard to learn” yeah no
    it’s not
    it’s BIRD EASY

    I built a full foundational structure using angular in a day.
    One
    Whole
    Day

    so yeah… it’s easy.
    really.

    If a coder actually understands scope, or data binding, or OO or well.. anything which actually defines them as a coder?
    Angular is a natural progression.
    The library literally takes all the need out of having to set up scope – when one works within jQuery

    So dude? You just aren’t a good coder. It’s really that uncomplicated. I fully realise that your ego thinks you’re a good coder, but that’s ok… there are millions of people who karaoke who actually can’t sing, but think they sound awesome – as they drink more…

    I pity you that you can’t learn something as simple as angular, especially after all the spouting about jquery haha

    clearly grabbing code written by other programmers, using a google search is your top speed.

    • George

      Thanks for the insults. Makes me feel so much better when I see charts like these:

      http://w3techs.com/technologies/comparison/js-angularjs,js-jquery

      Just because Angular JS fans are louder and more obnoxious, doesn’t mean they’re right. Angular will never be as popular as any of the other frameworks… or libraries… so… the people have spoken. And I do believe that the title of my article was why angular will fail. And it seems as if it has. Even if it was backed up by Google. Doesn’t mean it’s a good thing. Just like Picasa and Orkut and now Google (minus). Worse than any other JS framework. It’s really sad to see people like who defend it to the death. I’m happy that you made a “Hello World” application is a day. That part, I believe you.

      Cheers!

      • James Van Leuven

        haha you crack me up. I resisted using angular from its inception. Amazingly it turned out to be a breeze for a multi location ACL module build.
        oh and ps? I haven’t written a single jquery reference. I just personally think you’re not able to figure it out. And I’ve never ever written a hello world app in any language. you can read the client side code on guthub – regarding the app
        James Mendham
        Founder

        “be without fear in the face of your enemies.
        Be brave and upright that God may love thee.
        Speak the truth always even if it leads to your death.
        Safeguard the helpless and do no wrong”

        james@bookt.in | +1 (604) 721-5474

        CONFIDENTIAL:This electronic mail (including any attachments) may contain information that is privileged, confidential, and/or otherwise protected from disclosure to anyone other than its intended recipient(s). Any dissemination or use of this electronic email or its contents (including any attachments) by persons other than the intended recipient(s) is strictly prohibited. If you have received this message in error, please notify me immediately by reply email so that I may correct my records. Please then delete the original message (including any attachments) in its entirety. Thank you

      • James Van Leuven

        Heh, you’re funny. I’ve never actually made a “hello world” app in any language with or w/o a framework or library. That seems a bit pointless. As for anything backed by Google? I’m quite anti-google, You might find it interesting to note that I quit from them, a few years ago, on a contract. I don’t agree with their philosophy of get it to market, and leave it in beta so they don’t have to be accountable. Android is a perfect example of that attitude.

        You also might be interested to note that back in the day when it was jQuery vs Mootools – purists were all sure that jQuery wouldn’t survive, with the same “industry statistics” of what our peers in the industry stated.

        So I don’t put a lot of stock in the intuitive collection of my peers in my industry. Ego and elitism is boring for me. Commonsense and pragmatic usability is my only interest.

        Now as I stated, I built a basic framework for a full blown multi-location, multiple module product – keep in mind I said ‘the basic framework’ not a “full blown app.”

        I’m still building this app, and if time allows should have it done within the next 90 days (for the most part).

        The back end is NodeJS, running on IIS. I’ve pulled all the server code from the repo, because I don’t want to expose the schema’s, security or all the funky little secret things I’m doing in the background. However having stated this, you can look at the repo yourself.

        It’s a sloppy long coded example for now, because I’m dealing with a certain philosophy which I have zero interest in explaining to anyone, simply because I do not answer to anyone, and anyone thinking I should clearly thinks far too much of themselves.

        https://github.com/jamesvanleuven/Bookt_In

        Now, here is the thing my friend. I never had any interest at all in anyway shape or form of ever learning, or exploring Angular. Ever.

        I was asked by a friend of mine if I could look at it for him and his company, as a viable methodology, to avoid the bloated DOM aspect of jQuery. I said, “sure, why not. I’ll let you know”

        It was in that single day in which the core logic and framework of the repo I sent you was created – over 2 months ago. I was – without any experience in Angular and 8 years experience with jQuery – which I adopted in favour of Mootools.

        So what I’m criticising isn’t your opinion on one language or framework or library vs another.

        I’m criticising that because you couldn’t figure it out? And because the tutorials you looked at integrated a lot of jQuery rather than learning how to accomplish the same tasks using Angular and it’s jQueryLite inclusion is WHY I consider you a bigger ego than a capable coder.

        Coding is ALL about “I don’t know this, so I’m going to learn it, and I’m going to show that I have balls and integrity by choosing to accept my own limitations and NOT blame a library or framework created by someone else, just because I can’t make it work”

        And that is entirely what that is all about.

        don’t ever let your ego determine what is and isn’t a good option. Nor should you have the elitist mentality that because you think something that anyone anywhere should give a crap what it is you think.

        so be insulted if you need to be. It’s a free world.

        • toach

          “don’t ever let your ego determine what is and isn’t a good option.”

          Great advice for anyone

  • Boy van der Laak

    “Frameworks suck, and frameworks that are not updated with backwards compatibility, fail! Just look at all of the PHP frameworks that have gone by the way side because they didn’t keep up.”

    Righteo, so you’d rather reinvent everything yourself for every project instead of resting on the shoulders of giants? Off course some stuff is quicker to write any given language without using a framework.

    I guess .NET exists for no reason then, and iOS and Android apps are easier to write for you without the backing mobile framework. Maybe we should all write our applications in raw OpenGL 2.0ES. Sure as hell possible, but would I want to? Unless I have a spare 10 years lying around to finish my next app, not a chance.

  • Panos Roditakis

    These are exactly my thoughts on client frameworks when most applications demand server side logic and output control. Why try switch the responsibilities of http & html and convert my web server to data-services provider when i have a complete architectural modeling on it running with a high-level language? How can i even imagine succesfully migrating entire application presentation principles on a 3rd party scripto-language? I think is fun only for FE devs and not web devs in general.
    I workcwith asp.net mvc that uses http a lot (razor views, html helpers, model binding etc), so jquery is the best “ui coordinator” API for controlling output (partial rendering etc) and collecting input, in a modern (async possibly) presentation layer. The server remains powerfull enough and my web application remains a web application (and anyone that comes after me understands it as one).
    So, bigger infrastructure , better languages and tooling on the server makes me keep advanced full-fledged client frameworks on the drawer a little more.

  • Clément Grimault

    pageOne = angular.element(element.children()[0]);
    $(pageOne).on(‘click’, animateDown);

    lol… I did not go away, you do not know what you’re talking

  • David Abif

    “My Dad can beat up your Dad! ” Lordy, you all sound like a bunch of girls. It’s all based on preference….

  • BraveEagle75

    Thanks for the insightful experience. As a 20 year web veteran, I too have found Angular an abomination on top of core techniques. If anything, I write Javascript using document.querySelector and only invoke jQuery if I am too lazy to write my own animation and cross-browser code. With CSS3, I don’t even need a lot of the jQuery animation stuff.

    I am finding more and more that writing core JS proves to be the safest way. Probably because I know how. For those who would “die” without a library or framework, pay me $75 per hour and I will teach you core Javascript and NodeJS. You will actually learn about lambda functions, closures, promises, objects, prototypes, event emitters and other JS fun!

  • Willie

    Ultra Income source by okmaya < Find Here

  • normanicus

    I’m an experienced programmer with little web experience. I helped someone out with some PHP years ago and was appalled at the the incompatibilities and inconsistencies of the the platform (the web, the browsers, the language). When will someone do the necessary and not just update HTML but replace it, for that is the real problem. The scaffold on which the web is built is not suitable for the structures built on it. I hear the laughter. How can you replace something on which a billion pages are built? But HTML is simple and not difficult to map to whatever would be better. What would be better? Well, the best programming experience I’ve had was using Delphi. This was because moving between design and code was so intuitive. So, I think that the best way to go it to make the default way to design a web page is a designer, a visual, drag and drop designer. Then add the logic, the links to external tools. I’m sure this already exists but what I am suggesting is that the language definition is the interface. The coding can then evolve in whatever ways as the interface and the linking procedures are the standard.

  • Tejasvi

    It’s all about using right library for right task at right place. If you do it other way, it looks like the library is a failure. But its failure of the developer to understand it.

    Developer should educate themselves on how to use right thing for right task.

    jQuery and AnularJS are developed for different purpose, In-fact, AngularJS itself uses jQuery/jqLite for some its functionality.

    I agree that learning of AngularJS is a tough task, but at the same time, it is used for tough tasks.
    But once you learn it, you can achieve many things easily… very easily.

    Complexity in learning does not mean that library is a failure. If branding something as failure is so easy, its easy to say that the person who cannot not learn something is a failure.

    jQuery has its purpose and so is AngularJS.

    Developer should know the purpose and need of using AngularJS and use it for that purpose in right way, it should not be used just for anything. AngularJS needs proper planning and structured implementation, its not developed for AdHoc purpose.

    Just for an example, implementing complex master detail entry in AngularJS is easy if planned properly, but achieving same task in jQuery is much complex.

    You just cannot compare bicycle and car, both are right for its purpose.

  • lexx

    It took me a couple of hours to read all comments, and I found it invaluable as I’m trying to decide which framework to go with. It looks like most authors of negative or disagreeing comments fail to understand the main point of this article, which is frameworks come and go, and Javascript+PHP stay + they add overhead as everyone knows pure Javascript and PHP are lot faster than their respective frameworks. It wasn’t to compare jQuery vs Angular the point was to show that why add complexity when you can do things with a simpler tool. Of course jQuery and Angular serve two different, also overlapping purposes, but the question is is it worth it investing your time and effort in learning it when you know it will change so much that you will have to relearn again and again whereas with pure JS or PHP things are much more stable. What I noticed is that younger ones will die defending Angular whereas more experienced and older devs will side with the author because they’ve seen so many frameworks come and go. Also is it just me or others also noticed that a lot of Angular devs’ comments are much more aggressive and personal with lots of name calling, belittling others, and feeling superior? I think they take it personally because they invested so much time and effort in it, and when someone questions the sanity of another trendy framework they fear that it might shake the stability of the framework and with it their investment. Even though I will give Angular a go I absolutely agree with the author, I am for making things simpler. I like Mercedes’ ideology – Don’t add, subtract. Don’t forget why complex languages like Latin or Sanskrit are dead languages and have been replaced by simpler languages in terms of grammar like English.

  • jeff

    your argument may make sense for developing an application, but angular js really shines when you have to maintain a larger ones. jquery does not lend itself to reuse without making large assumptions throughout the entire application. forget those assumptions and your app comes crashing down. angular js makes it much easier to have DRY front-end code. jquery makes it very easy to have a jumbled mess.

  • Rich Baird

    Gotta Agree with Jon on this one. Coming from the callback hell of jQuery, the structure declarative, well structured, nature of Angular was a breath of fresh air. True it took me almost a year to get a handle on, but since learning it, I can make rich interactive apps in half the time it took to do the same in jQuery. Add on top of that, that its completely testable and you have a winner in my book. The wide adoption of Angularjs on all platforms is a good indication that its not going anywhere soon. I will grant you that the documentation is quite a bit more difficult to digest than jQuery, but this is again due to their different purposes. jQuery is designed for DOM manipulation, so if you want to know how to make something happen on a click, just lookup .click(). On the other hand Angular was designed from the ground up to be a full SPA framework, so to understand how ng-click works, you need to understand controllers and directives. Basically in Angular if you find yourself doing a ton of DOM manipulation, needing to rely on jQuery to make your app work correctly, you’re probably doing it wrong. There is certainly a more declarative ‘angular’ way of going about it. This is why the best thing I ever did when learning angular was giving up on jQuery altogether. I eventually came back to it once I understood the Angular world, but now I find I almost never need it.

  • TheMayorsOffice

    I can’t tell if your post is just bait or not. You seem to be somewhat of a bright individual (minus the PHP-thing). But, I will bite. Of course AngularJS is harder to learn than jQuery! It’s a whole different type framework for completely different tasks, jQuery is not meant to do what AngularJS is able to accomplish. It’s the same thing as saying “it’s tougher to drive a transport than it is to drive a car”, of course it will be, a transport is meant to do a lot more than a car.

  • http://www.maxandriani.art.br/ Maxmiliano Reipert Andriani

    Oh God… your angular examples are totally wrong! Angular uses jQuery, and you can use jQuery inside angular as you like, but angular has ng-click, ng-class, and other expressions that allows you to manage the behavior in the controller. If you want to create an comparison example. Try to build a table grid with jQuery and Angular and you will see the difference.

    • George

      Neither. I would simply build it with html. Why complicate things? Your thinking is all backwards, friend. The moment you try to do things with one technology that could easily be accomplished with already existing technology, is the moment you prove that you don’t know web development. You may be an angular guru, but you are no web dev. It’s the same as what’s been happening with ORMs and DAOs. Write your queries in PHP… A true web dev would know that the best queries written are the ones written in a SQL language. Flexible, quick, no abstraction, and gets the job done. Every time I had the chance to use an ORM, I’ve always ran into blockers because the ORM could’t handle complex queries.

      What scares me is that you start your comment with “Oh God…” as if it’s the end of the world because I don’t do things your way. Typical angular mentality. Best of luck to you, friend.

      • toach

        George, your point is only valid if all development happened in a vacuum.
        One thing I think would help your evaluation/understanding of angular and similar frameworks is understanding the context in which such a framework would be used.
        It’s true that a simple data grid is easiest with a server language generating html. Add some jquery to that for additional functionality and call it a day.
        Unless you are an absolute moron you would never want to use anything else in that scenario.

        Now consider the opposite end of the dev spectrum.

        You have a webview ui in a mobile app that is being hosted with a lightweight http server. All of your data is coming from REST apis and you have multiple interactions on the front end. Angular or similar frameworks just became your best friend.

        There are various scenarios which require various solutions. I think what tool to use can be subjective but it is a real mistake to approach development with a one size fits all mentality.

        • George

          Wouldn’t it be faster if the webview rendered from the backend as HTML as weviews are great for interpreting HTML. Why render a webview, only to do another http request to an API? And if you are using an API, your data response should be minimal, and preferably pulled on the same request as the webview. Performance wise, multiple http requests are slow and bulky. Most APIs out there have an SDK, or some way to get curl call data from their servers.

          Even if there are exceptions, and let’s say that you have to use an API to get back some JSON data, why would you need an entire framework to handle a simple ajax call that jquery can do in 3 lines of code? Manipulate that data after it comes back. Once again, preferably in the backend before it even makes it to the front end and just render out the necessary HTML… at which point, do a second jquery call to .append() or .html() or whatever.

          Why overengineer the front end?

          One example why we wouldn’t want to overengineer the front end is simply one of my recent project where 100,000 records were being rendered in a template in a browser. The 100,000 records came back at an astonishing 0.25 seconds only to render by the front end for 2 minutes.

          You might have nice theoretical examples, but I have to deal with real world examples daily, and front end frameworks (not to exclude back end ones) are no solution to slow front end. I’d like to see how you can handle 100,000 records rendered by a front end framework. Write some code on jsfiddle or something if you’d like. I’ll show you how I do it using all of the technologies available (yes a lot of ajax calls and some manual labor involved), and you can show me how you’d do it using angular or react. Let’s test if for performance and user experience. Yes it’s a challenge.

          In the end, it comes down to architecture, not framework. If you just throw a framework at it, you’re just going to keep staying in the rabbit hole.

          • toach

            “You might have nice theoretical examples, but I have to deal with real world examples daily”

            Dude, if people are trying to engage in a respectful manner don’t be a prick. These aren’t theoretical examples and a resume contest is just being juvenile.

            A simple word of advice, if you are going to make an argument on why Angular will fail take the time to understand it. If you think these types of frameworks will fail then make THAT argument.
            Either way I would suggest your approach is a bit myopic, but that’s me.
            I’ll stick with change can be good, context matters and never stop learning.

          • George

            Don’t be a prick, yet you call me juvenile and myopic. Got it. Typical angular user. I was not trying to be a prick, but somehow your angular defenses kicked in. I was simply explaining one possible solution to avoid using a front end framework.

            Learn it? That’s the whole argument. I can already build anything I need using technologies I already have. It’s like reinventing the wheel just for the sake of arguing that it s better to leave the wheel as it was.

            Let’s get real here. Even the original creator of the framework left the project because it was getting out of hand with the complexities and the changes.

            My prediction was right, not because it was chance, but because I’ve seen this issue come up again and again in the Web Dev world. Abstraction is overrated.

          • toach

            Still missing the point. Your take on the webview isn’t wrong, until it is no longer right. The scenario I gave was a generalization of a real project where where your suggestion wasn’t possible. Which is my point. Find the right tool for the job at hand. I have no loyalty to Angular and certainly have complaints. It does some things really well and in other ways it is idiotic. The same could be said about Durandal and Backbone. (I haven’t put anything into production with Ember) But that isn’t the discussion here. If you can’t put frameworks into context you can’t really judge their value. If you don’t want to work on projects where you can’t control all the variables, that’s something else entirely.

            If you don’t want to learn something then don’t.
            If you can’t learn something move along.
            If you want to evaluate the practical value of something you need to cross the previous two hurdles.

            As for Angular’s difficulty, I think you would have a much easier time if you put it in the proper context first. From there it’s not actually that hard.

          • George

            “Your take on the webview isn’t wrong, until it is no longer right.”

            Interesting how you claim it’s no longer right and dont’ offer any example. Tell me why it’s no longer right. What has changed?

            “The scenario I gave was a generalization of a real project where where your suggestion wasn’t possible”

            All you do is overgeneralize without backing up your generalizations. Why not give concrete examples? Don’t just tell me I’m wrong; Show me how I’m wrong. How was my suggestion not possible?

            “Find the right tool for the job at hand.”

            You’re starting to sound like a politician now. Might as well have said that you’re cutting taxes.

            “I have no loyalty to Angular and certainly have complaints. It does some things really well and in other ways it is idiotic.”

            This is the point of the article. It will fail because of those ways that it’s idiotic. Why would anyone in their right mind pick something up that does something they already do, but more idiotic? And you have complaints? I have NO complaints about vanilla. In fact, vanilla allows me to write my own functionality. Frameworks fail at that somehow.

            “As for Angular’s difficulty, I think you would have a much easier time if you put it in the proper context first. From there it’s not actually that hard.”

            The reason we’re not speaking Latin is because it was a much more difficult language than English. English stuck because of its ease. It’s a lot easier to abuse the English language, but I can still understand even someone with a heavy accent and bad grammar. It’s a very, very flexible language, and although a lot of people misuse it daily (you’re vs your, there vs their vs they’re, etc) it’s the most popular language in the world, and it can’t fail because of its ease… while Sanskrit, a very structured language, is left up to the scholars and is as useless as angular.

            Want more context? The iPhone and iMac became popular precisely because of their ease of use. Modern cars are more popular than wind up cranks because of their ease of use. Windows and OSx are now more popular than DOS and Linux because of their ease of use. Difficult things have never stood the test of time for the masses. jQuery and vanilla can’t fail because they’re easy to use for any programmer, even beginners, and allow for flexibility, but angular will fail because of the opposite.

            And, finally, you saying “…and certainly have complaints” and “… in other ways it is idiotic” proves my point as to why it will fail… correction… it HAS failed. react.js and aurelia have already kicked its ass… but they too will succumb to the “difficulty use” curve and the marketing hype shall disappear, and I’m sure someone else will come up with something that shines brighter and bigger.

  • Osazeme Usen

    I still stick with side the author of this article has taken… Why make things difficult when they can be so easy?.. Angularjs is sooooo hard to use, hard to understand and hard to wrap your head around. Too many parts for very simple applications.. Humans naturally can only solve complex problems by using simple approaches. Anything short will confuse the person.

    Try solving this without counting the digits and pacing the numbers appropriately. 111111111111111111111111111111111111111111111111111 + 101010000000000000000101010101010101010101010 …..

    this is a simple problem. But without spacing this, its so difficult.

    try solving this 1,000,101,000,101,000 + 1,000,000,010,010 …. its simpler because its spaced out.

    suddenly your brain begins to find patterns for solving this problem. jQuery makes the solution intuitive, Angularjs doesn’t

  • benjiro

    Lets talk real world consequences of Angular ( and most frameworks ).

    We recently had a project developed in Angular by one of our developers. The project turned into a major head pain for the company.

    We ran into performances issues with Angular that took massive amounts of time to contain ( involving sidestepping a lot of angular code / logic for performance ). And even after weeks of optimizing, the performance was still a issue when the scope count increased & potential not fast computers from end users.

    We ran into the complexity that Angular introduces that created a lot of problems when that developer was unable to continue his duty. Having new people trying to figure out the project was a nightmare.

    The way angular is designed, it a nice system for simple project but the moment you get into a more advanced project, you run into one after another problem.

    In our case this project might have been finished a lot sooner, if it was a basic server based render job + jquery for the dynamic parts. Not only that, it will have made it more easy for people unfamiliar with Angular to jump into the project and take over the development.

    I noticed that people who complain about Angular are in general the people who did big projects with it and got frustrated with a lot of aspects of the system.

    What is up with people always wanting the latest “trend”? Its like people like to reinvent the wheel all the time. Are people sometimes so lazy that they can not code properly with just the basic libraries? I noticed how everybody is trying to reinvent the wheel with the next framework, the next framework, the next framework… and all they end up doing is creating a new abstract layout that involves people learning a new languages and then are forced to deal with the short coming of those frameworks.

    Then we are not even talking about the upgrade path of those frameworks where they break backward comparability. How many frameworks end up so people are forced to rewrite there code logic. And this can also have detrimental effects on the third party plugins / support.

    Imagine using a framework like Angular 1 and you got 3th party plugins / code. Big change that not all plugins get updated to Angular 2. Then what? More re-coding because you may need other 3th part plugins or you need to re-code those plugins.

    No offense to Angular developers who like this process but take Angular ( and most frameworks like it ) and **** it. Because frankly, it has been a head pain and a mistake. In the future i will push for pure basic server side rendering with jquery. The advantages do not out way the disadvantages.

    I am sure that a lot of people will comment how bad a development team we must have or how some other excuse because we dislike there holy symbol after our experience with it. Those same people will in a few years move on to there next big trend framework when this one loses all its glamour.

    • George

      Very well said.

  • Joe Bloggs

    The more I use Angular, the less I like it.

  • Jad Seifeddine

    you a fried banana stick to writing blog articles about nothing…

  • WithheldName

    Angular is an MVC framework for the front-end. So you can have a silly MVC framework on the back-end AND a silly MVC framework on the front-end. You can call it MVCMVC or MMVVCC. Now someone just needs to invent another MVC layer in there somewhere and we can have total absurdity!

    Will Angular fail? Not as long as people keep believing in this MVC silliness.

    If JavaScript lives up to its promise of taking over the back-end as well as the front-end, maybe some future incarnation of Angular will become commonplace. But as long as PHP, Python, Ruby, and others stand tall on the back end of web applications, Angular will be overkill for 95% of uses.

  • Antonio Brandao

    I don’t understand what jQuery is doing inside this article. Angular may “fail” for several reasons, that could have been demonstrated without mentioning jQuery. But Angular has nothing to do with jQuery. jQuery is just a toolkit. Angular is a complete framework to build rich apps. What Angular does, that jQuery will never do, which is to provide a structure for such apps. And that’s why people use stuff like Angular, React, etc. These frameworks provide a structure. Frameworks that enforce a predefined structure is beneficial for organised teams because they don’t have to rely on team member’s whims and particular coding styles or techniques. A strong convention and respective documentation outlining a proven process is available for the team right from the start. You can replace the whole team as long as they know Angular they will pick up the project and go without needing to study a whole custom approach (as if it was made with jQuery or Vanilla JS). And people will most likely use jQuery along with it anyway. Business-wise, convention, standardisation and documentation and the holy grails. So what’s the complication?

  • Dane T

    ngRepeat. That’s what makes angular amazing. Ng-repeat, with 2 way binding – is a nightmare with jQuery, but easy easy easy with angular. Also 2 way databinding is amazing because you never have to get/set the values of variables in the DOM – a drudgery with jQuery. The fact that these weren’t addressed makes me wonder whether you understand Angular very well. But thanks for the article and your opinion, hope your career goes well.

  • NotaPoster

    I have been personally struggling with the MEAN stack which uses Angular and a bunch of other things. Everything about this is overcomplicated. It is a unbelievable to me that teams actually use this stuff. When you have to follow connections in over seven server files for simple (store to database) with no warnings and that anything can go wrong. It is more than frustrating.

    I cannot overstate how frustrating this engineering project has been due to the usage of this stack and Angular. To any beginners, avoid like the plague!

  • Yugo Amaryl

    AngularJS is hard.
    The problem I see with most people criticizing Angular, is that those people are talking “web sites”. Angular is good for “Web apps”. My app is a toolbar proposing around 10 views that open in individual tabs. You can start any view any number of times, and get as many new tabs in the tab bar. Those view holds grids, hierarchical data, various editors, what have you. There is communication between the tabs. Like : if the connected user just sent a message from one tab, and has a send-box view open in another tab, the latter will immediately update, things like that…

    I did that first with JQuery, and it was hell. I did the same app again from scratch with Angular, and it took me half the time. My app is nowhere as hard to structure, maintain, and extend, as it was with jQuery alone. And I’m not an expert. I came to web development last year, and I’m learning Angular just for a few months.

  • Nicholas Johnson

    Almost 2 years on and Angular is not dead yet. Someday it will die, but not right now.

  • Reddy Bimwala

    The reason people think AngularJS is necessary is because most of the front-end developers are used to doing DOM manipulations only and writing spaghetti code. The concepts and patterns enforced by AngularJS are very standard for someone used to writing server-side code in compiled languages like I am. Therefore, it is even more apparent for people with this background that AngularJS is an overkill.

    The concept of injection of services is an overkill for client-side programming. There really is no need for that considering the dynamic nature of javascript. One should always try to embrace the philosophy behind a language to take the most of it. Prototypes and implicit context are the two pivotal ideas behind javascript. If you are used to writing SOLID code you really don’t need a framework like AngularJS to keep your app maintainable as your codebase grows.

    When you know what you’re doing, it is a natural thing to compose your app with micro-frameworks handling routing, templating, etc… the way that best suits your style and your requirements. JQuery + Knockout + a library for routing + a library for templates management (allowing you to keep the templates in separate files ideally) is all one needs to create a great SPA in no-time.

    When doing so you have the bonus of having a lot of fun, leveraging the standards, and having full ownership and confidence with your application.

  • Dmitri

    Any reason for the lack of any code indentation?

  • Ashley Phillips

    I thought Angular was really easy to learn and I hardly consider myself a genius… just go find yourself a good tutorial.
    P.S. Angular 2 is a lot more intuitive than Angular 1.

  • Dennis M Dewey

    jQuery !== AngularJS. jQuery is a DOM manipulation library. AngularJS is an MVC framework and actually includes a lite version of jQuery embedded for its DOM manipulation. Neither of them are going anywhere. I have to admit that the learning curve for AngularJS was a little steep especially when it comes to best practices, but I’m glad I chose to take the initiative to broaden my horizons. Before that, Drupal was my tool of choice and I came from the old school of thought about not relying on Javascript for mission-critical front-end functionality. That is one of the reasons I stood on the fence for awhile before learning a few different javascript MVCs. AngularJS 2.0 looks very similar to ReactJS in some respects. I have a strong intuition that javascript MVCs are here to stay and will only continue to evolve. Electron / Atom shell in combo with AngularJS (or ReactJS) is a great way to build cross-platform native applications using javascript, html and css. These frameworks are only getting better and will not go away anytime soon. If you have the time to learn it and it makes sense, don’t listen to the naysayers.

  • Luis Henrique

    You should learn more. Just it.

  • Dave Millar

    I’m new to Angular and at first glance it looked like the answer to my dreams!! After attempting my first web page I can already see that Angular is up and coming, but JQuery has already arrived!! I spent an entire day trying to get Angular to autocomplete a simple text field. JQuery makes this very easy so I eventually tried to use them both together. Angular does not play well with others!! JQuery autocompletes, but ng-model doesn’t recognize the result. It has been maddening for me, trying to make the two communicate.
    I’ve determined that the two key features of Angular, data binding and repeat simply aren’t worth all of the other headaches Angular creates. Maybe in time Angular will mature and learn to play with others, but for now JQuery is back to work making my web pages sing.

  • Buzzkill

    Trying to decide if I should use this in an upcoming and very large enterprise Web application. I think I’ll pass.

  • http://www.indiobailbonds.com/ Indio John

    I don’t think so it fails.Still there are alot of platforms which are developed by using angular.

  • Modulo m

    What bothers me about Angular is that it is flawed, but people talk about it’s flaws like they’re normal. This I believe is due to the massive marketing campaign behind Angular.js undertaken by Google. You might wonder why they spend so much money on marketing this framework with conferences and user groups around the world. It all has to do with the Google brand and bringing people under the umbrella of Google technology.