
You have ruined JavaScript (2014) - jarcane
http://codeofrob.com/entries/you-have-ruined-javascript.html
======
chris_wot
He's upset with the following:

"An Angular "service" is a singleton object created by a "service factory".
These service factories are functions which, in turn, are created by a
"service provider". "The service providers are constructor functions". When
instantiated they must contain a property called $get, which holds the service
factory function."

He programs his front end in React. I'm not an expert in React in any way, but
let's look at some sample code:

    
    
      "use strict";
      
      var HelloMessage = React.createClass({
        displayName: "HelloMessage",
      
        render: function render() {
          return React.createElement(
            "div",
            null,
            "Hello ",
            this.props.name
          );
        }
      });
      
      
      ReactDOM.render(React.createElement(HelloMessage, { name: "John" }), mountNode);
    

In this code, I see what looks like a singleton object called ReactDOM, which
would be an Angular service. There's a factory function "createClass" (a
service factory), which is created by an object called React - which looks
suspiciously like an Angular service provider.

Call me a cynic, but this rant looks like an uninformed screed, written by
someone who thinks that creation patterns are only creation patterns if they
are called factories, singleton factories and factory-functions (or
constructor functions).

If he can't identify patterns in use in his favourite tool that are precisely
the same as the ones he criticises, then I'm not sure he's as good a coder as
he thinks he is. Even if he enjoys writing in Erlang.

~~~
draw_down
I think the code you posted is much simpler, both conceptually and at the
level of the code itself. We know what classes are, we know what render means.

I think the requirement to express markup as a tree of function calls is
inelegant (JSX is no different, just shorthand for this) and my least favorite
part of React, but I'll take inelegant over WTF any day.

~~~
chris_wot
I'm not an Angular expert, and this isn't quite the same, but seems to show
the same basic principles at play:

    
    
      var helloWorldApp = angular.module('helloWorldApp', []);
    
      HelloWorldApp.controller('HelloWorldController', function ($scope) {
        $scope.displayName = "HelloMessage"
      });
    

I believe you just add a directive to add a new element. Slightly more code,
but the same concepts in play. React uses an MVC framework, only it doesn't
use those exact words.

Seems pretty much the same to me!

Note that React may well be easier to understand, but its not because it
doesn't use a singleton object to access an object factory created by a
provider of factories (a factory that creates factories).

------
pkorzeniewski
My feelings exactly, it's like people in tech intentionally complicate things
in order to stay relevant and irreplaceable, or maybe using complicated
solutions makes them feel superior? No one cares how your app works as long as
it works, I've created large web apps using a small set of libraries and guess
what - they still work fine after so many years. Keep it simple, stupid.

~~~
chris_wot
Einstein said that everything should be as simple as possible, but no simpler.
In the case of certain enterprise apps (yup, such things exist!) frameworks
like Angular are often required.

~~~
alexwebb2
Required as in _mandated_ , perhaps, but certainly not required as in
_necessary_.

~~~
chris_wot
You say that, but you would be often wrong.

~~~
VOYD
Anything you can do with a framework, you can also do without a framework.

~~~
chris_wot
Thank you for expressing that insight.

------
draw_down
To me this is mostly just a rant about why Angular is terrible. And I agree,
it's absolutely terrible. Frustratingly overwrought (I dare you to output a
URL in a template, go on, I dare you) and built on top of some unfortunate
ideas like dirty-checking and all this service factory madness.

Fortunately, it's far from being dominant in front-end dev.

~~~
chris_wot
How would you build a templating framework in JavaScript?

~~~
draw_down
I'm a big fan of Ractive, check it out. Ractive.org

~~~
chris_wot
Takes me to a page under construction then redirects me to a blank page.

Edit: I think you meant ractivejs.org

~~~
chris_wot
Ok, seems pretty cool! But here's some news for you: it's doing dependency
injection also.

------
jasode
The previous submission already has a very good top comment from haberman and
provides a balanced perspective:
[https://news.ycombinator.com/item?id=7633625](https://news.ycombinator.com/item?id=7633625)

------
oceanswave
Somehow I can rant about any topic on the internet, but so long as the topic
includes a dissenting opinion about javascript, it will be upvoted.

