Hiển thị các bài đăng có nhãn announcements. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn announcements. Hiển thị tất cả bài đăng

Thứ Tư, 16 tháng 3, 2016

Angular Material 2: Alpha preview!


On Tuesday, we released angular2-material alpha.0 - titanium-octopus, kicking off the public availability of the initial set of Angular Material 2 components.

What is Angular Material?

The goal of the Angular Material project is to build a set of reusable Angular components that implement Google's Material Design specification. We've already built a comprehensive set of these components with Angular 1; check out https://material.angularjs.org for demos and API docs. You can see these Angular Material 1 components in action on several Google products, such as Google Trends, Google Shopping Express, and your Google Search history.

Angular Material 2 vs Angular Material 1: What's different?

The new Angular Material 2 components are built completely new on top of Angular 2 so that they can take advantage of the improvements to both Angular and the web platform. We're also taking the lessons we learned building the current Angular Material to create something better than ever.

Can I use Angular Material 1 components in Angular 2 apps?

Sadly, no. To get the full benefits of Angular 2, you'll eventually need to upgrade to Angular Material 2.

We're working on cookbook examples to help you plan the upgrade from Angular Material 1 to Angular Material 2. These will be available closer to final release.

What does this alpha mean for Angular Material 1 Apps?

This new version for Angular 2 doesn't mean that Angular Material 1 is going away any time soon.

We know that many Angular 1 applications depend on Angular Material 1 for their UI, and that adoption of Angular 2 will take time. We are committed to both branches.

While bringing Angular Material 2 to feature parity, we are also actively working on maintaining and improving Angular Material 1, through regular minor and bugfix releases. We anticipate that Angular Material 1 will be supported for a long while.

What does the alpha process mean?

