Hoja de ruta de Angular
Tags: angular, typescript, roadmap, spanish
Published: 2021-11-04 06:07:56

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

##Mejorar los tiempos de prueba y la depuración con la eliminación automática del entorno de prueba
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.

##Dejar obsoleto y eliminar la compatibilidad con IE11
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.

##Aprovechar ES2017 + como idioma de salida predeterminado
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.

##Renovar los paneles de rendimiento para detectar regresiones
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.

##Componentes de material angular mejorados mediante la integración de MDC Web
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.

##Accesibilidad de componentes Angular
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.

##View Engine heredado
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.

##Publicar guías sobre conceptos avanzados
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.

##Actualizar nuestra estrategia de prueba e2e
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.

##Las librerías en Angular usan Ivy
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.

##Garantizar una adopción sin problemas para futuros cambios de RxJS (v7 y posteriores)
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.
##Modelo mental de Angular simplificado con NgModules opcionales
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

##Investigar la arquitectura de micro frontend para procesos de desarrollo escalables
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.

##Aprovechar las capacidades completas del framework con la exclusión voluntaria de Zone.js
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.

##Mejorar ed rendimiento de compilación con ngc como distribución de complemento tsc
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.

##Admitir agregar directivas a los elementos del host
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.

##API de división de código a nivel de componente ergonómico
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

##Depuración acelerada y creación de perfiles de rendimiento con Angular DevTools
**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.

##Optimizar los lanzamientos con versiones y ramificaciones de Angular consolidadas
**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.

##Mayor coherencia del desarrollador con la estandarización de mensajes de confirmación
**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.

##Transición del servicio de lenguaje Angular a Ivy
**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.

##Mayor seguridad con los tipos de confianza nativos en Angular
**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.

##Velocidad de construcción optimizada y tamaños de paquete con Angular CLI webpack 5
**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.

##Aplicaciones más rápidas al incorporar estilos críticos en aplicaciones universales
**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.

##Mejorar la depuración con mejores mensajes de error Angular
**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.

##Mejorar la Incorporación de desarrolladores con documentación introductoria actualizada
**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.

##Expandir componentes aprovecha las mejores prácticas
**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.

##Crear una guía para la proyección de contenido
**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.

##Migrar a ESLint
**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.

##Operación Bye Bye Backlog (también conocida como Operación Byelog)
**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.