填寫這份《一分鐘調查》,幫我們(開發組)做得更好!去填寫Home

Angular 路線圖

Angular Roadmap

Angular 從 Google 內部和更廣泛的開源社群都收到了大量的特性請求。與此同時,我們的專案列表包含大量維護任務、程式碼重構、潛在的效能提升等等。我們彙集了來自來自開發者關係部門、產品管理部門和工程部門的代表,以確定此列表的優先順序。當新專案進入佇列時,我們會根據其它專案的相對優先順序定期對它們進行排位。當工作完成後,專案就會在佇列中向上移動。

Angular receives a large number of feature requests, both from inside Google and from the broader open-source community. At the same time, our list of projects contains plenty of maintenance tasks, code refactorings, potential performance improvements, and so on. We bring together representatives from developer relations, product management, and engineering to prioritize this list. As new projects come into the queue, we regularly position them based on relative priority to other projects. As work gets done, projects will move up in the queue.

下面這些專案並沒有關聯到特定的 Angular 版本。我們會在完成時發佈它們,它們會根據我們的發佈計劃,並遵循語義化版本規範,變成特定版本的一部分。例如,當完成各種特性後會在下一個次要版本中發佈,如果包含重大變更,則會到下一個主版本中發佈。

The projects below are not associated with a particular Angular version. We'll release them on completion, and they will be part of a specific version based on our release schedule, following semantic versioning. For example, features are released in the next minor after they are complete, or the next major if they include breaking changes.

進展中

In Progress

Accelerated debugging and performance profiling with Angular DevTools

We are working on development tooling for Angular that will provide utilities for debugging and performance profiling. This project aims to help developers understand the component structure and the change detection in an Angular application.

Improve test times and debugging with automatic test environment tear down

To improve test time and create better isolation across tests, we want to change TestBed to automatically clean up and tear down the test environment after each test run.

Deprecate and remove IE11 support

IE11 has been preventing Angular from taking advantage of some of the modern features of the Web platform. As part of this project we are going to deprecate and remove IE11 support to open the path for modern features that evergreen browsers provide. We ran an RFC to collected feedback from the community and decide on next steps to move forward.

Leverage ES2017+ as the default output language

Supporting modern browsers will allow us to leverage the more compact, expressive, and performant new syntax of JavaScript. As part of this project we’ll investigate what are the blockers to move forward with this effort and take the steps forward to enable it.

改進效能儀表盤來檢測效能退化

Revamp performance dashboards to detect regressions

We have a set of benchmarks that we run against every code change to ensure Angular aligns with our performance standards. To ensure the framework’s runtime does not regress after a code change, we need to refine some of the existing infrastructure the dashboards step on.

Enhanced Angular Material components by integrating MDC Web

MDC Web is a library created by Google's Material Design team that provides reusable primitives for building Material Design components. The Angular team is incorporating these primitives into Angular Material. Using MDC Web will align Angular Material more closely with the Material Design specification, expand accessibility, improve component quality, and improve our team's velocity.

Angular component accessibility

We're evaluating components in Angular Material against accessibility standards such as WCAG and working to fix any issues that arise from this process.

Remove legacy View Engine

After the transition of all our internal tooling to Ivy is completed, we will remove the legacy View Engine for reduced Angular conceptual overhead, smaller package size, lower maintenance cost, and lower codebase complexity.

Publish guides on advanced concepts

Develop and publish an in-depth guide on change detection. Develop content for performance profiling of Angular applications. Cover how change detection interacts with Zone.js and explain when it gets triggered, how to profile its duration, as well as common practices for performance optimization.

更新我們的 e2e 測試策略

Update our e2e testing strategy

為了確保我們能提供面向未來的 e2e 測試策略,我們希望評估 Protractor 的狀態、社群的創新、e2e 最佳實踐,並探索新的機會。

To ensure we provide a future-proof e2e testing strategy, we want to evaluate the state of Protractor, community innovations, e2e best practices, and explore novel opportunities. As first steps of the effort, we shared an RFC and worked with partners to ensure smooth integration between the Angular CLI and state of the art tooling for e2e testing. As the next step, we need to finalize the recommendations and compile a list of resources for the transition.

Angular 函式庫使用 Ivy

Angular libraries use Ivy

在 2020 年早些時候,我們共享了一個用於 Ivy 函式庫發佈方式的 RFC。經過社群的寶貴反饋,我們開發出了該專案的設計方案。我們現在正致力於 Ivy 函式庫發佈方式開發,包括更新函式庫套件的格式,以便使用 Ivy 編譯,繼續推進棄用 View Engine 函式庫格式以及 ngcc

Earlier in 2020, we shared an RFC for Ivy library distribution. After invaluable feedback from the community, we developed a design of the project. We are now investing in the development of Ivy library distribution, including an update of the library package format to use Ivy compilation, unblock the deprecation of the View Engine library format, and ngcc.

Ensure smooth adoption for future RxJS changes (v7 and beyond)

We want to ensure Angular developers are taking advantage of the latest capabilities of RxJS and have a smooth transition to the next major releases of the framework. For this purpose, we will explore and document the scope of the changes in v7 and beyond RxJS and plan an update strategy.

Future

Investigate micro frontend architecture for scalable development processes

Look into independent deployability and development of large-scale applications to improve efficiency and productivity. The Angular community has an established story for micro frontend support. As part of this effort, we’d investigate what would be the correct abstractions to provide better support.

透過為 @angular/forms 實現嚴格型別化來提升開發效率

Better developer ergonomics with strict typing for @angular/forms

我們將努力為響應式表單實現更嚴格的型別檢查。這樣,我們就可以讓開發人員在開發期間捕獲更多的問題,提供更好的文字編輯器和 IDE 支援,並改進對響應式表單的型別檢查。