This alpha release is the first small step in an ongoing, rapid-iteration process. (So rapid, in fact, that we're already at alpha.1) Over the coming months, the team is going to be constantly adding new features, fixing issues, and incorporating community feedback. APIs will break, behaviors will change, and FABs will be flying everywhere! This process will let us hone-in on the best possible set of components for Angular 2 applications.

Check out angular/material2 on GitHub for more information on how to try out the new Angular 2 components, and stay tuned here and on Twitter for future announcements!

Thứ Sáu, 5 tháng 2, 2016

Angular 1.5.0 - ennoblement-facilitation has been released!

We have just released the next major version of Angular 1, which has been in development since May last year.
The primary theme for this release was to improve the upgrade path to Angular 2.
In this release we have added features that will enable developers to write Angular 1 applications that are closer to the way that applications are structured in Angular 2.

New Features

The big feature changes to Angular 1 in this release are mostly focused around supporting Angular applications that are built from Components. But there are a number of other features that will improve your development experience.

Component-based applications

Defining component directives

While creating components in Angular has been the primary way of structuring applications for a long time, we now made it possible for you to easily define a component directive with the module.component() helper method. For example a simple component only needs to provide a template, some bindings and a controller. For the remaining directive options we set sensible defaults.

myModule.component('myComponent', {
template: '<h1>Hello {{ $ctrl.getFullName() }}</h1>',
bindings: { firstName: '<', lastName: '<' },
controller: function() {
this.getFullName = function() {
return this.firstName + ' ' + this.lastName;
};
}
});
<my-component first-name="'Alan'" last-name="'Rickman'"></my-component>
Read the new component guide to find out more about this.

Lifecycle hooks

If your directive/component controller has a method called $onInit() the compiler will now call it after the component has been initialized and all its bindings have been set up. This provides a clear place to put the initialization code for your components and is similar to the ngOnInit() lifecycle hook of Angular 2.

Binding to required directives

As well as the string and array forms, you can now specify an object for the require property of directives and components. If used with bindToController, the compiler will also automatically bind these required directive controllers to your controller.
These bindings (including those of sibling directives) are guaranteed to be in place by the time the $onInit() hook is called.

Multi-slot transclusion

You can now specify that different parts of the transcluded content is rendered at different slots in the template. See the 1.5.0-beta.2 release announcement for a detailed explanation of this feature.

Default transclusion content

ngTransclude no longer overwrites its contents if there is no content to fill it. This means that you can provide default content to be shown if the user of your directive has not provided any content to be transcluded.

One-way bindings

You can now define a directive/component binding using the '<' character to indicate that the binding is one-way. In this case the compiler will only set up a watch on the outer expression and not on the internal property. This means that changes to the value of a binding inside the component will not be propagated to the outside. See the $compile API docs for more information.

Improved support for ES6 classes

We now support instantiation of native ES6 classes in the $injector and as a controller. Due to variable browser support this is a volatile feature, so be careful to test on your target browsers before going to production.

ngAnimateSwap Directive

We have introduced the new ngAnimateSwap directive, which allows you to animate a collection of DOM changes together as a single container swap. See the 1.5.0-beta.2 release announcement for a detailed explanation of this feature.

ngResource

We now have proper support for cancellable actions on resources, which means a $cancelRequest() method will be available on the return value of the request method.

ngRoute

Any promises resolved as part of a route's resolve property are now added to the scope as a $resolve property, which saves you having to inject them into the route controller.

Other Improvements

There are loads of other improvements, which you can find in the Angular changelog. Here are a few highlights:
  • You can now access the locals object that was passed to a call to $parse from inside the parsed expression, via a $locals variable.
  • You can provide $http configuration options of the $templateRequest service.
  • You can create your own custom XHR objects for the $http via the $xhrFactory service.
  • ngModel now provides ng-empty and ng-not-empty CSS classes.
  • The ngAria module is now more precise with handling of ARIA attributes and tabindex for custom controls.
  • Some new helpers are available on ngMock to ease testing:

Security Improvements

There have been a number of people who have contributed to the project over the last few releases by analyzing and identifying security issues in the Angular code base, which we have then fixed. We really appreciate the work that these people do. In particular we would like to thank Mario Heiderich, Gareth Heyes and Jann Horn and the security team at Google.

Migrating from 1.4 to 1.5

Angular 1.5 is the fastest, most feature complete and reliable version of Angular to date. We highly recommend upgrading your applications to use it.
While we tried to keep the number of breaking changes in the core to a minimum a few were unavoidable and will generally only affect very rare corner cases.
You can read about how to migrate and what breaking changes might affect your application in the migration guide.
If you find any issues with Angular while you are migrating, please report them at Github.

Thanks

Once again, Angular could not be what it is without the constant support of the literally millions of developers across the world who are using and contributing to the project, either through submitting issues and pull requests, running conferences and workshops, writing tutorials and sharing their real world experiences.

From everyone at the Angular team, we hope you enjoy developing with this latest version as much as we have enjoyed building it.

Thứ Hai, 11 tháng 1, 2016

Angular 2: an MIT Open Source Licensed Framework

Guest-blogger Max Sills is an attorney in Google's Open Source Office, and our expert on all things legal related to Angular.  Enjoy!  - Naomi
As of beta.2 this week, we're moving Angular 2, its related libraries, and any code snippets and examples to the MIT license.

Open source licenses are meant to protect developers by making it clear how code can be used. We want developers to be confident that they can use, fork, modify, and extend Angular without worry.

At Google we prefer to license new projects under the Apache 2 license because we feel it gives the most rights to developers and creates a strong legal scaffold for projects to grow and thrive. However, what we've heard from users in the Angular community is that you prefer the MIT license. It's more widely used within JavaScript projects, it's shorter, and it’s better understood.

So, we're changing Angular back to the MIT license.

Happy coding.

Thứ Ba, 15 tháng 12, 2015

Angular 2 Beta

We're ecstatic to announce that we've reached Angular 2 Beta.  You can read about many of the improvements over Angular 1 in a recent post.  Get started learning Angular 2 now at angular.io.

What does 'beta' mean?

Beta means we're now confident that most developers can be successful building large applications using Angular 2.

Through developer preview and alpha we've worked closely with several large projects here at Google including AdWords, GreenTea (Google's internal CRM system), and Google Fiber.  In fact, just a few weeks ago we saw Google Fiber launch on their new Angular 2 code base.

Externally, we've worked closely with several other teams integrating with Angular 2 including Ionic Framework on Ionic 2, Telerik on NativeScript, Rangle.io on Batarangle, and many others.

We've incorporated the majority of feedback from these teams that would create breaking changes.  Given this, we're looking forward to other teams developing in earnest and telling us how we can help.

