Uno de los frameworks más utilizados en los últimos años para construir la parte frontend de una aplicación o sitio web es Angular. Así lo definen en su página web oficial “Angular es una plataforma de desarrollo, construida en TypeScript”.
Angular brinda a una empresa la posibilidad de tener un sitio web escalable con un nuevo diseño. Para una empresa de software, utilizar este framework tiene varios beneficios y usos, entre los que se encuentran: crear foros, portales de negocios, plataformas de crowdfunding, mercados, listados de propiedades, etc.
Entre las empresas que han hecho uso de este framework para sus páginas y aplicaciones se encuentran: GitHub (foro), Google, Forbes, Indiegogo, BMW (calculadora de precios, buscador de ofertas), portal para desarrolladores de Deutsche Bank, Crunchbase, Nike, Xbox, Udacity, YoutubeTV, Firebase, AT&T y Adobe.
Angular ofrece a sus usuarios varios componentes que hacen del desarrollo una tarea fácil y rápida, entre estos destaca en view encapsulation, o vista encapsulada según su traducción al español, sobre esta explican en la página del framework.
Allí nos dicen “En Angular, los estilos de un componente se pueden encapsular dentro del elemento host del componente para que no afecten al resto de la aplicación. El decorador del componente proporciona la opción de encapsulación que se puede usar para controlar cómo se aplica la encapsulación por componente”.
El desarrollador puede escoger de entre los siguientes modos:
El siguiente ejemplo muestra un elemento que contiene ViewEncapsulation.None
@Component({ selector: 'app-no-encapsulation', template: ` <h2>None</h2> <div class="none-message">No encapsulation</div> `, styles: ['h2, .none-message { color: red; }'], encapsulation: ViewEncapsulation.None, }) export class NoEncapsulationComponent { }
El siguiente ejemplo, muestra un elemento que contiene el componente ViewEncapsulation.Emulated
@Component({ selector: 'app-emulated-encapsulation', template: ` <h2>Emulated</h2> <div class="emulated-message">Emulated encapsulation</div> <app-no-encapsulation></app-no-encapsulation> `, styles: ['h2, .emulated-message { color: green; }'], encapsulation: ViewEncapsulation.Emulated, }) export class EmulatedEncapsulationComponent { }
Similar a ViewEncapsulation.None, Angular agrega los estilos para este componente al <head> del documento, pero con estilos de "ámbito".
Por lo tanto, solo los elementos directamente dentro de la plantilla de este componente coincidirán con sus estilos. Dado que los estilos de "ámbito" de EmulatedEncapsulationComponent son muy específicos, anulan los estilos globales de NoEncapsulationComponent.
Ahora, veamos un ejemplo de componente que contiene ViewEncapsulation.ShadowDom
@Component({ selector: 'app-shadow-dom-encapsulation', template: ` <h2>ShadowDom</h2> <div class="shadow-message">Shadow DOM encapsulation</div> <app-emulated-encapsulation></app-emulated-encapsulation> <app-no-encapsulation></app-no-encapsulation> `, styles: ['h2, .shadow-message { color: blue; }'], encapsulation: ViewEncapsulation.ShadowDom, }) export class ShadowDomEncapsulationComponent { }
En la página de Angular explican “en este ejemplo, ShadowDomEncapsulationComponent contiene tanto NoEncapsulationComponent como EmulatedEncapsulationComponent”.
Nuestros developer en Rootstack han utilizado Angular para diseñar aplicaciones dinámicas y enfocadas a la buena experiencia del usuario al momento de interactuar con ellas, pudiendo así dar solución a los problemas técnicos de nuestros clientes internacionales.