Różnica między natrętnym i dyskretnym javascript

Jaka jest różnica między natrętnym i dyskretnym javascript - w prostym języku angielskim. Zwięzłość jest doceniana. Doceniane są również krótkie przykłady.

Author: divibisan, 2011-12-06

5 answers

Nie popieram już tego, ponieważ był ważny w 2011, ale być może nie w 2018 i Później.

Rozdzielenie obaw. Twój HTML i CSS nie są powiązane z Twoim kodem JS. Twój kod JS nie jest wbudowany w jakiś element HTML. Twój kod nie ma jednej dużej funkcji (lub niefunkcyjnej) dla wszystkiego. Masz krótkie, zwięzłe funkcje.

Modułowe. Dzieje się tak, gdy prawidłowo oddzielasz obawy. Na przykład twoja niesamowita animacja canvas nie musi wiedzieć, jak wektory działają w celu narysowania pola.

Nie zabijaj ludzi , jeśli nie mają zainstalowanego JavaScript lub nie działają najnowsze przeglądarki-zrób co możesz, aby z wdziękiem pogorszyć wrażenia.

Nie buduj gór śmieci , kiedy musisz tylko zrobić coś małego. Ludzie bez końca komplikują swój kod, wybierając ponownie Elementy DOM, wygłupiając semantyczny HTML i rzucając tam numerowane identyfikatory i inne dziwne rzeczy, które się dzieją, ponieważ nie zrozumcie model dokumentu lub jakąś inną technologię - więc polegają na "magicznych" warstwach abstrakcji, które spowalniają wszystko do prędkości śmieci i wprowadzają góry nad głową.

 33
Author: Incognito,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-16 13:30:15

Żaden javascript w znaczniku nie jest dyskretny:

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

Natrętny:

<div onclick="alert('obstrusive')">Information</div>
 28
Author: Joe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-28 12:37:43
  1. oddzielenie HTML i JavaScript (zdefiniuj swój JavaScript w zewnętrznych plikach JavaScript)
  2. Graceful degradation (Ważne części strony nadal działają z wyłączoną obsługą JavaScript).

Aby uzyskać długie Wyjaśnienie, sprawdź Stronę Wikipedii na ten temat.

 9
Author: Matt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-05 21:52:02

Aby rozwinąć odpowiedź Mike' a: użycie zachowania UJS jest dodane "później".

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

... etc ...

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

UJS może też oznaczać delikatną degradację (mój ulubiony rodzaj), na przykład inny sposób dotarcia do funkcji #info click, być może poprzez podanie równoważnego linku. Innymi słowy, co się stanie, jeśli nie ma JavaScript, lub używam czytnika ekranu, itp.

 2
Author: Dave Newton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-05 21:53:33

unobtrusive - " nie natrętny; niepozorny, nieasertywny lub powściągliwy."

natrętny - " mający lub wykazujący skłonność do natrętności, jak narzucanie siebie lub swoich opinii innym."

obtrude - "popchnij (coś) do przodu lub na osobę, szczególnie bez nakazu lub zaproszenia"

Mówiąc o narzucaniu swoich opinii, moim zdaniem najważniejszą częścią dyskretnego JavaScript jest to, że z punktu widzenia użytkownika widok {[2] } nie przeszkadza. Oznacza to, że strona nadal będzie działać, jeśli JavaScript jest wyłączony przez ustawienia przeglądarki. Z włączonym lub bez JavaScript witryna będzie nadal dostępna dla osób korzystających z czytników ekranu, klawiatury i myszy oraz innych narzędzi ułatwień dostępu. Może (prawdopodobnie) strona nie będzie tak "fantazyjna" dla takich użytkowników, ale i tak będzie działać.

Jeśli uważasz, że w kontekście "progresywnego ulepszania" podstawowa funkcjonalność Twojej witryny będzie działać dla wszystkich, bez względu na to, jak mają do niego dostęp. Następnie dla użytkowników z włączoną obsługą JavaScript i CSS (większość użytkowników) ulepszasz go o bardziej interaktywne elementy.

Innym kluczowym czynnikiem " dyskretnym "jest" oddzielenie obaw " - coś, na czym zależy programistom, a nie użytkownikom, ale może to pomóc w powstrzymaniu strony JavaScript przed zaciemnianiem doświadczenia użytkowników. Z punktu widzenia programisty unikanie skryptu wbudowanego sprawia, że znaczniki są dużo ładniejsze i łatwiejsze w utrzymaniu. Generalnie jest o wiele łatwiej skrypt debugowania, który nie jest rozrzucony po kilku wbudowanych procedurach obsługi zdarzeń.

 0
Author: nnnnnn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-05 23:45:11