Getting Started

Get going now with the updated and expanded Quickstart and Tutorial on angular.io.  From there, you can check out several developer guides and a handy cheatsheet covering the main features in Angular 2.

While the many in-progress Angular 2 books and courses will likely take a few weeks to catch up to the latest changes, we can recommend taking a look at the clear explanations and examples on the thoughtram blog and this in depth primer on Angular 2.

Upgrading from Angular 1

You may have an Angular 1 app today and you want to start writing Angular 2 code in that app, without changing your working/tested angular 1 code. This is where ngUpgrade comes in.

While you can upgrade apps in a "big bang" approach where you halt production until everything is rewritten, we're supporting two paths for where teams want to upgrade their Angular 1 apps to Angular 2.

ngUpgrade

We know many of you made large investments in Angular 1 and have created some awesome apps. We created ngUpgrade for all of you to make it possible to leverage your existing apps and move forward with Angular 2.

ngUpgrade lets you mix Angular 2 into your existing Angular 1 application.  You'll get to take advantage of Angular 2's improved speed and APIs immediately as you replace components a bit at a time over the course of your releases.  Learn more in this article from thoughtram and the upgrade guide in our docs.

ngForward

Some teams, with apps that are more sensitive to download size, will want to avoid having both Angular 1 and Angular 2 libraries running in their app simultaneously.  For this, we have ngForward which lets you write Angular 1 applications in the syntax of Angular 2.  This lets your team get used Angular 2 conventions and styles in your apps today and shorten the distance to doing the full upgrade to Angular 2 when you're ready.

Providing Feedback

As always, please submit issues via GitHub, questions on Stack Overflow, and join the live conversation on Gitter.

We've also recently added a mechanism for submitting feedback for all pages.  Just click on the exclamation point icon in the upper right of the page and tell us what could be improved.

What comes next?

We're already hard at work on the set of improvements to move Angular 2 to its full and final release.  While we will make many small improvements, the big ones for final are:

  1. Reducing Angular 2's payload size.
  2. Making the Angular CLI usable end to end throughout the development process.
  3. Creating a more developer-friendly route definition and link API for the Component Router.
  4. Support for animations.
  5. I18n and L10n support.


And there are even more cool things to come -- some we've already started on including:

  1. More documentation, particularly around ES5/ES6 usage.
  2. Even better startup and runtime performance
  3. An architectural style guide
  4. Unit and end-to-end testing improvements
  5. More support for mobile web and installable mobile apps
  6. Material Design components for Angular 2
  7. A tools platform for deep IDE support
  8. Better support for ES6 and Babel

Thanks, and we're looking forward to seeing the apps you build appear on madewithangular.com!

Thứ Tư, 27 tháng 5, 2015

Angular 1.4.0 - jaracimrman-existence

Angular 1.4.0 has arrived! This is a truly community driven release.


This release brings many feature enhancements and performance improvements, while at the same time introducing as few breaking changes as possible. For apps following best practices, we expect the migration from Angular 1.3 to 1.4 to be smooth and the list of breaking changes is documented in the migration doc.


We started work on 1.4 in November last year. The features and issues we concentrated on were guided by an analysis of feedback from developers using the framework in real projects. The planning was done in public, see the planning spreadsheet and video of the planning meeting. The weekly meeting minutes are available online.

New Features

In over 400 commits, we have continually improved the docs, fixed more than 100 bugs, and added over 30 features. Here is a rundown of the new things you can benefit from in this release.

Animation

Matias completely refactored animations, giving it more powerful features and squashing tons of edge-case bugs at the same time. This code overhaul is backwards compatible, except for a small number of documented api changes. This refactoring makes it possible to imperatively control CSS-based transitions/keyframes via a new service called $animateCss. We can now also animate elements across pages via animation anchoring.
  • Complete refactor of internal animation code (c8700f04)
  • CSS-driven Javascript animations (see docs)
  • Better support for animation callback events (see docs)
  • Move elements between views with animation anchoring (see docs)
  • Provide support for animations on elements outside of $rootElement via $animate.pin() (e41faaa2)

$http

Pawel did some great work fixing outstanding issues in the $http service and also implemented a mechanism for providing custom URL parameter serialization, so now it is easy to connect to end-points that expect parameters to follow the jQuery-style parameter serialization.

