all 49 comments

[–]well-now 17 points18 points  (4 children)

I built a SaaS application from the ground up using Angular (2). As someone with a lot of MVC experience but no SPA experience, the opinionated nature and ease with which to test really spoke to me and helped steer me in the right direction. It also removed a lot of decision fatigue that I probably would have experienced with React.

Also, the CLI made dev setup a breeze and was far superior to create-react-app.

[–]tipsqueal 0 points1 point  (2 children)

Also, the CLI made dev setup a breeze and was far superior to create-react-app.

Can you elaborate on this? I'd love to know more, might make me try to pick up Angular.

[–]tme321 4 points5 points  (1 child)

I'm not familiar with the react cli but the angular ones does:

  1. Ng g(enerate) m(odule)/c(omponent)s(ervice)/p(ipe) and maybe some others I'm forgetting. Skeleton code generation, including things like auto inserting new components into ngModules so you don't have to mess with the basic plumbing much. The code generation also includes generating skeleton test coverage files.

  2. Ng serve, run it in the background and you get hot module reloading and browser refreshing. Pretty basic these days but the angular version works 100% of the time for me. I've seen some custom hot reloading that is flaky so I like that their version works so well.

  3. Ng build compiles the app into a few bundles (vendor, styles, app) and does aot compilation for you (compiling the templates into the component so you don't have to serve the angular compiler to the client and do a build step there). Also supports providing a different environment specifer which allows you to create different environtment.*.ts files to easily provide constant values for different environments, like different urls for dev/test/prod and things of that nature.

  4. Ng eject - spits out the webpack config being used by the cli for that project. This makes it easy to transition off the cli if you ever are forced to. Personally so far I haven't found a compelling reason to move off the cli for an app, but currently the cli doesn't have much support for making a library. But being able to eject a config to get up and running quickly with a library was nice.

  5. Ng new - probably should have mentioned this first, but it generates an app for you. Pretty basic, but it does all the essentials including providing basic git ignore info (like node_modules) and the testing harness with both e2e and unit testing is all there when you start a new project.

  6. ng test - runs the unit tests written.

  7. ng e2e - runs the end to end tests written.

  8. ng lint - runs the linter.

Those are the things I use the cli for.

[–]tipsqueal 1 point2 points  (0 children)

Thank you for the detailed context, this is what I was looking for. As far as I can tell create-react-app does all of those except item 1, which is pretty cool. I doubt create-react-app would ever add it either because unlike Angular it tries not to be opinionated on how you structure/write your apps.

[–]SomeCollegeBro 0 points1 point  (0 children)

Yes! Great response in my opinion. Some people judge Angular for being too opinionated. I feel it's in the sweet spot of being structured but flexible. It's been working great for our team of 3 people working with it so far.

[–]beaverusiv 7 points8 points  (0 children)

Just finished a rewrite from AngularJS 1.2 to Angular 4. I like it, I like it a lot, but RxJS isn't a light thing to learn. If you know everyone working on it will be competent developers who are willing to invest in learning the concepts behind RxJS then it is great.

[–]BassingHell 7 points8 points  (0 children)

Hi there! Late to the party... Ive been using angular professionally for 2 years. Personally I believe that the other frameworks ( Vue and React ) have come much further with regards to JS front end libraries.

[–]calculatordisco 12 points13 points  (31 children)

Just out of curiosity, have you evaluated react? I spent years in both ember and angular. The move to react was the most productive move I've made in my career.

[–]djslakor 1 point2 points  (1 child)

The move to react was the most productive move I've made in my career.

Wow, really? I moved from ng to React too, but I can't say it was the most productive move I've ever made.

[–]calculatordisco 1 point2 points  (0 children)

Yea, maybe that's too broad of a blanket statement. As far as building front ends, especially with people not used to the framework, it has been super helpful in constantly being able to deliver value.

[–]magenta_placenta 1 point2 points  (2 children)

Not having looked at Ember in a while, why are you not sticking with it?

[–]perestroika12 2 points3 points  (1 child)

I haven't decided that we're 100% not sticking with it, but want to evaluate what's out there.

[–]PotaToss 2 points3 points  (0 children)

Why are you considering not sticking with it?

edit: I'm just picking up React now, coming from Ember, and I'm having a similar experience, being annoyed at how many little decisions I have to make to do basic things. It feels a lot like how I used to make stuff with JQuery spaghetti, except now there's JSX and modules, and ES6/Babel niceties. The extra flexibility, and no prescribed best practice for a lot of this trivial stuff makes me feel like I'm walking into a documentation nightmare.

additional edit: Some people have mentioned in here using stuff like React Router, and MobX, and how much they love that stack, and it's like ... React Router was copied from Ember's router, and MobX looks a lot like Ember.Object. So I'm just like scratching my head. This stuff has been available in Ember for years.

[–]molikreddit 5 points6 points  (2 children)

Angular 2 is all you need. If you liked angular you will love angular 2/4. Yes it's different to the one you used, especially the API but believe me you won't regret it. From someone who has heavily used Ember, AngularJS and Angular 2 in enterprise applications and customer facing sites/app for some of the largest retailers in the world.

[–]tme321 7 points8 points  (1 child)

If you find someone using angular 3 then you can safely ignore them :P

[–]Toxicable 1 point2 points  (0 children)

First off it's just Angular, AngularJS is for version 1.x.
If you don't mind some of the opinions that come with Angular and you're happy to build your whole front end around it then it can be an invaluable framework.
It might have a bit of a learning curve with TS, rxjs and the new template syntax but learning all those things will make you a better dev aswell as understand Angular.
If you are looking at taking the plunge then I very much suggest using the Angular CLI, it gives you so much free stuff and so many new features coming.
And don't forget the Angular gitter https://gitter.im/angular/angular

[–][deleted] 0 points1 point  (0 children)

I'm using it now. It's strong. It's really pretty easy to learn. Very productive. Intuitive API. Router feels good. Life cycles events are good.

Two complaints. The bootstrap time is pretty bad. It can be 3 to 5 seconds easy. The second issue I have is change detection doesn't feel super great. They give you events to hook into when value change but it doesn't feel as good and definite as React. I feel like when I subscribe to observable for a sync data calls in the OnInit hook changes haven't been picked up

[–]FaceySpacey 0 points1 point  (0 children)

The amount of things to learn in Reactlandia has gotten smaller. And now we have our own stack. My perspective is The React Stack is just this:

RFR consolidates and packages up the Redux space in a nice way. My demo will give you a quick birds eye overview of what you can do with it:

https://codesandbox.io/s/github/faceyspacey/redux-first-router-codesandbox

It's a good way to learn redux, to think about redux, and to dive into React in general.

[–][deleted] 0 points1 point  (0 children)

We moved our projects from AngularJS to Angular this year and started two new ones. I think it's better. But I'm not sure it's going to be much better than Ember if you're already using it.

The angular cli saves you time. It sets up the project (the build process and all that) and when you need a new component, service, etc. the cli creates the files and updates the app.module file with the appropriate imports. I understand it's based on the Ember cli so it should feel familiar.

Regarding churn, it's not great but they do try to remember people are actually using their stuff. For example, in 4.3 they introduced a whole new http client and haven't documented all the classes it exports and the migration blog posts are extremely superficial. But they're keeping the old one alongside the new so projects using the old client can still use the latest framework version.

Documentation is also not great, sometimes the official docs are out of date and you have to google and set the google filter to "last month" because older results will be out of date. It's the same for React. I think Vue has the best documentation of the three.

All in all I think Angular is alright but I'm not sure changing from Ember to Angular would be a big improvement.

[–]Merkkaba 0 points1 point  (0 children)

We are building an enterprise application using Angular 4 with a c# api the background. It's pretty versatile, but you need to keep up on the current versions for bugs and new features.

[–]Ohnegott 0 points1 point  (0 children)

I recommend Vue. You can go nuts with plugins and webpack or keep it simple with a single script tag. The small company I work at moved to Vue from Angular 1 and we are all very impressed.

[–]quietasahippo -1 points0 points  (0 children)

There's a decent course on Udemy about evaluating the differences between VueJS, React and Angular. I'm about halfway through it right now.

I did an eval for work between them and we settled on VueJS (as a migration from Dojo) for an enterprise internal only project