The Angular team has released the first beta version of Angular 2. There are still a few things to finish before the final release, but the beta gives developers a solid ground to build their apps upon.
The road towards Angular 2 has been long and winding. InfoQ first wrote about it in March of 2014 and we've tracked its progress since. Though version 2 uses some of the same nomenclature and concepts, many of the building blocks of an Angular 1 app don't exist in Angular 2. It remains to be seen how the community will respond to the new version.
In a blog post announcing the release, Angular manager Brad Green said, "Beta means we're now confident that most developers can be successful building large applications using Angular 2."
Angular 2 went through 55 alphas, and developers that followed along dealt with constant breaking changes. In the beta, a breaking changes will be handled with more care. Instead of simply changing a feature, the change will be phased in. In an interview on Angular Air, Misko Hevery described the process:
Going forward, when there are going to be breaking changes, we will make sure that we have a deprecation story. So, we'll go through a period where both of the changes work and finally deprecate the old one."
Igor Minar added,
We don't plan to make many major breaking changes. The beta is the period of time for us to absorb feedback, to have people try Angular 2 see how well it works, what works, what doesn't. Based on the feedback, [we'll ask] are these changes worth making and, if they are, we'll have the deprecation story, we'll deprecate some of the APIs.
One of the biggest changes that occurred prior to the beta was moving away from kebab-case to camelCase in HTML templates. The kebab case was originally a workaround because the HTML parser in browsers converts everything to lower case. To accomplish some of their other goals, the Angular team had to build their own template parser. In doing so, they were able to make it case sensitive, thus the property names in HTML now match their JavaScript counterparts.
Beyond just the normal refinement stage of a beta, Green mentioned five items they want to finish up prior to release:
- Reducing Angular 2's payload size.
- Making the Angular CLI usable end to end throughout the development process.
- Creating a more developer-friendly route definition and link API for the Component Router.
- Support for animations.
- I18n and L10n support.
"The final release date really depends on the feedback and how things go," Minar said.
In a discussion on Hacker News, user segphault sounded a positive note:
Angular 2 addresses a lot of the serious shortcomings in Angular 1.x. The Angular 2 approach to components and encapsulation feels cleaner and less complicated than the previous mess of services, factories, and directives. Though initially skeptical of Typescript, I've found that Angular 2 really benefits from the advantages of having a coherent object model and optional type safety. Typescript never gets in the way.
More information on Angular 2 is available at angular.io and the Angular GitHub repository.
Community comments
Why?
by Rob Eisenberg,
Re: Why?
by Mac Noodle,
Re: Why?
by Rob Eisenberg,
Re: Why?
by Mac Noodle,
Re: Why?
by Rob Eisenberg,
Please consider Aurelia instead of Angular 2
by cowboy cowboy,
Re: Please consider Aurelia instead of Angular 2
by John M,
Re: Please consider Aurelia instead of Angular 2
by cowboy cowboy,
Re: What about ScalaJS?
by Ervin Nemesszeghy,
Angular 2 not worth it
by Giovanni Candido,
Why?
by Rob Eisenberg,
Your message is awaiting moderation. Thank you for participating in the discussion.
If you look at the other options out there for building rich JavaScript clients, there's almost no conceivable reason that you would choose Angular 2. There are some very strange things that aught be making every developer's "spidey sense" tingle:
* Why did it take 20+ Google engineers over 2 years to produce a Beta JavaScript framework?
* Why did they go two years before entering a time where they can absorb feedback? Why such infrequent blog updates? Is that how open source should even work?
* Do they really expect to absorb feedback? If so, how will they do it in a non-breaking way and maintain the integrity of their Beta announcement? Why didn't they incorporate the massive amounts of feedback already provided many months ago?
* Their binding language, while valid HTML, is not valid SVG. Why didn't they fix this many months ago when it was repeatedly pointed out to them that it wouldn't work in the browser? Why did they persist in non-standards-based syntax?
* Their new templating syntax isn't valid HTML anymore either. It can't be handled by any browser and requires an angular-specific parser. Why are they purposefully making more and more decisions that make them non-standards compliant?
* They touted Web Components as a major reason for creating Angular 2 in the beginning. However, now they are based on non-standardized markup. How do they expect this to work at all with Web Components when it can't even work in a browser as is? Are they now gong to have two different markup strategies?
* The size of Angular 2 is massive. It's almost unbelievable. 1.5 MB...and that doesn't even include things like the router, animation, etc. That's more than three times larger than the next largest framework that I know of and it doesn't even contain all the essential features. It's also 20x larger than Angular 1.
* Google is not committing to Angular 2. They have other competing UI Frameworks which are more highly presented at their developer conferences, such as Polymer.
* Angular is not an official Google product, has no support of any type and comes with no "time of life" guarantee. Is it really a good idea, in 2015 or 2016, to build your entire business or app on a platform that Google isn't committed to and doesn't support officially? There are other options today that do come with commitment and support. Why not use them. If you were picking a backend technology, you would surely not make this mistake. With frontend as beg as it is today, shouldn't the same care be taken?
This list could go on and on. If developers will just take time to look beyond the logo and the hype...peeling back the layers will reveal something you definitely want to stay away from. Indeed, it becomes hard, maybe impossible, to make a strong technical or business case for using Angular 2, especially when there are multiple other platforms available that do not suffer from these problems.
Please consider Aurelia instead of Angular 2
by cowboy cowboy,
Your message is awaiting moderation. Thank you for participating in the discussion.
I don't know why anyone would consider using Angular 2 when a better alternative like Aurelia is available.
Almost in all ways, aurelia.io is way better than Angular 2.
Re: Why?
by Mac Noodle,
Your message is awaiting moderation. Thank you for participating in the discussion.
So. stick with AngularsJS 1? :)
Re: Why?
by Rob Eisenberg,
Your message is awaiting moderation. Thank you for participating in the discussion.
Whether or not you should stick with AngularJS 1 is a difficult to answer question. I wouldn't do any greenfield work with AngularJS 1; I wouldn't bank on it for the future since it's even less likely to be continually maintained over the long haul. If it's working for you on an existing app that you don't need to change much in the future, then I wouldn't bother doing anything.
That said, just because you are using AngularJS 1 or are familiar with it today, doesn't mean you can't move to another framework besides Angular 2 tomorrow. It's really important to note that Angular 2 is only "Angular" in name, not in substance. It shares no code with Angular 1, bears almost no resemblance to it, comes with a different set of concepts, and even has a different set of capabilities and limitations. It would be just as easy, or maybe easier, to learn a new framework in the future, than to learn Angular 2 after Angular 1. They are really that different.
Re: Why?
by Mac Noodle,
Your message is awaiting moderation. Thank you for participating in the discussion.
The good part about AJS1 is the community and all the third party widgets and how easy it is to use and the jobs.
I researched and tried a bunch of different client JS frameworks. Most were either difficult to use or, even though very good, didn't have enough community support or widgets.
So to your point, I have not made plans to move to AJS2 yet because my job is to build applications, and applications need more then just a basic framework.
FYI, while the 2 are different, they (google and/or the community) are building bridges so that apps can be "migrated".
Sadly, i have not found anything or heard of anything to truly replace it.
Re: Why?
by Rob Eisenberg,
Your message is awaiting moderation. Thank you for participating in the discussion.
I think what they are calling "migration" is more like "integration". It requires you to have both frameworks running in-browser at the same time. That's not really something you *want* to do. Any real migration would involve completely re-writing the app. It's a ton of work. Adding 1.5MB just to add a single ng2 widget into your mostly ng1 app is just not practical. It only starts to make sense if you have already converted the majority of your app to ng2.
I hear your concerns on the ecosystem front. It's true that there isn't anything that compares to ng1 there. However, among the next generation frameworks, there are better ecosystems than ng2 already. If you don't *need* to port an app today, then probably by the time you need to port one or write a new app, there will be some other options available, comparable to the ng1 experience.
Angular 2 not worth it
by Giovanni Candido,
Your message is awaiting moderation. Thank you for participating in the discussion.
Angular 2 is a old for me, not like it.
The template syntax is for aliens not humans
Is boilerplate
The size of framework is insane. I think they are putting too much hope in the shrinking efforts of build tools.
Google, in my opinion, is not reliable for dev tools. They compete internally, change too much, do not provide a long term vision and don't think twice before trashing 2-4 years of working, tens or hundreds of engineering staff work to start over the "next hype". It's uncomfortable for me
The only thing that could rise angular 2 is it community, there are lots of plugins and work done in angular 1, but version 2 should have other name on it :-) I think we should use other frameworks.
The framework that catch my attention and work now is aurelia.io
Re: Please consider Aurelia instead of Angular 2
by John M,
Your message is awaiting moderation. Thank you for participating in the discussion.
I find it interesting someone posted a suggestion to use Aurelia when Rob Eisenberg is part of the team developing Aurelia.
I know Rob Eisenberg has a blog where he has announced he left the Angular 2.0 dev team. But I wanted to point this out.
Re: Please consider Aurelia instead of Angular 2
by cowboy cowboy,
Your message is awaiting moderation. Thank you for participating in the discussion.
Judge the framework, not the person.
I am not affiliated with Rob or his team. I'm only a dev using Aurelia (and I happen to advocate Aurelia because of it's merit). After surveying the latest JS frameworks including Angular 1 and 2, Aurelia came out on top. 2nd, RiotJS.
aurelia.io > RiotJS > Angular 1 and 2
Re: What about ScalaJS?
by Ervin Nemesszeghy,
Your message is awaiting moderation. Thank you for participating in the discussion.
ScalaJS also looks promising.
www.parleys.com/tutorial/why-scala-js
Same language on both server and client.
www.scala-js.org/
What people think?