2
respostas

Qual o beneficio tenho em escrever códigos HTML no JS ?

Professora, poderia esclarecer-me o motivo de colocar o código HTML no script do JS?
Sei que existe outras formas menos complexas do que essa para estabelecer um carrossel que funciona.

EX:

<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Exemplo</title>
<style>
    body {
        margin: 0;
        background: #000;
    }

    .carrossel {
        position: relative;
        width: 100%;
        height: 100vh; 
        overflow: hidden;
    }

    .slides {
        display: flex;
        width: 100%;
        height: 100%;
        transition: transform 0.6s ease-in-out;
    }

    .slide {
        min-width: 100%;
        height: 100%;
        background-size: cover;
        background-position: center;
    }

    /* Botões */
    .btn {
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
        background: rgba(0,0,0,0.4);
        color: white;
        border: none;
        padding: 10px;
        cursor: pointer;
        font-size: 2rem;
        z-index: 10;
    }

    .btn.prev { left: 10px; }
    .btn.next { right: 10px; }

</style>
</head>
<body>

<div class="carrossel">
    <button class="btn prev">❮</button>
    <div class="slides">
        <div class="slide" style="background-image: url('https://picsum.photos/id/1015/1920/1080');"></div>
        <div class="slide" style="background-image: url('https://picsum.photos/id/1016/1920/1080');"></div>
        <div class="slide" style="background-image: url('https://picsum.photos/id/1018/1920/1080');"></div>
    </div>
    <button class="btn next">❯</button>
</div>

<script>
    const slides = document.querySelector('.slides');
    const totalSlides = document.querySelectorAll('.slide').length;
    let index = 0;

    function mostrarSlide(n) {
        index = (n + totalSlides) % totalSlides;
        slides.style.transform = `translateX(${-index * 100}%)`;
    }

    document.querySelector('.prev').addEventListener('click', () => {
        mostrarSlide(index - 1);
    });

    document.querySelector('.next').addEventListener('click', () => {
        mostrarSlide(index + 1);
    });

    // Movimento automático a cada 4 segundos
    setInterval(() => {
        mostrarSlide(index + 1);
    }, 4000);
</script>

</body>
</html>

Gostaria de saber o porquê complicar a construção do código, sendo que ela pode ser mais simples e mais didática de aprender, fora que não entedi o motivo de ser feito no JS.
Existe uma renderização melhor ou é mais semantico para o mecânismo de busca do google e afins ?

2 respostas

Ei, Luan! Tudo bem?

Colocar HTML dentro do JavaScript pode parecer mais complexo à primeira vista, mas há algumas razões para isso. Segue algumas ideias:

  1. Quando você escreve HTML dentro do JavaScript, você pode criar e manipular elementos, uma interatividade dinâmica. Isso é particularmente útil em aplicações que precisam mudar o conteúdo sem recarregar a página. Por exemplo, em um carrossel, você pode adicionar ou remover slides sem precisar alterar o HTML estático.

  2. Em frameworks como React, Vue ou Angular, é comum ver HTML sendo escrito em JavaScript. Isso permite criar componentes reutilizáveis, onde a lógica e a estrutura do componente estão encapsuladas em um único lugar.

  3. Em projetos maiores, separar a lógica de apresentação (HTML) da lógica de aplicação (JavaScript) pode ajudar na manutenção. O JavaScript pode controlar o que é exibido e quando, com base nas interações do usuário ou em dados recebidos de um servidor.

  4. Embora o SEO possa ser uma preocupação, muitos frameworks modernos oferecem soluções para renderização no servidor, o que ajuda os mecanismos de busca a indexarem o conteúdo corretamente. Além disso, carregar conteúdo dinamicamente pode melhorar a performance ao reduzir o tamanho inicial da página.

Espero ter ajudado e qualquer dúvida, compartilhe no fórum.

Até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado!

E aí Nathalia!
Muito Obrigado pelo retorno.

Pelo que eu entendi aqui, há uma certa utilidade em usar códigos de forma dinâmica no JS, mas se entendi bem de certa forma ele é utilizado assim por ter virado um padrão em frameworks como VUE e REACT, não por ser superior a forma "tradicional" na elaboração de projetos, mas por ser um recurso opcional para devs.
Além disso ele pode se tornar um problema no SEO se a intenção do projeto é ser popular nos mecanismos de busca.
Mas em compensação se torna mais prático quando o assunto é uma manutenção efetiva em um projeto.
É isso!?