En ésta presentación hacemos un repaso exhaustivo de todas las buenas prácticas relacionadas con Angular. v Hablaremos, en concreto de:
ESTRUCTURA FÍSICA
ESTRUCTURA LÓGICA
SINTAXIS
PERFORMANCE
SEGURIDAD
No os va a dejar indiferentes.
Los vídeos están en el canal de Juan G Carmona en Youtube.
Tener una visión a corto plazo de la implementación
Pero con visión a largo plazo.
Empezar con algo pequeño pero teniendo en cuenta hacia dónde se dirige la aplicación.
Nomenclatura?
Utilizar Sufijos Page o View para los Smart
Ej: EventPage Puede recuperar un evento
Con un resolver o llamando a un servicio
Y contener un component EventDetails
Nomenclatura?
Utilizar Sufijos Page o View para los Smart
Ej: EventPage Puede recuperar un evento
Con un resolver o llamando a un servicio
Y contener un component EventDetails
Nomenclatura?
Utilizar Sufijos Page o View para los Smart
Ej: EventPage Puede recuperar un evento
Con un resolver o llamando a un servicio
Y contener un component EventDetails
Hay algunos aspectos que debemos considerar al decidirnos por uno u otro enfoque.
El tamaño de la app y de los módulos puede verse afectado por la forma en que se dividen los módulos.
Tiempo de carga de su aplicación en un navegador.
La escalabilidad
La simplicidad
¿Qué tan fácil es probar un solo componente? Si el componente es parte de un módulo grande, es posible que tengamos que simular muchos servicios.
Hay algunos aspectos que debemos considerar al decidirnos por uno u otro enfoque.
El tamaño de la app y de los módulos puede verse afectado por la forma en que se dividen los módulos.
Tiempo de carga de su aplicación en un navegador.
La escalabilidad
La simplicidad
¿Qué tan fácil es probar un solo componente? Si el componente es parte de un módulo grande, es posible que tengamos que simular muchos servicios.
Este enfoque es muy simple pero tiene algunas desventajas:
Todos los componentes se cargan al inicio, lo que se traduce en un tiempo de carga inicial más largo.
El archivo app.module se hincha y la refactorización significa tocar este archivo todo el tiempo
Resolver dependencias es una pesadilla. Por ejemplo, es muy difícil averiguar qué podemos eliminar después de eliminar un componente. Tal vez un componente solo se usó en el componente eliminado y no pudo eliminarlo también.
Este enfoque puede funcionar para aplicaciones muy pequeñas, pero no lo recomendaría para proyectos más grandes.
Hay algunos aspectos que debemos considerar al decidirnos por uno u otro enfoque.
El tamaño de la app y de los módulos puede verse afectado por la forma en que se dividen los módulos.
Tiempo de carga de su aplicación en un navegador.
La escalabilidad
La simplicidad
¿Qué tan fácil es probar un solo componente? Si el componente es parte de un módulo grande, es posible que tengamos que simular muchos servicios.
E smucho más fácil entender qué dependencias tiene un componente.
Cada módulo de componente solo importa los módulos que utiliza directamente.
Eso significa que si eliminamos un componente, también eliminamos todas sus dependencias automáticamente. Bonito.
Y por último, pero no menos importante, la regla es muy simple: cada componente tiene su módulo.
Eso es todo, no hay discusiones sobre cómo dividir los módulos.
Tenemos muchas más definiciones de módulo y tenemos que importar todas las dependencias explícitamente.
Está en un lugar intermedio entre los otros dos patrones
Obtenemos el tamaño de paquete óptimo cuando cargamos todas las vistas de forma diferida.
Dado que el módulo compartido se usa en varios módulos de carga diferida, se carga en un módulo común separado.
Obtenemos paquetes de tamaño pequeño con poca repetición y todavía tenemos una estructura clara.
Si la aplicación es más grande, también puede dividir los módulos nuevamente en módulos de funciones más pequeños o agrupar vistas en paquetes de funciones más grandes. Esto puede ayudarlo a organizar su código o generar confusión sobre cuándo crear esos submódulos.
Hay algunos aspectos que debemos considerar al decidirnos por uno u otro enfoque.
El tamaño de la app y de los módulos puede verse afectado por la forma en que se dividen los módulos.
Tiempo de carga de su aplicación en un navegador.
La escalabilidad
La simplicidad
¿Qué tan fácil es probar un solo componente? Si el componente es parte de un módulo grande, es posible que tengamos que simular muchos servicios.
Hay algunos aspectos que debemos considerar al decidirnos por uno u otro enfoque.
El tamaño de la app y de los módulos puede verse afectado por la forma en que se dividen los módulos.
Tiempo de carga de su aplicación en un navegador.
La escalabilidad
La simplicidad
¿Qué tan fácil es probar un solo componente? Si el componente es parte de un módulo grande, es posible que tengamos que simular muchos servicios.
JavaScript se creó en 1995, pero el lenguaje todavía prospera hoy. Hay subconjuntos, superconjuntos, versiones actuales y la versión ES6 (Junio de 2015) que trajo muchas características nuevas.
The rest parameter syntax allows a function to accept an indefinite number of arguments as an array,
https://blog.angular.io/with-best-practices-from-the-start-d64881a16de8
Habilitado por defecto desde la version 12.
JavaScript no realiza ningún tipo de verificación en las asignaciones de variables. Pero esto parece bastante extraño para los desarrolladores de Java o C# que estamos acostumbrados a las variables opcionales y los tipos nullables.
Al usar strict null check tenemos que especificar si nuestros tipos admiten nulos o undefined. La comprobación estricta de nulos ayuda a eliminar errores por descuido y fortalece nuestro código al hacer que la aparición de valores nulos sea mucho más explícita
No hay una respuesta correcta
Se puede cambiar el flag pero en proyectos grandes merece la pena planteárselo…
INSTEAD: Declare Safe Data Types
When you declare a variable if the value is not reassigned “Const” can be used to declare the value. The “let” keyword declares an input variable referenced within the template. Using these keywords makes the declaration of a variable more clear. With this, the code crispness and clarity are improvised with clean code..
In javascript, the two main reference types are objects and arrays. If we wish to copy them into another object or array and modify them, we should use the es6 spread operator(…) to do so we need to use immutability.
const student = { id: 1, name: "John Doe"; email: "john@google.com"; }
const results = { ...student, percentage : 90 }
In this way, we’re recreating the user object, and then simply overriding the status property. You can quickly clone user objects and overwrite their status and properties .
Documenting code is a good practice. It will assist a new developer in understanding the logic and readability of a project. Documenting each variable and method is a good Angular practice.
Methods must be defined using multi-line comments that indicate what task the method actually does.
/** * This is the get function * @param age This is the age parameter * @returns returns a string version of age */ function getAge(age: number): string { return age.toString(); }
En un ataque CSRF, el atacante utiliza métodos como el phishing que harán que la víctima realice solicitudes al servidor. El servidor no puede distinguir la solicitud porque las cookies de sesión se envían automáticamente con la solicitud y, por lo tanto, autentica la acción.
Cada vez que se añaden, mueven o eliminen elementos en la colección se buscan cambios
Recibe el elemento actual y debería devolver algún valor.
Luego, el valor devuelto por la función se compara con el valor que esta función devolvió la última vez.
Si el valor cambia, se informa de un cambio y esto fuerza un refresco.
Entonces, si la función predeterminada devuelve referencias a objetos habrá refrescos constantemente.
Cada vez que cambie algo en nuestro array de elementos, para cada elemento habrá un refresco completo del contenido del ngFor.
First Contentful Paint is a visual metric that measures the time until the browser first renders any content (not to be confused with First Paint, which measures the time until the browser first renders anything). This metric is critical because it tells a site visitor that something is happening and that they’re not just going to be staring at a blank screen.
El índice de velocidad es una métrica calculada que representa la rapidez con la que la página muestra el contenido de la mitad superior de la página. Esta métrica visual va de la mano con Visually Complete para brindarle una imagen tanto del punto final de la representación del contenido como del viaje para llegar a ese punto final.
First Contentful Paint is a visual metric that measures the time until the browser first renders any content (not to be confused with First Paint, which measures the time until the browser first renders anything). This metric is critical because it tells a site visitor that something is happening and that they’re not just going to be staring at a blank screen.
El índice de velocidad es una métrica calculada que representa la rapidez con la que la página muestra el contenido de la mitad superior de la página. Esta métrica visual va de la mano con Visually Complete para brindarle una imagen tanto del punto final de la representación del contenido como del viaje para llegar a ese punto final.
NgRx Anexo 1
Siguiente En paralelo
-> (Teoría) API rest con .NET 6 y Clean Arquitecture
Interfaz REST
Dominio
Infraestructura
persistencia (con EF)
Applicación (CQRS)
MediatR
Puede que tests unitarios
-> Puesta en práctica
Azure DevOps Discovery
Crear una Wiki (con enlaces a los vídeos y las diferentes secciones)
Crear una pipeline de compilación de Angular
Crear una pipeline de compilación de .Net
Gestión de repositorios y ramas en el proyecto
Angular Project scaffolding
API Project scaffolding.