CON IVY EN угловой 9
Ленивая загрузка EN Комплетесы угловые? 🤔quizás quieras decir módulos Lazy loading con el marriter de angular!
¡Нет, Lo есть Leído Forrecte, ленивая загрузка EN компонентов!
Si, La Versións Prevy De Angular Solo Soportan Lazy Loading de Módulos. Перо плющ А. А. ООН Нуэво Мундо де Позибилидады.
Ленивая погрузка хаста ахора- Рутас ленивый загружен
El Lazy Loading Es Una Gran Característica. EN Угловой, Lo Obtenemos Casi Gratis Al Delaur Una Ruta Lazy.
Эль Código передний генерарий ООН Fragmento Sealdo пункт эль клиенты. Module
que se carga tan pronto como llegamos a La Ruta de Список клиентов
Отказ ES UNA FORMA MUY BONITA DEEMONISIR EL TAMANO DE SU PAQUETE GUANCE AUMANATAR LA CARGA SICAL DE SU ALPACACION. Aún Así, ¿No Sería Genial Si Tuviéramos Un Control Aún Más Granule Sobre El Lazy Loading? Por ejemplo, ¿mediante El Lazy Loading de Components Индивидуальные люди? El Lazy Loading de Components Индивидуума нет Ha Sido Bosible Hasta Ahora. Перо Лас-Кос Хан Камбиадо Кон-Айви.
🌱 плющ представляет “localidad”.
Los Módulos Son Son Concepto de Primera Clase Y EL Componente Главный де-Тодас Лас Аяпчасионы де царствования. Компонементы Tealan Varios, Directivas, Pipes Y Servicios.
LAS Alipearacions Угловая де-Хой Нет PuEden Easkir Sin Módulos. Una de las Razones de esto es en el vestengine agroga los metadatos necesarios a los módulos.
Плющ, Пор Отро Ладо, усыновит otro Enfoque. En Ivy, Un Componente Puede Escomeir Sin un Módulo. Грасиас ООН Концепция llamado “localidad”.
” Localidad “Conlita Que ToDos Los Metadatos Son Loores Al Componente.
Permítanme ExplicaR ESTO Echando Un Vistazo Más de Cerca A ООН Paquete ES2015 RenaDo Con Con.
En La Sección “Código de Componente”, PodeMos ver que ivy Mantiene Nuestro Código de Componente. Нада особенный. Перо Луэго Айви Тамбиен Ле Агрег Альгунос Метадатос.
EL Primer Metadato Que Agroga Es On Factory Que Sabe Cóestanciar Nuestro Componente («Компонентная фабрика»). En la parte de “Метадатос де компонентов”, плющ Агрега Мас Атрибутос Комо Тип
, селектор
и т. д. и т. д., Todo Lo Que Necesita En Tiempo de Ejecución.
Una de las cosas más intersantes que agroga Ivy es la función de Шаблон
Отказ Lo que merece algunas explacions endionales.
La Función de Plantilla Es La Versión Compilada de Nuestro HTML. Ejecuta Las Instrucciones de ivy Para Crag Nuestro Dom. ESTO Difiere de la forma en que funcionaba viewendine.
El Viewengine Tomó Nuestro Cóestigo Y Lo Repitió. Угловая Estaba Ejecutando Código Si Lo Estábamos Usando.
Con El Enfoque Ivy, EL Componente Está El Asiento Del Conditor Y Ejecuta Angular. Este Cambio Premite Que Un Componente Viva Por Sí Solo Y Hace Que El Núcleo Angular SE Le Pueda Applicar Tree-Shaking
ООН EJEMPLO DEL MUNDO REAL DE ООН Componente Lazy Loading
ООН Ejemplo del Mundo Real de Carga Diferida de un Componente Ahora Que Sabemos Que La Carga Diferida Es Bosible, Lo DemoStraremos en uns caso de uso del Mundo Real. Vamos A Ремонт Una Alipeación Quiz. La Appleación Muestra Una Imagen de la Ciudad conferentes положительные солюкоины. Una Vez que unsuario elige una solución, el botón en ena una solución Деспаос де Реддердер Уна Преганта, апара-ла-Сигуенте Прегунты. Aquí Tienes Una Vista Previa Rapida:
Эль Концепция de de de un componente Ленивая загрузка 🎓
Primero, Ilustremos La Idea General De La Carga Diferida de Nuestro Componente Викторина
Отказ
Una Vez Que El Usuario inicia El Quiz Haciendo Clic El Botón «Пуск викторина», Comenzamos a Cargar Nuestro Componente Usando Lazy Load. Una Vez Que Tengamos El Componente, Lo Agregaremos en Contendor.
Reaccionamos a los eventos de salida Остаиваемые
de nuestro Componente Lazy-Loaded Como Lo Hacemos Con Los Compents Estándar. ООН ВЕЗ КУП ОКЮРРР Остаиваемые
Агрегамос Уна Нуэва Таржетская викторина.
Энтендидо, эшем ООН Vistazo al código 🔍.
Para Explicar El Preceso de Carga Diferida de Un Componente, Comenzaremos Con Una Versión Simplificada de nuestro QuizcardComponent
que muestra de manera simplista las propiedades de la pregunta.
Луизе, амплиремы Nuestro Componente Agrogando Components DE Материал угловой. POR último, Pero No Menos Gathere, Reaccionamos a Los Eventos de Salida de Nuestro Componente de Carga Diferida.
Обучению, POR Ahora, CargueMos Una Versión Simplifificada del QuizcardComponent
Que Tiene La Siguiente Plothilla:
AL Primer Paso Es Crage Un Elemento Contendedor. Para Esto, USAMOS USAM PREVELEO REAL COMO OUT DIV O PodeMOS USAR USAR NG-Containter, Que No Введите Nivel Extra DE HTML.
Genial, TeneMos El Contenedor Donde Ceeremos Agregar Nuestro Componente Ленивый. Continuación, Necesitamos un ComponentFactoryResolver Y UN Unjector Que Podemos Утилизар Ambos Mediante Inyección de Conceptenhia.
Un ComponentFactoryResolver ES UN Registro Simple Que Asigna Compentes Clases de ComponentFactory Renectas Que Se PuEden Usar Para Crage Instancias de Components.
ОК, En Este Punto, TeneMos Todas Las Cosas Que Necesitamos Para Lograr Nuestro objetivo. Cambiemos Nuestro Método Startquiz Y CargueMos Nuestro Componente de Manera Ленивая нагрузка.
PodeMos Usar La Función Импорт
de ecmascript Para Usar Lazy Load En Nuestro QuizcardComponent. La Takenación de Importación nos devualve una promesa que manejamos usando async/ждать o controlador Уна ВЭЗ Кин Ла Промеза С.Е. Реуэльве, Усамос Л.А. Оснухруктурачион Para Hacer Greep Al Componente.
Без использования Async/await
Cuando Compiold EN ES2017.
Зона JS No Puede Parchear Takenaciones Nativas Async/ждут.
POR LO TANTO, PUEDE TENER FLEASSAS CON LA DETECCIONE DE CAMBIOS. Si Compila SU Código выделять ES2017
DEAL USAR US COLOLADOR .then
Уна-Фунчион де Деволюцион де Ламада.
PARA SER Совместимые консистемы Ancorees, hoy en día necesitamos un Компонтентовары
Отказ ESTA Línea Нет Será Necesaria El Futuro Ya Que Podemos Trabajar Directmente Con El Componente.
Эль Компонтентовары
Nos Da Un. Компонентреф
Que Luego, Junto Con El Injoctor, Pasaremos Al Método CreateComponent
de nuestro Contendedor.
Эль CreateComponent
nos devualve un Компонентреф
que contiene una instancia de nuestro componente. USAMOS ESTA Instancia Para Pasar Las Propiedades de @Input
Nuestro Componente.
En El Futuro, Todo Esto Podría Hacerse Utilizando El Método RenderComponent de ongular. ESTE MÉTODO TODAVIAA ES Privado/Experiremental. Sin Embargo, Es Mey Comebable Que Este Método Lleague Angher. Ларс Gyrup Brink Nielsen Dio Dio Gran Tower Sobre Esto En Frindthonth.
ESO es todo lo que se necesita para cargar un componente Usando Lazy Load.
Una Vez Que Se Hizo Clic El Botón de Inicio, Cargamos Nuestro Componente Usando Lazy Load. Si Abbrimos La Pestaña de Red, Podemos ver que EL Fragmento Quiz-Card-Quiz-Card-Component.js a Sido Cargado Mediante Lazy Laze. En la Applicación En Ejecución, Se Muestra El Componente Y Se Muestra La Pregunta.
Агрегемос материал 👷.
Actualmente, Cargamos Nuestro QuizcardComponent
Mediante Lazy Load. Муйдиальный. Перо Нуэстра Аячачион aún Нет es útil.
Cambiemos ESO Agregando CaracteriSticas Adiedic y Algunos Компонементы де углового материала.
Инклюкс Альгунос Гермосос Компоненты де материал. Перо, ¿Dónde Agrogamos Los Módulos de Material?
Sí, Podriamos Agregarlos a nuestro AppModule. Перо, ESTO COSTA QUE ESOS Módulos SE CARGAN ANSISAMETE (нетерпеливо загружено). Образование ESA No Es La Mejor Solución. Además, Nuestra Commitación Falla Con El Siguiente Mensaje:
ERROR in src/app/quiz-card/quiz-card.component.html:9:1 - error TS-998001: 'mat-card' is not a known element: 1. If 'mat-card' is an Angular component, then verify that it is part of this module. 2. If 'mat-card' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
¿Ahora que? COMO поуэдирует Imaginar, Esseee Una Solución A Este Allsea. ¡Y La Respuesta Son Módulos! Пероэста Вес Лос Усарем де Манера Лигерия-дистинта. Agrogamos ООН Pequeño Módulo Al Mismo Archivo que nuestro QuizcardComponent.
.
ESTA Esperififación de Módulo Solo Pertenece Nuestro Componente Lazy загружен. POR LO TANTO, EL único Componente Que Este Módulo DelaRá El El QuizcardComponent. EN La Sección de Imports, соло Agrogamos Los Móestros Necesarios Para Nuestro Componente. Para asegurarrarnos de que un módulo Cargado Ansiosemente (с нетерпением ждем) Нет Pueda Importar El Módulo, No Lo Exportamos. Volvamos Ejecutar Nuestra Applicación Y Veamos Cómo SE Comporta Cuanto Hacemos CLIC EN Эль Ботон “Начните викторину”.
¡Adreíbleble! Nuestro QuizcardComponent
SE Carga de Manera Lazy Lazed Y Se Agroga Al ViewContainer. También Trae Todas Las Teaceedesias Necesarias.
Una Herramienta LomaDaDa WebPack-Bundle-Analyzer Y Analicemos El Aspecto del Paquete.
WebPack-Bundle-Analyzer ES UN Módulo NPM Que Le Premaure Visualizar El Tamaño de Los Archivos de Salida del Paquete Web Un Mapa de árbol Interactivo Con Zoom.
El Tamaño de Nuestro Paquete Основные ES DE ALLEDEDOR DE 260 KB. Si Cargáramos de Manera Ansiosemente (нетерпеливо загружен) Эль, QuizcardComponent
Серия де Альредор де 270 КБ. Ahorramos Alrededor de 10 Kb Cargando de Forma Diferida Solo Este Componente. ¡Mey Genial!
Nuestro QuizcardComponent
Se incluyó en bloque blaade. Si Echamos un Vistazo Más de Cerca Al Contenido de Este Fragmento, No Solo Encontramos Nuestro Cóestigo QuizcardComponent
Sino Que También Vemos Los Módulos Материал Утилизадос Дендоль дель QuizcardComponent.
.
Aunque QuizcardComponent
Usó Матбуттонмодуль
y Matcardmodule
Solo MatcardModule Termina El Fragmento del Componente de la Tarjeta de Prueba. La Razón de Esto Es Porque También Usamos Матбуттонмодуль
EN Nuestro AppModule Para Mastrar El Botón de Inicio de Prueba. Поб Л. Tanto, Termina En Otro Trozo.
En este punto, cargamos de manera ленивый nuestro QuizcardComponent.
Que Muestra Una Hermosa Tarjeta de material con una imagen y algunas посущает республиканские острова. Перо, ¿придумывать актуальность si haces clic en una de esas положительные республики?
Según Su Respuesta, El Botón Se Vuelve Verde rojo. ¿ Перо Адемас де ЕСО? ¡Нада! Образование Ahora Se Muestra Otra Pregunta. Arreglemos Eso.
Reaccionar Ante Eventos de Compents Con Lazy Loading
Нет SE MUESTRAN Más Preguntas Porque Aún Нет ReaccionAmos Al Evento de Salida de Nuestro Componente Ленивый. Я сабемос щиустро QuizcardComponent
Emite Eventos Usando Un Eventemitter
Отказ Si Miramos La Defionición de Clase de Eventemitter
, Podemos ver que Eventemitter
Hereda de Тема
Отказ
export declara la clase EventEmitterextiende Subject
Conlite Que Eventemitter
También Tiene un Método de suscripción, que nos “помогает reaccionar a los eventos emitidos.
Nos Suscribimos Al Rexjo Ascessanswed Y Llamamos Al Método NownextQuestion, Que Luego Ejecuta Nuestra Lógica LazyloadQuizcard.
доставка (экземпляр .Destrey $)
ES NECESARIO PARA LIMPIAR LA SUSCRIPCION Уна ВЭЗ Que El Componente SE DENRUSEYA. Si SE LLAMA AL GANCHO DEL CICLO DE VIDA (Крюк жизненного цикла) Ngondestroy
Де QuizcardComponent.
, SE LLAMA A Уничтожить $
эль Тема
es llamado con. следующий
y полный
Отказ
async showNewQuestion() { this.lazyLoadQuizCard(); }
Dado que la Викторина
Ya Se Cargó, нет SE HA Realizado Ninguna Soliccitud HTTP Adiedional. USAMOS EL CONTENIDO DEL Fragmento Cargado Prevage, Crowsos un Nuevo Componente Y Lo Agregamos a Nuestro Contended.
Ganchos de Ciclo de Vida (крючки жизненного цикла)
Casi Todos Los Enganches del Ciclo de Vida Se lmain Automáticamente Si Cargamos de Manera Lazy Load Nuestro QuizcardComponent
Отказ Перо Фальта ООН Gancho, ¿Ves Cuál?
Es el primero de todos los ganchos, Ngonchanges
Отказ Dado Que ActizaMos Maluemente Las Propiedades de Antrada de Nuestra Instancia de Componente, También Somos Отдых De Llamar Al Enlace del Ciclo de Vida Ngonchanges
Отказ
Para llamar a Ngonchanges
En La Instancia, Necesitamos Sustruir Maluemente эль объект
Simplechanges
Отказ
Llamamos Maluemente A Ngonchanges
EN Nuestra Instancia de Componente Y Le Pasamos un objeto Simplechange. Эль SimpleChange
INDICA QUE ES EL PRIMER Cambio, Que El Valor передняя эра нулевой
Y Que El Valor Action Es Nuestra Pregunta.
¡Adreíbleble! Cargamos de Forma Diferida Un Componente Con Módulos de Terceros, ReaccionaMos a Los Eventos de Salida y llamamos a Los Enlaces PreventoS Del Gancho Ciclo de Vida (крючки жизненного цикла).
¿ ИНТЕРЕСА ЭЛЬ КОДИГО ФУЕНТЕ?
Тодас Лас Фуэнтес Утилизид А-Ларго де ESTA Publementación de Blog Están Disponibles Públicamente El Siguiente Repositorio.
https://github.com/kreuzerk/city-quiz
Вывод
EL Componente Mediante Lany Lazy Roady ofrece Grandes Posibilidades Para Optimizar Aún Más Nuestra Applicación en lo que acessa al rendimiento. TeneMos Un Control Más Granule de lo que queremos cargar en forma diferida en foralación Con Las Funciones de Carga Diferida Con El Enrutador угловой.
Desafortunadeamente, Todavía Necesitamos Módulos Cuando Usamos Otros Módulos En Nuestro Componente. Tenga en cuenta que es mey вероятная que esto cambie en el futuro.
IVY USA LA LOLALIDAD, LO QUE PROMITE QUE LOS Комбинированные компоненты Vivan Por Mismos. Este Cambio Es La Base Para El Futuro de Angular.
🧞 🙏. Si Te Gustó Esta Publicación, Compártela y Aplaude👏🏻 Haciendo Clic Varias Veces EN Эль Ботон де аплаудир El Lado Izquierdo.
Los aplausos ayudan atrass personas a descubrir contenido y me me motivan traducir más artículos 😉
NG-сортировка
https://www.npmjs.com/package/ng-sortgrid
Bigísimas Gracias A Ларс Gyrup Brink Nielsen y al autor Кевин Креузер De Esta Maravilloso Articulo, Ahora Mouseos Artículos de Angular Estarán ru Español.
Articulo Оригинал Si Lo Deseas ver en ingles https://medium.com/angular-in-depth/lazy-load-components-in-angular-596357ab05d8.
Оригинал: “https://dev.to/macaoblog/usar-lazy-load-en-componentes-angular-50io”