El desarrollo front-end implica la creación de los aspectos visuales e interactivos de un sitio web o una aplicación que los usuarios ven e interactúan.
Asegurarse de que su código front-end esté optimizado, se pueda mantener y siga los estándares de la industria es esencial para crear una experiencia de usuario perfecta. Estas son algunas de las mejores prácticas que se deben tener en cuenta al trabajar en proyectos front-end:
div
para representar un encabezado, puede usar la etiqueta de header
. Esto le da más significado al contenido y hace que sea más fácil de interpretar para los lectores de pantalla. <!-- Not semantic --> <div class="header"> <h1>Welcome to my website</h1> </div> <!-- Semantic --> <header> <h1>Welcome to my website</h1> </header>
/* Css */ .btn { color: #ffffff; background-color: #000000; font-size: 16px; border-radius: 5px; } /* Sass */ $primary-color: #000000; $secondary-color: #ffffff; $font-size: 16px; $border-radius: 5px; .btn { color: $secondary-color; background-color: $primary-color; font-size: $font-size; border-radius: $border-radius; }
<!-- Not using a CDN --> <script src="/scripts/jquery.js"></script> <!-- Using a CDN --> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js"></script>
<img src="compressed-image.jpg" alt="A compressed image" loading="lazy">
srcset
y sizes
en la etiqueta img
. <img srcset="image-small.jpg 500w, image-medium.jpg 1000w, image-large.jpg 1500w" sizes="(max-width: 500px) 500px, (max-width: 1000px) 1000px, 1500px" src="image-large.jpg" alt="An image" >
<svg width="200" height="200"> <circle cx="100" cy="100" r="50" fill="#000000" /> </svg>
background-position
en CSS. Esto puede reducir la cantidad de solicitudes HTTP necesarias para cargar las imágenes, lo que mejora el rendimiento. .icon1 { background-image: url('icons.png'); background-position: 0 0; } .icon2 { background-image: url('icons.png'); background-position: -20px 0; }
Cumplir con los principios de accesibilidad ayuda a que su sitio web sea más inclusivo y más fácil de usar para personas con discapacidades. Esto se puede lograr a través de técnicas como proporcionar texto alternativo para las imágenes, usar una estructura de encabezado adecuada y agregar etiquetas de formulario adecuadas.
aria-label
proporciona una etiqueta para un elemento que no tiene una etiqueta visible. Esto puede ser útil para elementos como botones o íconos que no tienen etiquetas de texto. <button aria-label="Search"><i class="search"></i></button>
aria-required
proporciona campos de formulario obligatorios. El atributo aria-required
se puede utilizar para indicar que se requiere un campo de formulario. Esto puede ayudar a alertar a los usuarios y las tecnologías de asistencia de que el campo debe completarse para enviar el formulario. <label for="name">Name</label> <input type="text" id="name" name="name" required aria-required="true">
aria-hidden
permite ocultar un elemento de las tecnologías de asistencia. Esto puede ser útil para elementos decorativos que no transmitan información importante. <img src="decorative.jpg" alt="" aria-hidden="true">
aria-expanded
permite indicar el estado de un elemento plegable. El atributo aria-expanded
se puede utilizar para indicar si un elemento plegable, como un menú desplegable, está actualmente expandido o contraído. Esto puede ayudar a alertar a los usuarios y las tecnologías de asistencia sobre el estado actual del elemento. <button aria-expanded="false" aria-controls="menu">Menu</button> <ul id="menu" aria-hidden="true"> <li>Option 1</li> <li>Option 2</li> <li>Option 3</li> </ul>
aria-live
para anunciar actualizaciones de contenido. El atributo aria-live
se puede utilizar para indicar que el contenido de un elemento se puede actualizar de forma asíncrona. Esto puede ser útil para anunciar actualizaciones de contenido, como nuevos mensajes o notificaciones, para tecnologías de asistencia. <div id="notifications" aria-live="polite"> <p>You have 1 new message</p> </div>
aria-describedby
permite proporcionar una descripción de un elemento. El atributo aria-describedby
se puede utilizar para especificar un elemento que proporciona una descripción para el elemento actual. Esto puede ser útil para proporcionar contexto adicional o instrucciones para campos de formulario u otros elementos interactivos. <label for="email">Email address</label> <input type="email" id="email" name="email" aria-describedby="email-description"> <p id="email-description">Please enter your email address</p>
JavaScript es un lenguaje de programación potente y flexible, pero también puede requerir muchos recursos. Por lo tanto, es importante optimizar su código JavaScript para garantizar que se ejecute de manera eficiente y no afecte el rendimiento general de su sitio web o aplicación.
Aquí hay algunos consejos para optimizar el rendimiento de JavaScript:
Evite bloquear el subproceso principal : el subproceso principal es responsable de manejar las interacciones del usuario y mostrar la página, por lo que es importante evitar bloquearlo con tareas de ejecución prolongada o que consumen muchos recursos. En su lugar, considere usar trabajadores web o funciones asincrónicas para descargar estas tareas a otros subprocesos.
La división de código le permite dividir el código JavaScript en fragmentos más pequeños que se pueden cargar a pedido. Esto puede mejorar el rendimiento al reducir la cantidad de código que debe cargarse y analizarse inicialmente. Puede usar herramientas como Webpack o Rollup para implementar la división de código.
La carga diferida le permite retrasar la carga de contenido hasta que sea necesario. Esto puede mejorar el rendimiento al reducir la cantidad de datos que deben cargarse inicialmente. Puede usar la API de IntersectionObserver
para implementar la carga diferida.
// Lazy loading with IntersectionObserver const observer = new IntersectionObserver((entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { // Load content observer.unobserve(entry.target); } }); }); document.querySelectorAll('[data-lazy]').forEach((element) => { observer.observe(element); });
Cache API
para implementar el almacenamiento en caché. if ('caches' in window) { caches.open('my-cache').then((cache) => { cache.add('/data.json').then(() => { console.log('Data added to cache'); }); }); }
Herramienta de seguimiento del rendimiento : una herramienta de seguimiento del rendimiento permite realizar un seguimiento del rendimiento del sitio web e identificar posibles problemas. Esto puede ayudar a optimizar el rendimiento del sitio web y mejorar la experiencia del usuario. Algunas herramientas populares incluyen Lighthouse y SpeedCurve.
Herramienta Linting : como ESLint, verifica el código en busca de errores y sugiere mejoras, lo que ayuda a garantizar que el código sea consistente y siga las mejores prácticas.
El desarrollo front-end implica una amplia gama de prácticas y técnicas que pueden ayudar a mejorar el rendimiento y la experiencia del usuario de un sitio web.
Algunas de las mejores prácticas que puede seguir incluyen la optimización de imágenes y otros activos, el seguimiento de los principios de accesibilidad y la optimización de JavaScript. Al seguir estas mejores prácticas, puede crear sitios web de alta calidad y buen rendimiento que brinden una excelente experiencia de usuario.