Para activar las técnicas de Lazy Loading y CodeSplitting en Angular tienes que construir tus aplicaciones de forma modular.
Cuáles son los módulos en Angular
Por defecto, Angular posee un solo módulo en el archivo app.module.ts. Todos tus componentes, servicios, pipe, etc. se importan aquí. Utiliza un decorador llamado @ngModule() con un aspecto similar al siguiente:
// app.module.ts@NgModule({imports:[],// Imports de otros módulos.declarations:[],// Imports de los componentes del módulo.exports:[],// Exports de componentes u otros para ser utilizados en otros módulos.providers:[],// Inyección de servicios.bootstrap:[]// Import del componente principal de la aplicación.})exportclassAppModule{}
Al modularizar una aplicación, cada módulo tendrá sus componentes exclusivos, servicios o los archivos que fuesen a necesitar.
Tipos de Módulos en Angular
Podemos identificar varios tipos de módulos. El AppModule es el módulo raíz que da inicio a tu aplicación. Existen los Routing Modules para la definición de rutas.
El Shared Module que posee servicios o componentes compartidos por toda la aplicación. El Feature/Domain Module que son módulos propios de tu aplicación.
De esta manera, Angular construye un ecosistema de módulos, pudiendo dividir una APP en N partes para optimizar el rendimiento y mantener un orden en el código fuente para que sea comprensible y escalable.
Core Module: son servicios que pueden ser usados en diferentes módulos y componentes recordar que los servicios que se inyecta en el provideIn : 'root' se puede usar en cualquier parte.
Routing Module: son módulos especiales que declaran un enrutamiento de la aplicación
Feature Domain Module:son los módulos específicos del negocio
Shared Module:Se usan para componentes pipes y directivas que se quieran usar en toda la aplicación
Muchas gracias por tu aporte
Excelente resumen de los tipo de módulos! :D
el tema de modularizar una aplicación me gusta mucho, porqué delega responsabilidades a cada módulo y no centraliza todas la responsabilidad dentro del appModulo o bueno, así es como lo miro yo ❄
La programación modular
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible y manejable.
Cada Módulo en Angular tiene asociados features y componentes específicos. A estos se les conoce como feature modules, pues están asociados a una funcionalidad específica.
Angular define los Módulos con el decorador @ngModule.
imports → Importar a otros módulos.
providers → Permiten inyectar servicios o interceptors al módulo.
declarations → Definen los componentes, pipes y directivas que va a usar el módulo.
exports → Permiten compartir características con los otros módulos.
bootstrap → Es el componente de inicio. Por lo general solo lo tiene el módulo principal.
Nota: los servicios que tengan provideIn: root se pueden usar en cualquier módulo.
Recommended readings:
More info about NgModules: here
More info about types of NgModules and guidelines for creating them: here
Los _providers _ son clases de tipo @Injectable que servirán para los artefactos (components, directives, pipes) que se coloquen en declarations, además también quedaran disponibles para aquellos otros módulos que importen este módulo que los contiene
En un componente angular puedo tener varios archivos html?, por lo general es un solo template, pero me surgió el escenario en un template para desktop y el otro para mobile. Se puede tener dos templates y cargarlo dinamicante?