Internationalization

Chirayu worked hard on improving i18n support for Angular apps. The first piece of this work was to provide a new ngMessageFormat module that supports the ICU MessageFormat interpolation syntax.

  • extend interpolation with MessageFormat like syntax (1e58488a, #11152)
  • Add FIRSTDAYOFWEEK and WEEKENDRANGE properties in the ngLocale data (3d149c7f)

Compiler related

To complement our push towards more use of `controller as` syntax in our component directives, Caitlin added support for binding a directive's element attributes straight onto the directive's controller.

Cookies

Shahar had stepped up to implement the much needed overhaul of the ngCookies module. The $cookieStore has been deprecated and its functionality moved over to the $cookies service, which now has a much cleaner interface. He also implemented the frequently requested feature to set cookie options for individual cookies as well as configuring the defaults via $cookiesProvider.

Form Related

Matias was at it again, this time adding dynamic message support to the ngMessages directive, which makes it much easier to display messages requested at runtime from the server.


ngOptions was completely refactored to allow a number of annoying bugs to be fixed, it also now supports disabling an option using the `disabled when` syntax, thanks to Stephen Barker.

Shahar added improved support for specifying the timezone on date/time input elements that are using ngModel.
  • ngModel: support conversion to timezone other than UTC (0413bee8, #11005)

jQuery related

Michel Boudreau worked with Michał to allow us to specify exactly which version of jQuery (if any) we want Angular to use. This option also allows developers to instruct Angular to always use jqLite even if jQuery is present on the page, which can significantly improve performance for applications that are doing a lot of DOM manipulation via Angular's templating engine.
  • ng-jq: adds the ability to force jqLite or a specific jQuery version (09ee82d8)

Accessibility

Marcy Sutton continued to improve the accessibility of apps built with Angular with new features in the ngAria module:

Filters

We tweaked and improved a number of the filters. Shahar did some nice work to bring better timezone support to the date/time filters; Tamer Aydın helped to add a start index to the limitTo filter; Georgios completely rebuilt the filter filter to be able to compare with deep objects; and Quentin improved the support for infinity in the number filter.

Testing

Miscellaneous

Other features and improvements that are part of this release include:
  • angular.merge:
  • angular.Module:
  • $anchorScroll:
  • ngClass:
    • add support for conditional map within an array (4588e627, #4807)
  • $timeout:
  • $interval: pass additional arguments to the callback (4f1f9cfd, #10632)
  • $resource:
  • Scope:
  • CommonJS:
    • The new optional CommonJS support makes using Angular modules in environments like npm and browserify easier.

Performance Improvements

Lucas proposed and implemented a complete rewrite of the Angular expression parser. The new parser is easier to maintain and up to 25% faster. On top of that change we have also speeded up scope watching, the compiler and ngOptions.
  • $parse:
    • new and more performant parser (0d42426)
  • $compile:
    • replace forEach(controller) with plain loops (5b522867, #11084)
    • avoid .data when fetching required controllers (fa0aa839)
  • ngOptions:
    • only perform deep equality check on ngModel if using track by (171b9f7f, #11448, #11447)
    • only watch labels if a display expression is specified (51faaffd)

What's next?

There were two features that were pulled out of the 1.4 release. The component helper (#10007) and the component oriented hierarchical router. The main reason for this decision was that both of these deliverables were not ready for the important task of simplifying the migration path from Angular 1 to Angular 2. Rather than delay the 1.4 release further, we decided to move these two deliverables into the 1.5 release.


The 1.5 planning is already underway, with the Component Router and component helper among the initial seeds. As before, the planning meeting will be published online. In this meeting the areas of focus and prioritization will be picked. At ng-conf we announced that the future focus of the 1.x releases will be migration path to Angular 2, so you can expect many of the deliverables to be in this area.

Thanks

This Angular version is the first to be run by a much broader community oriented team, including many people from outside of the Google Angular team such as Lucas, Martin, Shahar, Pawel, Michał, Georgios and Jason. These are people who are using Angular on a day-to-day basis in real, often large applications. They have worked tirelessly week after week to help get this release out. On top of these core team members, a number of other people from the community have contributed significant code to this release, or helped to review issues and pull requests. We'd like to thank them all.