ti-enxame.com

Diferença entre javascript obstrutivo e não obstrutivo

Qual é a diferença entre javascript obstrutivo e discreto - no inglês simples. Brevidade é apreciada. Exemplos curtos também são apreciados.

49
well actually

Eu não apoio mais isso, pois era válido em 2011, mas talvez não em 2018 e além.

Separação de preocupações. Seu HTML e CSS não estão vinculados ao seu código JS. Seu código JS não está embutido em algum elemento HTML. Seu código não tem uma grande função (ou não) para tudo. Você tem funções curtas e sucintas.

Modular. Isso acontece quando você separa corretamente as preocupações. Por exemplo, sua incrível animação de tela não precisa saber como os vetores funcionam para desenhar uma caixa.

Não elimine a experiência se eles não tiverem o JavaScript instalado ou não estiverem executando os navegadores mais recentes - faça o que puder para degradar a experiência normalmente.

Não construa montanhas de código inútil quando você só precisa fazer algo pequeno. As pessoas complicam incessantemente seu código, selecionando novamente elementos DOM, manipulando HTML semântico e inserindo IDs numerados lá, e outras coisas estranhas que acontecem porque eles não entendem o modelo de documento ou algum outro tipo de tecnologia - então eles contam com camadas de abstração "mágicas" que diminuem a velocidade do lixo e trazem montanhas de sobrecarga.

36
Incognito

Nenhum javascript na marcação é discreto:

<div id="informationHeader">Information</div>

intrusivo:

<div onclick="alert('obstrusive')">Information</div>
33
Joe
  1. Separação de HTML e JavaScript (defina seu JavaScript em arquivos JavaScript externos)
  2. Degradação graciosa ( partes importantes da página ainda funcionam com o JavaScript desativado).

Para uma explicação extensa, confira o página da Wikipedia sobre o assunto.

10
Matt

Para expandir a resposta de Mike: o uso do comportamento UJS é adicionado "mais tarde".

<div id="info">Information</div>

... etc ...

// In an included JS file etc, jQueryish.
$(function() {
    $("#info").click(function() { alert("unobtrusive!"); }
});

O UJS também pode implicar degradação suave (meu tipo favorito), por exemplo, outro meio de chegar ao #info clique na funcionalidade, talvez fornecendo um link equivalente. Em outras palavras, o que acontece se não houver JavaScript, ou eu estiver usando um leitor de tela etc.

3
Dave Newton

discreto - "não intrusivo; discreto, não assertivo ou reticente".

intrusivo - "tendo ou mostrando disposição para se intrometer, como impondo a si mesmo ou a opinião de alguém sobre os outros."

obstruir - "empurrar (algo) adiante ou sobre uma pessoa, especialmente sem mandado ou convite"

Então, falando em impor as opiniões de alguém, na minha opinião, a parte mais importante do JavaScript discreto é que do ponto de vista do usuário ele não atrapalha. Ou seja, o site ainda funcionará se o JavaScript estiver desativado pelas configurações do navegador. Com ou sem o JavaScript ativado, o site ainda estará acessível para pessoas que usam leitores de tela, teclado e sem mouse e outras ferramentas de acessibilidade. Talvez (provavelmente) o site não seja tão "chique" para esses usuários, mas ainda funcionará.

Se você pensa em termos de "aprimoramento progressivo", a funcionalidade principal do seu site funcionará para todos, não importa como eles o acessem. Em seguida, para usuários com JavaScript e CSS ativados (maioria dos usuários), você o aprimora com mais elementos interativos.

O outro fator "discreto" é a "separação de preocupações" - algo que os programadores se preocupam, não os usuários, mas pode ajudar a impedir que o lado do JavaScript atrapalhe a experiência dos usuários. Do ponto de vista do programador, evitar scripts embutidos tende a tornar a marcação muito mais bonita e fácil de manter. Geralmente, é muito mais fácil depurar scripts que não estão espalhados por vários manipuladores de eventos embutidos.

2
nnnnnn