Usar la divulgación progresiva y la representación condicional
Objetivos de aprendizaje
Después de completar esta unidad, podrá:
- Explicar los beneficios de la divulgación progresiva.
- Describir la representación condicional.
Optimizar el desempeño con la divulgación progresiva
Mostrar todos los datos y todas las herramientas disponibles en la pantalla en general no se considera una buena práctica de experiencia del usuario. Además, puede afectar significativamente el desempeño de su aplicación. Los componentes Lightning que se agregan al formato de una página crean una instancia cuando la página se carga, lo que contribuye al tiempo de carga general de la página. Debido a esto, las directrices de diseño interactivas dan preferencia a la divulgación progresiva.
“La divulgación progresiva es una técnica de diseño de interacción que generalmente se utiliza en la interacción entre el ser humano y la computadora para ayudar a mantener el centro de atención del usuario mediante la reducción del desorden, la confusión y la carga de trabajo cognitiva. Esto mejora la capacidad de uso ya que presenta solo los datos mínimos requeridos para la tarea que se está realizando”. (Wikipedia)
Dicho de otra forma, según Jakob Nielsen, “La divulgación progresiva posterga las funciones avanzadas o raramente utilizadas a una pantalla secundaria, lo cual hace que las aplicaciones sean más fáciles de aprender y menos propensas a errores”.
En Lightning Experience, resulta fácil implementar la divulgación progresiva y postergar los datos o las funciones que no son esenciales para la tarea que se está realizando. Existen varios enfoques para postergar la creación de componentes, pero observemos en detalle a dos de ellos: la creación diferida de instancias (a veces denominada carga diferida) y la representación condicional.
Creación diferida de instancias
La creación diferida de instancias (o carga diferida) significa que un objeto o componente no se crea hasta que se utiliza por primera vez. Esto se puede hacer en Lightning Experience o aprovechando diferentes componentes de ficha.
Creación diferida de instancias en Lightning Experience
Los Generadores de aplicaciones Lightning pueden implementar la divulgación progresiva de forma declarativa mediante la colocación de los componentes dentro de áreas específicas en Lightning Experience, donde se crean instancias diferidas. Estas áreas incluyen:
- Componentes de ficha estándar, que permiten que la información se oculte y se cargue únicamente cuando el usuario selecciona la ficha.
- Acciones de componente Lightning o Acciones rápidas, que permiten que los componentes se carguen únicamente cuando el usuario hace clic en un botón.
- Una barra de utilidades, que se puede agregar a cualquier aplicación y también incluye botones que pueden cargar componentes cuando el usuario hace clic en ellos.
Creación diferida de instancias en sus propios componentes
Puede aprovechar el conjunto de componentes de ficha, como <lightning-tabset>
y <lightning-tab>
, que admiten la creación diferida de instancias de forma predeterminada.
Representación condicional
La representación condicional significa que un objeto o componente solo aparecerá una vez que coincida un estado o comportamiento. Existen tres opciones para representar condicionalmente sus componentes web Lightning:
- Visibilidad dinámica del componente del Generador de aplicaciones Lightning
lwc:if|elseif|else
- CSS
Visibilidad dinámica del componente del Generador de aplicaciones Lightning
La primera opción es declarativa y se crea directamente en el Generador de aplicaciones. La visibilidad dinámica del componente puede controlar cuándo un componente aparece en una página Lightning agregando condiciones de filtro y lógica a sus propiedades en el Generador de aplicaciones Lightning. Por ejemplo, se puede construir un filtro que origine un componente de texto enriquecido en una página de oportunidad para mostrar cuándo el importe de la oportunidad es mayor o igual a $1 millón.
lwc:if|elseif|else
La segunda opción permite que los desarrolladores representen condicionalmente elementos DOM usando lwc:if|elseif|else
para crear instancias diferidas de la IU:
En este caso, si “something” = true (algo = verdadero), se crea la primera etiqueta <div>
y todos sus elementos secundarios, mientras que la segunda etiqueta <div>
y todos sus elementos secundarios no se representan. Esto debería modificarse cuando la expresión “something” cambie a false (falso). En esta situación, la primera etiqueta <div>
se destruiría y se representaría la segunda.
CSS
La tercera opción aprovecha los estilos de CSS para cambiar la visibilidad y se puede implementar usando la siguiente plantilla y JavaScript.
Plantilla
JavaScript
El componente <div>
y todos sus elementos secundarios se crean y se representan de manera anticipada, pero se ocultan del usuario hasta que se ejecuta JavaScript. Tenga en cuenta que usar CSS crea el componente de manera anticipada para que no haya aumento de desempeño en la carga de la página como ocurre con los otros dos métodos. Sin embargo, cuando se ejecuta JavaScript, el componente se muestra inmediatamente al usuario sin la necesidad de inicializarse o representarse.
Una diferencia importante entre el ocultamiento de CSS y if:true/false
es que con el enfoque de CSS, el componente queda activo y, por lo tanto, se mantiene su estado. El uso de if:true|false
destruye y vuelve a crear el componente de manera que el estado se pierde (se restablece).
Estas opciones deben utilizarse en el orden presentado. En primer lugar, use la opción declarativa analizada en la opción uno, aunque solo está disponible en los componentes configurados para el Generador de aplicaciones Lightning. En segundo lugar, debería usar la opción del segundo enfoque if:true|false
, que funciona con todos los componentes. Ambas opciones ayudan a que las páginas se carguen más rápido inicialmente mediante la postergación de la creación y la representación del componente o el árbol de elementos incluido hasta que se completa la condición. La tercera opción, CSS, se debería usar cuando los desarrolladores desean precargar un componente y luego mostrarlo en la IU cuando se completa la condición.
Ahora que tiene más conocimientos sobre las principales opciones de representación, aprendamos algunas otras opciones que pueden ayudarlo a mejorar el desempeño.
Recursos
- Ayuda de Salesforce: Páginas Lightning dinámicas
- Guía para desarrolladores de componentes web Lightning: Representar elementos DOM condicionalmente
- Componentes web Lightning: Ficha
- Guía para desarrolladores de componentes web Lightning: Representar varias plantillas