We will work on implementing stricter type checking for reactive forms. This way, we will allow developers to catch more issues during development time, enable better text editor and IDE support, and improve the type checking for reactive forms.

提升無 Zone.js 方案的完整框架能力

Leverage full framework capabilities with Zone.js opt-out

We are going to design and implement a plan to make Zone.js optional from Angular applications. This way, we will simplify the framework, improve debugging, and reduce application bundle size. Additionally, this will allow us to take advantage of native async/await syntax, which currently Zone.js does not support.

將 ngc 作為 tsc 的外掛,以提高建構效能

Improved build performance with ngc as a tsc plugin distribution

將 Angular 編譯器作為 TypeScript 編譯器的外掛進行發佈,可以大大提高開發人員的建構效能,降低維護成本。

Distributing the Angular compiler as a plugin of the TypeScript compiler will substantially improve developers' build performance and reduce maintenance costs.

支援向宿主元素新增指令

Support adding directives to host elements

一項由來已久的特性請求是增加為宿主元素新增指令的能力。該特性允許開發人員使用額外的行為來擴充套件自己的元件,而不必使用繼承。該專案在定義 API、語義和實現方面都需要付出巨大的努力。

A long-standing feature request is to add the ability to add directives to host elements. The feature will allow developers to augment their own components with additional behaviors without using inheritance. The project will require substantial effort in terms of the definition of APIs, semantics, and implementation.

透過可選 NgModule 來簡化 Angular 的心智模型

Simplified Angular mental model with optional NgModules

為了簡化 Angular 的心智模型和學習之旅,我們將努力讓 NgModule 成為可選項。這項工作將允許開發人員開發獨立的元件,並實現另一種 API 來宣告元件的編譯範圍。

To simplify the Angular mental model and learning journey, we’ll be working on making NgModules optional. This work will allow developers to develop standalone components and implement an alternative API for declaring the component’s compilation scope.

更符合工效學的元件級程式碼分割 API

Ergonomic component level code-splitting APIs

A common problem with web applications is their slow initial load time. A way to improve it is to apply more granular code-splitting on a component level. To encourage this practice, we’ll be working on more ergonomic code-splitting APIs.

Done

Streamline releases with consolidated Angular versioning & branching

Completed Q2 2021

We want to consolidate release management tooling between Angular's multiple GitHub repositories (angular/angular, angular/angular-cli, and angular/components). This effort will allow us to reuse infrastructure, unify and simplify processes, and improve our release process's reliability.

Higher developer consistency with commit message standardization

Completed Q2 2021

We want to unify commit message requirements and conformance across Angular repositories (angular/angular, angular/components, angular/angular-cli) to bring consistency to our development process and reuse infrastructure tooling.

Transition the Angular language service to Ivy

Completed Q2 2021

The goal of this project is to improve the experience and remove legacy dependency by transitioning the language service to Ivy. Today the language service still uses the View Engine compiler and type checking, even for Ivy applications. We want to use the Ivy template parser and improved type checking for the Angular Language service to match application behavior. This migration will also be a step towards unblocking the removal of View Engine, which will simplify Angular, reduce the npm package size, and improve the framework's maintainability.

Increased security with native Trusted Types in Angular

Completed Q2 2021

In collaboration with Google's security team, we're adding support for the new Trusted Types API. This web platform API will help developers build more secure web applications.

Optimized build speed and bundle sizes with Angular CLI webpack 5

Completed Q2 2021

As part of the v11 release, we introduced an opt-in preview of webpack 5 in the Angular CLI. To ensure stability, we’ll continue iterating on the implementation to enable build speed and bundle size improvements.

Faster apps by inlining critical styles in Universal applications

Completed Q1 2021

Loading external stylesheets is a blocking operation, which means that the browser can’t start rendering your application until it loads all the referenced CSS. Having render-blocking resources in the header of a page can significantly impact its load performance, for example, its first contentful paint. To make apps faster, we’ve been collaborating with the Google Chrome team on inlining critical CSS and loading the rest of the styles asynchronously.

Improve debugging with better Angular error messages

Completed Q1 2021

Error messages often bring limited actionable information to help developers resolve them. We’ve been working on making error messages more discoverable by adding associated codes, developing guides, and other materials to ensure a smoother debugging experience.

Improved developer onboarding with refreshed introductory documentation

Completed Q1 2021

We will redefine the user learning journeys and refresh the introductory documentation. We will clearly state the benefits of Angular, how to explore its capabilities and provide guidance so developers can become proficient with the framework in as little time as possible.

Expand component harnesses best practices

Completed Q1 2021

Angular CDK introduced the concept of component test harnesses to Angular in version 9. Test harnesses allow component authors to create supported APIs for testing component interactions. We're continuing to improve this harness infrastructure and clarifying the best practices around using harnesses. We're also working to drive more harness adoption inside of Google.

Author a guide for content projection

Completed Q2 2021

Content projection is a core Angular concept that does not have the presence it deserves in the documentation. As part of this project we want to identify the core use cases and concepts for content projection and document them.

Migrate to ESLint

Completed Q4 2020

With the deprecation of TSLint we will be moving to ESLint. As part of the process, we will work on ensuring backward compatibility with our current recommended TSLint configuration, implement a migration strategy for existing Angular applications and introduce new tooling to the Angular CLI toolchain.

Operation Bye Bye Backlog (aka Operation Byelog)

Completed Q4 2020

We are actively investing up to 50% of our engineering capacity on triaging issues and PRs until we have a clear understanding of broader community needs. After that, we'll commit up to 20% of our engineering capacity to keep up with new submissions promptly.