Na aula de JavaScript na Web: manipule o DOM com JavaScript, o professor explica sobre o data-atrributes, a razão que ele da para se usar o data-attributes para pegar um elemento HTML com o Javascript é que, se você usa uma classe para pegar um elemento HTML imagiva que no futuro a equipe resolve trocar o nome da classe, logo você terá que ir no Javascript e trocar esse mesmo nome, mas usando o data-atributes você não tem esse problema se algum dia a classe desse elemento mudar nada irá acontecer no seu Javascript já que você não usou uma classe para capturar esse elemento.
Essa foi a razão apresentada para se utilizar o data-attributes, agora que outra alternativa serviria para substituir o data-atrributes para esse mesmo contexto que foi explicado?
Pois bem, tem uns 3 mese atrás que eu descobri sobre as métodogias de nomeclaturas de classes CSS como o BEM, e o que serviria para substituir seria usar uma classe CSS, porém, uma classe que utiliza um prefixo, depois de descobrir o BEM, descobri através de um vídeo do youtube a métodologia NAMESPACE, que é uma métodologia que utiliza prefixos na nomeação de suas classes, e existe um prefixo nessa métodologia que é o js- mais quaquer outro nome que vier depois do hífen é o que será usado no javascript para capturar esse elemento, exempo: js-input-email.
Agora vem a parte importante, essa classe não será usada para estilizar o elemento, ela só irá existir apenas para o Javascript, sendo assim, ela terá o mesmo benefício que o data-attributes que foi explicado no ínicio, sem falar que é intuitivo assim que você vê o prefixo js- você saberá que essa classe está sendo usado no Javascript, então não existi segredo.
Quando eu conheci essa duas métodologias eu resolvi aplicar nos meus projetos, tanto que no challange do programa ONE da Turma 5 eu utilizei o BEM junto com o NAMESPACE, onde de prefixo eu só usei o js-.
Então eu resovi escrever esse post para compartilhar esse conhecimento que adquiri recentemente, e se por acaso eu estiver errado ou enganado sobre alguma coisa é só falar, e pra você que já conhece, você acha que esse prefixo js- é uma boa alternativa ao data-attribute quando é sobre aquilo que expliquei no começo desse post?