paint-brush
As melhores práticas para o desenvolvimento front-endpor@yantsishko
33,418 leituras
33,418 leituras

As melhores práticas para o desenvolvimento front-end

por Yan Tsishko6m2022/12/23
Read on Terminal Reader

Muito longo; Para ler

O desenvolvimento front-end envolve a criação dos aspectos visuais e interativos de um site. Garantir que seu código seja otimizado, sustentável e siga os padrões do setor é essencial para criar uma experiência de usuário perfeita. Aqui estão algumas práticas recomendadas a serem lembradas ao trabalhar em projetos de front-end.
featured image - As melhores práticas para o desenvolvimento front-end
Yan Tsishko HackerNoon profile picture

O desenvolvimento front-end envolve a criação dos aspectos visuais e interativos de um site ou aplicativo que os usuários veem e com os quais interagem.


Garantir que seu código de front-end seja otimizado, sustentável e siga os padrões do setor é essencial para criar uma experiência de usuário perfeita. Aqui estão algumas práticas recomendadas a serem lembradas ao trabalhar em projetos de front-end:


  1. Marcas HTML semânticas : o uso de marcas HTML semânticas ajuda a melhorar a acessibilidade e a legibilidade do código. Por exemplo, em vez de usar uma tag div para representar um cabeçalho, você pode usar a tag header . Isso dá mais significado ao conteúdo e facilita a interpretação dos leitores de tela.
 <!-- Not semantic --> <div class="header"> <h1>Welcome to my website</h1> </div> <!-- Semantic --> <header> <h1>Welcome to my website</h1> </header>


  1. Pré- processador CSS: pré-processadores CSS, como SASS ou LESS, permitem o uso de recursos e técnicas avançadas em CSS que não estão disponíveis no CSS vanilla. Por exemplo, você pode usar variáveis, mixins e regras aninhadas para tornar os estilos mais organizados e fáceis de manter.
 /* 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; }


  1. Use a rede de entrega de conteúdo (CDN) para js, CSS e imagens : uma CDN é uma rede de servidores que entregam conteúdo com base na localização geográfica do usuário. O uso de um CDN pode melhorar o desempenho reduzindo a distância entre o usuário e o servidor. Além disso, permite o cache dos arquivos.
 <!-- 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>


  1. Otimize imagens e outros recursos : otimizar imagens e outros recursos pode ajudar a melhorar o desempenho e a velocidade do site. Isso pode ser feito por meio de técnicas como compactação de imagens, uso de formatos de arquivo de imagem apropriados e carregamento lento de imagens.
 <img src="compressed-image.jpg" alt="A compressed image" loading="lazy">


  1. Imagens responsivas: Imagens responsivas são imagens dimensionadas adequadamente para diferentes tamanhos de tela e dispositivos. Isso pode ser feito por meio do uso dos atributos srcset e de sizes na tag 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" >


  1. Gráficos vetoriais: gráficos vetoriais são imagens definidas por pontos e caminhos, em vez de pixels, e podem ser redimensionadas para qualquer tamanho sem perda de qualidade. Isso pode torná-los mais eficientes de usar, especialmente para gráficos que serão exibidos em tamanhos diferentes.
 <svg width="200" height="200"> <circle cx="100" cy="100" r="50" fill="#000000" /> </svg>


  1. Use sprites de imagem : um sprite de imagem é uma única imagem que contém várias imagens menores, que podem ser exibidas usando a propriedade background-position em CSS. Isso pode reduzir o número de solicitações HTTP necessárias para carregar as imagens, melhorando o desempenho.
 .icon1 { background-image: url('icons.png'); background-position: 0 0; } .icon2 { background-image: url('icons.png'); background-position: -20px 0; }


Princípios de Acessibilidade

Aderir aos princípios de acessibilidade ajuda a tornar seu site mais inclusivo e fácil de usar para pessoas com deficiência. Isso pode ser obtido por meio de técnicas como fornecer texto alternativo para imagens, usar uma estrutura de cabeçalho adequada e adicionar rótulos de formulário adequados.


  1. O aria-label fornece um rótulo para um elemento que não possui um rótulo visível. Isso pode ser útil para elementos como botões ou ícones que não possuem rótulos de texto.
 <button aria-label="Search"><i class="search"></i></button>


  1. O aria-required fornece indica os campos obrigatórios do formulário. O atributo aria-required pode ser usado para indicar que um campo de formulário é obrigatório. Isso pode ajudar a alertar usuários e tecnologias assistivas de que o campo deve ser preenchido para enviar o formulário.
 <label for="name">Name</label> <input type="text" id="name" name="name" required aria-required="true">


  1. O atributo aria-hidden permite ocultar um elemento de tecnologias assistivas. Isso pode ser útil para elementos decorativos que não transmitem informações importantes.
 <img src="decorative.jpg" alt="" aria-hidden="true">


  1. A aria-expanded permite indicar o estado de um elemento recolhível. O atributo aria-expanded pode ser usado para indicar se um elemento recolhível, como um menu suspenso, está atualmente expandido ou recolhido. Isso pode ajudar a alertar usuários e tecnologias assistivas sobre o estado atual do 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>


  1. A aria-live para anunciar atualizações de conteúdo. O atributo aria-live pode ser usado para indicar que o conteúdo de um elemento pode ser atualizado de forma assíncrona. Isso pode ser útil para anunciar atualizações de conteúdo, como novas mensagens ou notificações, para tecnologias assistivas.
 <div id="notifications" aria-live="polite"> <p>You have 1 new message</p> </div>


  1. A aria-describedby permite fornecer uma descrição de um elemento. O atributo aria-describedby pode ser usado para especificar um elemento que fornece uma descrição para o elemento atual. Isso pode ser útil para fornecer contexto adicional ou instruções para campos de formulário ou outros elementos interativos.
 <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>

Otimizar em JavaScript

JavaScript é uma linguagem de programação poderosa e flexível, mas também pode consumir muitos recursos. Portanto, é importante otimizar seu código JavaScript para garantir que ele seja executado com eficiência e não afete o desempenho geral do seu site ou aplicativo.


Aqui estão algumas dicas para otimizar o desempenho do JavaScript:


  • Minimize seu código : remover espaços em branco, comentários e outros caracteres desnecessários pode ajudar a reduzir o tamanho de seus arquivos JavaScript e melhorar o tempo de carregamento.


  • Compilador JavaScript : um compilador JavaScript, como Babel ou TypeScript, pode ajudar a otimizar o código convertendo-o em um formato mais eficiente.


  • Evite bloquear o thread principal : o thread principal é responsável por lidar com as interações do usuário e renderizar a página, por isso é importante evitar bloqueá-lo com tarefas de execução longa ou com uso intensivo de recursos. Em vez disso, considere usar web workers ou funções assíncronas para descarregar essas tarefas em outros threads.


  • A divisão de código permite dividir o código JavaScript em partes menores que podem ser carregadas sob demanda. Isso pode melhorar o desempenho reduzindo a quantidade de código que precisa ser carregado e analisado inicialmente. Você pode usar ferramentas como Webpack ou Rollup para implementar a divisão de código.


  • O carregamento lento permite atrasar o carregamento do conteúdo até que seja necessário. Isso pode melhorar o desempenho reduzindo a quantidade de dados que precisam ser carregados inicialmente. Você pode usar a API IntersectionObserver para implementar o carregamento lento.

 // 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); });


  • O cache permite o armazenamento de dados no navegador para que possam ser reutilizados sem a necessidade de serem buscados novamente no servidor. Isso pode melhorar o desempenho reduzindo o número de solicitações de rede que precisam ser feitas. Você pode usar a Cache API para implementar o armazenamento em cache.
 if ('caches' in window) { caches.open('my-cache').then((cache) => { cache.add('/data.json').then(() => { console.log('Data added to cache'); }); }); }


  • Ferramenta de monitoramento de desempenho : uma ferramenta de monitoramento de desempenho permite rastrear o desempenho do site e identificar possíveis problemas. Isso pode ajudar a otimizar o desempenho do site e melhorar a experiência do usuário. Algumas ferramentas populares incluem Lighthouse e SpeedCurve.


  • Ferramenta Linting: Como o ESLint, verifica o código em busca de erros e sugere melhorias, ajudando a garantir que o código seja consistente e siga as melhores práticas.

Conclusão

O desenvolvimento front-end envolve uma ampla gama de práticas e técnicas que podem ajudar a melhorar o desempenho e a experiência do usuário de um site.


Algumas das práticas recomendadas que você pode seguir incluem a otimização de imagens e outros recursos, seguindo os princípios de acessibilidade e otimização de JavaScript. Seguindo essas práticas recomendadas, você pode criar sites de alta qualidade e bom desempenho que proporcionam uma ótima experiência ao usuário.