20
Hoja de ruta de Angular
2021–05–19
Angular recibe una gran cantidad de solicitudes de nuevas funcionalidades, tanto desde dentro de Google como desde la comunidad de código abierto en general. Al mismo tiempo, nuestra lista de proyectos contiene muchas tareas de mantenimiento, refactorizaciones de código y posibles mejoras de rendimiento. Reunimos a representantes de relaciones con desarrolladores, gestores de productos e ingenieros para priorizar esta lista. A medida que nuevos proyectos entran en la cola, los posicionamos regularmente en función de la prioridad relativa a otros proyectos. A medida que se realiza el trabajo, los proyectos avanzan en la cola.
Los siguientes proyectos no están asociados con una versión Angular particular. Los publicaremos una vez finalizados y serán parte de una versión específica basada en nuestro calendario de lanzamiento, siguiendo el control de versiones semántico. Por ejemplo, las funciones se publican en el siguiente menor después de que se completan, o el siguiente mayor si incluyen cambios importantes.
En Curso
Para mejorar los tiempos de prueba y crear un mejor aislamiento entre las pruebas, queremos cambiar TestBed para limpiar y derribar automáticamente el entorno de prueba después de cada ejecución de prueba.
IE11 ha impedido que Angular aproveche algunas de las características modernas de la plataforma web. Como parte de este proyecto, vamos a desaprobar y eliminar el soporte de IE11 para abrir el camino a las características modernas que brindan los navegadores de hoja perenne(siempre verde). Ejecutamos un RFC para recopilar comentarios de la comunidad y decidir los próximos pasos para seguir adelante.
La compatibilidad con los navegadores modernos nos permite aprovechar la nueva sintaxis más compacta, expresiva y eficaz de JavaScript. Como parte de este proyecto, investigaremos cuáles son los bloqueos para avanzar con este esfuerzo y daremos los pasos necesarios para habilitarlo.
Tenemos un conjunto de puntos de referencia que ejecutamos en cada cambio de código para garantizar que Angular se alinee con nuestros estándares de rendimiento. Para garantizar que el tiempo de ejecución del framework's no retroceda después de un cambio de código, necesitamos refinar parte de la infraestructura existente en la que intervienen los paneles.
MDC Web es una librería creada por el equipo de Material Design de Google que proporciona primitivas reutilizables para construir componentes de Material Design. El equipo de Angular está incorporando estas primitivas en Angular Material. El uso de MDC Web alinea Angular Material más estrechamente con la especificación de Material Design, expande la accesibilidad, mejora la calidad de los componentes y mejora la velocidad de nuestro equipo.
Estamos evaluando componentes en Angular Material en comparación con estándares de accesibilidad como WCAG y trabajando para solucionar cualquier problema que surja de este proceso.
Después de que se complete la transición de todas nuestras herramientas internas a Ivy, eliminaremos el motor de visualización heredado para reducir la sobrecarga conceptual en Angular, un tamaño de paquete más pequeño, un menor costo de mantenimiento y una menor complejidad de la base de código.
Desarrollar y publicar una guía detallada sobre la detección de cambios. Desarrollar contenido para la generación de perfiles de rendimiento de aplicaciones Angular. Cubrir cómo la detección de cambios interactúa con Zone.js y explicar cuándo se activa, cómo perfilar su duración, así como las prácticas comunes para la optimización del rendimiento.
Para garantizar que proporcionamos una estrategia de prueba de e2e preparada para el futuro, queremos evaluar el estado de Protractor, las innovaciones de la comunidad, las mejores prácticas de e2e y explorar nuevas oportunidades. Como primeros pasos del esfuerzo, compartimos un RFC y trabajamos con socios para garantizar una integración fluida entre el CLI de Angular y las herramientas de última generación para las pruebas de e2e. Como siguiente paso, necesitamos finalizar las recomendaciones y compilar una lista de recursos para la transición.
A principios de 2020, compartimos un RFC para la distribución de la biblioteca Ivy. Después de los invaluables comentarios de la comunidad, desarrollamos un diseño del proyecto. Ahora estamos invirtiendo en el desarrollo de la distribución de la biblioteca Ivy, incluida una actualización del formato del paquete de la biblioteca para usar la compilación de Ivy, lo que deja obsoletas las librerías con el formato View Engine y ngcc.
Queremos asegurarnos de que los desarrolladores de Angular aprovechen las últimas capacidades de RxJS y tengan una transición sin problemas a las próximas versiones principales del framework. Para este propósito, exploraremos y documentaremos el alcance de los cambios en v7 y más allá de RxJS y planificaremos una estrategia de actualización.
Para simplificar el modelo mental de Angular y el viaje de aprendizaje, trabajaremos para hacer que NgModules sea opcional. Este trabajo permite a los desarrolladores desarrollar componentes independientes e implementar una API alternativa para declarar el alcance de compilación del componente.
Futuro
Analizamos la implementación y el desarrollo independientes de aplicaciones a gran escala para mejorar la eficiencia y la productividad. La comunidad Angular tiene una historia establecida para el soporte de micro frontend. Como parte de este esfuerzo, investigaremos cuáles serían las abstracciones correctas para brindar un mejor soporte.
Mejorar la ergonomía del desarrollador implementando el tipado estricto( strict typing ) para @angular/forms
Trabajaremos en la implementación de una verificación de tipo más estricta para las formularios reactivos. De esta manera, permitimos que los desarrolladores detecten más problemas durante el tiempo de desarrollo, habilitamos un mejor editor de texto y soporte IDE, y mejoramos la verificación de tipos para formularios reactivos.
Vamos a diseñar e implementar un plan para que Zone.js sea opcional para las aplicaciones Angular. De esta manera, simplificamos el marco, mejoramos la depuración y reducimos el tamaño del paquete de aplicaciones. Además, esto nos permite aprovechar la sintaxis async/await incorporada, que actualmente Zone.js no admite.
La distribución del compilador Angular como un complemento del compilador TypeScript mejorará sustancialmente el rendimiento de compilación de los desarrolladores y reducirá los costos de mantenimiento.
Una solicitud de característica de larga duración es agregar la capacidad de agregar directivas a los elementos del host. La función permite a los desarrolladores aumentar sus propios componentes con comportamientos adicionales sin utilizar la herencia. El proyecto requiere un esfuerzo sustancial en términos de definición de API, semántica e implementación.
Un problema común con las aplicaciones web es su lento tiempo de carga inicial. Una forma de mejorarlo es aplicar una división de código más granular a nivel de componente. Para fomentar esta práctica, trabajaremos en API de división de código más ergonómicas.
Completado
Completado el segundo trimestre de 2021
Estamos trabajando en herramientas de desarrollo para Angular que proporcionan utilidades para la depuración y la generación de perfiles de rendimiento. Este proyecto tiene como objetivo ayudar a los desarrolladores a comprender la estructura de los componentes y la detección de cambios en una aplicación Angular.
Completado el segundo trimestre de 2021
Queremos consolidar las herramientas de administración de versiones entre los múltiples repositorios de GitHub de Angular (angular/angular, angular/angular-cli y angular/components). Este esfuerzo nos permite reutilizar la infraestructura, unificar y simplificar procesos y mejorar la confiabilidad de nuestro proceso de lanzamiento.
Completado el segundo trimestre de 2021
Queremos unificar los requisitos y la conformidad de los mensajes de confirmación en los repositorios de angular (angular/angular, angular/components, angular/angular-cli) para brindar coherencia a nuestro proceso de desarrollo y reutilizar las herramientas de infraestructura.
Completado el segundo trimestre de 2021
El objetivo de este proyecto es mejorar la experiencia y eliminar la dependencia heredada mediante la transición del servicio de idiomas a Ivy. Hoy en día, el servicio de idiomas todavía usa el compilador de View Engine y la verificación de tipos, incluso para aplicaciones Ivy. Queremos utilizar el analizador de plantillas Ivy y la verificación de tipos mejorada para que el servicio Angular Language coincida con el comportamiento de la aplicación. Esta migración también es un paso para desbloquear la eliminación de View Engine, que simplificará Angular, reducirá el tamaño del paquete npm y mejorará la capacidad de mantenimiento del marco.
Completado el segundo trimestre de 2021
En colaboración con el equipo de seguridad de Google, estamos agregando soporte para la nueva API de Trusted Types(tipos de confianza nativos). Esta API de plataforma web ayuda a los desarrolladores a crear aplicaciones web más seguras.
Completado el segundo trimestre de 2021
Como parte de la versión v11, presentamos una vista previa opcional de webpack 5 en la CLI de Angular. Para garantizar la estabilidad, continuaremos iterando en la implementación para permitir mejoras en la velocidad de compilación y el tamaño del paquete.
Completado el primer trimestre de 2021
La carga de hojas de estilo externas es una operación de bloqueo, lo que significa que el navegador no puede comenzar a renderizar su aplicación hasta que cargue todo el CSS referenciado. Tener recursos de bloqueo de procesamiento en el encabezado de una página puede afectar significativamente su rendimiento de carga, por ejemplo, su primera pintura con contenido. Para hacer que las aplicaciones sean más rápidas, hemos estado colaborando con el equipo de Google Chrome para incorporar CSS crítico y cargar el resto de los estilos de forma asincrónica.
Completado el primer trimestre de 2021
Los mensajes de error a menudo brindan información procesable limitada para ayudar a los desarrolladores a resolverlos. Hemos estado trabajando para hacer que los mensajes de error sean más visibles agregando códigos asociados, guías de desarrollo y otros materiales para garantizar una experiencia de depuración más fluida.
Completado el primer trimestre de 2021
Redefiniremos los viajes de aprendizaje del usuario y actualizaremos la documentación introductoria. Expresaremos claramente los beneficios de Angular, cómo explorar sus capacidades y brindar orientación para que los desarrolladores puedan dominar el framework en el menor tiempo posible.
Completado el primer trimestre de 2021
Angular CDK introdujo el concepto de arneses de prueba de componentes(component test harnesses) en Angular en la versión 9. Los arneses de prueba permiten a los autores de componentes crear API compatibles para probar las interacciones de los componentes. Continuamos mejorando esta infraestructura de arneses y aclarando las mejores prácticas en torno al uso de arneses. También estamos trabajando para impulsar una mayor adopción del arnés dentro de Google.
Completado el segundo trimestre de 2021
La proyección de contenido es un concepto central de Angular que no tiene la presencia que merece en la documentación. Como parte de este proyecto, queremos identificar los casos de uso y conceptos básicos para la proyección de contenido y documentarlos.
Completado el cuarto trimestre de 2020
Con la depreciación de TSLint, nos trasladaremos a ESLint. Como parte del proceso, trabajaremos para garantizar la compatibilidad con versiones anteriores de nuestra configuración TSLint recomendada actual, implementaremos una estrategia de migración para las aplicaciones Angular existentes e introduciremos nuevas herramientas en la cadena de herramientas del CLI Angular.
Completado el cuarto trimestre de 2020
Estamos invirtiendo activamente hasta el 50% de nuestra capacidad de ingeniería en problemas de clasificación y relaciones públicas hasta que tengamos una comprensión clara de las necesidades de la comunidad en general. Después de eso, comprometeremos hasta el 20% de nuestra capacidad de ingeniería para mantenernos al día con los nuevos envíos de inmediato.
20