Czy powszechną praktyką jest minimalizowanie użycia JavaScript podczas tworzenia strony internetowej? [Zamknięte]

32

Jestem programistą stron internetowych od prawie 10 lat i mam w zwyczaju nie używać JavaScript, gdy tylko jest to możliwe. Nie mówię tu o tworzeniu aplikacji internetowych, ale o witrynach baz danych.

Czy to dobre / szanowane podejście?

Ryan
źródło
6
Wyłączam standardowy javascript, a noscript informuje mnie z jakich źródeł są ładowane skrypty jav. Często zdarza się, że witryna ładuje javascript z ponad 10 źródeł wtórnych, które z kolei ładują javascript ze źródeł trzeciorzędnych. I często zdarza się, że strona ładuje javascript z ponad 20 zewnętrznych źródeł. Więc powiedziałbym: minimalizacja użycia javascript jest poza oknem.
Pieter B
9
Zauważyłem, że im bardziej polegasz na javascript, tym mniej Twoja witryna będzie przyjazna dla nawigacji i SEO. Nie mogę policzyć, ile stron opuściłem z powodu „linków javascript” i tym podobnych.
BiAiB
1
Odkryłem, że w interneciez jest bardzo dużo javascript. Problemy są następujące: 1) proste indeksatory nie rozumieją js, 2) duża ilość js spala procesor 3) niektóre platformy wciąż nie mają js (telefony, przeglądarka linków). Zatem unikanie js, gdy jest to niepotrzebne, jest dobrą praktyką.
permeakra
Dlaczego to pytanie tygodnia? Głosowałbym za tym, że nie jest to jasne i konstruktywne. Ogólnie „powinienem używać X?” pytania nie są mile widziane na tej stronie. Może ktoś może mnie oświecić.
Mark E. Haase
Stos internetowy Microsoft (do tej pory z MVC) polegał na JS do KAŻDEGO POJEDYNCZEGO PRZYCISKU PRZYCISKU w ASP.NET i SharePoint. Więc nie, minimalizowanie zużycia nie jest powszechne.
Graham

Odpowiedzi:

51

Instynkt większości programistów ma na celu redukcję wszelkiego rodzaju kodu. Im mniej kodu, tym mniej złożoności i mniej punktów możliwego błędu we wspomnianym kodzie. Ta reguła dotyczy tak samo Javascript, jak i innych języków. Po prostu podtrzymujesz tradycję.

Używaj Javascript zgodnie z potrzebami / potrzebami na stronach HTML ... ale nie ma powodu, aby używać go, gdy nie jest on faktycznie potrzebny.

Grandmaster B.
źródło
9
Unikanie JavaScriptu to inna sprawa niż ogólny instynkt, aby uniknąć więcej kodu. W JS nie chodzi tylko o zmniejszenie złożoności rozwoju; istnieją prawdziwe problemy z kompatybilnością z użytkownikami.
jhocking
34

10 lat temu może to być dobry pomysł. W dzisiejszych czasach większość części Internetu (- przynajmniej niektóre bardzo popularne -) stały się prawie bezużyteczne lub zapewniają tylko bardzo ograniczoną funkcjonalność, gdy wyłącza Javascript w przeglądarce. Dlatego dzisiaj IMHO może oczekiwać, że użytkownicy będą mieć włączoną obsługę Javascript.

Istnieje wiele frameworków, takich jak JQuery, do obejścia niezgodności przeglądarki. IMHO nie ma dzisiaj prawdziwego powodu, dla którego powinieneś się ograniczać, nie używając Javascript w swojej witrynie - jedynym powodem może być to, że nie masz do tego żadnego zastosowania.

EDYCJA: inne pytanie brzmi: jeśli powinieneś zapewnić minimalną funkcjonalność swojej strony internetowej, gdy odwiedzający nie mają włączonej JS - jest to w większości dobry pomysł, z powodów, które wskazali niektórzy komentatorzy.

EDIT2: na pewno dla każdej strony internetowej trzeba znaleźć równowagę między przyjaznością dla użytkownika, przyjaznością dla wyszukiwarek i wysiłkiem rozwojowym. IMHO dzisiaj Javascript może pomóc poprawić tę równowagę - jeśli jest mądrze stosowany. To powiedziawszy, myślę, że nie ma już potrzeby generalnego minimalizowania użycia Javascript w celu utrzymania tej równowagi. Używaj go ostrożnie i nie demonizuj go.

Doktor Brown
źródło
17
Oto kilka: SEO, agregatory internetowe, czytniki ekranu, NoScript, curl, przeglądarki mobilne. Domyślnie wyłączam skrypty, a większość Internetu nadal działa dobrze.
tdammers
7
Jeśli witryna nie nadaje się do użytku bez javascript, nie może być skutecznie indeksowana przez Google i może, ale nie musi, być użyteczna w kontekście RESTful. Nawet Facebook jest co najmniej minimalnie użyteczny bez javascript
GordonM
9
Zgadzam się z większością tego, co tu powiedziano, ale zdecydowanie sprzeciwiam się idei, że witryna powinna być „co najmniej minimalnie użyteczna bez JavaScript”. To źle: powinno być maksymalnie użyteczne bez JavaScript.
Jörg W Mittag
4
@ JörgWMittag, jeśli zamierzasz wyłączyć technologię internetową, nie powinieneś oczekiwać pełnych korzyści z witryny. Scenariusze są różne, ale jeśli tworzę aplikację internetową, prawdopodobnie nie tracę czasu na budowanie pełnej kompatybilności dla mniejszości moich użytkowników, którzy nie chcą przejść do XXI wieku. Podobne do tego, jak nie obsługuję IE 6 w większości moich projektów.
Tom Marthenal,
2
Obsługa wszystkich przypadków użycia jest profesjonalna. Jeśli to przegapiłeś, to w porządku, wszyscy raz na jakiś czas się mylą, ale zaniedbanie ich to inny problem. Jestem zaangażowany w tworzenie stron internetowych w 100% BEZ JS, a po jego uruchomieniu dodaj JS, aby usprawnić zadania i ulepszyć UX.
Spidey,
13

Posiadanie witryny, z której można korzystać bez JavaScript, oznacza, że ​​jest ona dostępna dla jak najszerszego grona odbiorców. Chociaż prawdą jest, że większość przeglądarek obsługuje JavaScript, a większość użytkowników domyślnie go włącza, nie można na to liczyć. W końcu nie wszystko, co ma dostęp do Twojej witryny, to przeglądarka; jeśli chcesz, aby Twoja strona była właściwie indeksowana przez wyszukiwarki takie jak Google, GoogleBot musi mieć możliwość nawigacji w Twojej witrynie bez JavaScript.

Istnieją również specjalistyczne programy do przeglądania stron internetowych, w których JavaScript jest niedostępny lub nie działa zgodnie z oczekiwaniami. Na przykład oprogramowanie do odczytu ekranu lub brajla używane przez osoby niedowidzące. Istnieją również środowiska, w których pamięć jest ograniczona, a posiadanie dużej ilości javascript może sprawiać, że przeglądanie jest nieprzyjemne, a nawet niepraktyczne, takie jak przeglądarki smartfonów.

Powinieneś przyjrzeć się koncepcji „stopniowego ulepszania”, w której budujesz witrynę do pracy bez javascript, a następnie dodajesz warstwę javascript na wierzchu, aby poprawić wrażenia użytkownika. W ten sposób będziesz mieć witrynę, która będzie przynajmniej użyteczna dla osób bez javascript.

Nie musisz dążyć do zapewnienia każdej możliwej funkcji, którą planujesz wdrożyć za pomocą JavaScript w przeglądarkach innych niż JavaScript, ale nadal ważne jest, aby przynajmniej pozostawić podstawowe przypadki użycia dostępne bez JavaScript. Możliwość przeglądania witryny jest oczywiście na szczycie listy, ale jeśli budujesz witrynę e-commerce, uzależnienie procesu kasowania od kodu JavaScript byłoby niemądre, ponieważ mogłoby to kosztować sprzedaż.

GordonM
źródło
4
Absolutnie. Javascript powinien być używany jako przyprawa, a nie danie główne.
hlovdal
9

Inne odpowiedzi wydają się koncentrować na „czy ja nigdy nie powinienem używać JavaScript”, więc myślę, że nie rozumiem tego. Nie powinieneś używać JavaScript, jeśli go nie potrzebujesz. Niektóre osoby używają JavaScript do wszystkiego :

  • Najedź kursorem (powinien być CSS)
  • AJAX (powinien mieć, hrefgdy jest to uzasadnione)
  • Pozycjonowanie (powinien być CSS)

Korzyści to:

  • Strona wyświetla się szybciej
  • CSS jest przez większość czasu znacznie mniej skomplikowany niż JavaScript
  • Posiadanie hreflinków zapasowych pomaga wyszukiwarkom, użytkownikom, którzy chcą otwierać linki na innych kartach, oraz użytkownikom, którzy nienawidzą JavaScript

Oczywiście AJAX jest całkiem fajny, podobnie jak strony dynamiczne, więc nie wyrzucaj tych rzeczy tylko dlatego, że niektórzy ludzie ich nie potrzebują.

Chodzi mi o to, że nauka robienia rzeczy bez JavaScript jest dobra, minimalizacja JavaScript jest dobra, a tworzenie kopii zapasowych na wypadek, gdy JavaScript nie działa, jest dobre, ale nie ma powodu, aby unikać funkcji, ponieważ wymagają one JavaScript.

Przywróć Monikę
źródło
1
Pamiętam, jak wiele lat temu udzielano mi rad na temat interfejsów Man Machine: „To, że możesz, nie oznacza, że ​​powinieneś”. Jest to maksymalna liczba witryn z nadmiernie krzykliwą animacją, dźwięk i tym podobne powinny wziąć na pokład.
Andrew
8

Dobrym pomysłem jest unikanie niepotrzebnej funkcjonalności, kropka. Frameworki takie jak jQuery sprawiają, że dodawanie dodatków, które mogą mieć sens, ale czasem nie, jest niezwykle łatwe. Na przykład:

Czy naprawdę musisz to animować?

... lub ...

Czy przemierzanie całego DOM jest naprawdę potrzebne dla tak trywialnego selektora? Czy możesz to ograniczyć za pomocą kontekstu i czy potrzebujemy tego w pierwszej kolejności?

Nie unikałbym korzystania z JS, ale uważam, aby nie być wstrętnym, jednocześnie wypatrując wolniejszych maszyn. To samo dotyczy niektórych fantastycznych nowych rzeczy, które otrzymujemy w CSS3 - takich jak cienie ... jeśli użyjesz ich nadmiernie, mogą sprawić, że ktoś na maszynie o niższej mocy będzie miał naprawdę złe doświadczenia.

Wyjątkiem może być pisanie kontrolek front-end dla różnego rodzaju urządzeń, w których muszą one absolutnie współpracować z wyłączonym JS (być może surowa polityka bezpieczeństwa w sieci zarządzania centrum danych nie nakazuje JS). Dlatego powyższe należy wziąć pod uwagę w kontekście dowolnych wymagań.

Tim Post
źródło
6

Uważam, że będąc stosunkowo nowym i młodym programistą (około 4 lat), musiałem dużo na ten temat badać, ponieważ javascript jest wszędzie.

W moich projektach staram się upewnić, że strona działa bez javascript, a następnie dodaj javascript tam, gdzie ma to sens (sprawdzanie poprawności po stronie klienta, ulepszenie interfejsu użytkownika itp.). Jest to rodzaj progresywnego ulepszania i zajmuje się SEO, wyłączonym javascript i starszymi niezgodnościami przeglądarki.

To samo pytanie zostało zadane na SO, ale nie mogę z miłości dla mnie pamiętać, gdzie.

Awemo
źródło
5

Użycie JavaScript może być ograniczone w kilku przypadkach:

  • Uprawomocnienie. Należy to zrobić po stronie serwera. Czasami w aplikacjach internetowych następuje szybka weryfikacja po stronie klienta, ale samo to nie wystarczy.
  • Niezwykle ważne zadania. Użytkownicy mogą wyłączyć skrypty swoich przeglądarek, aby kod JS w ogóle nie działał. Jeśli chcesz mieć pewność, że coś zadziała w dowolnej przeglądarce, nie ufaj JS.
  • Prędkość. Kod JS musi zostać wysłany do klienta, a im więcej kodu napiszesz, tym dłużej to trwa. Chociaż niewielkie ilości kodu nie przyniosą praktycznego efektu.

JS ma ogromną liczbę funkcji, których nie można zastąpić kodem po stronie serwera. Poza powyższymi nie sądzę, aby istniał jakikolwiek rozsądny argument ograniczający użycie JS.

superM
źródło
5

Witryny oparte na bazie danych ” to klucz do odpowiedzi. Istnieją dwa sposoby tworzenia stron internetowych, a dozwolona ilość Javascript zależy od tego, którego używasz. Możesz zbudować:

  1. Strony zorientowane na treść . W pierwszym przypadku magiczne słowa to „progresywne ulepszenie”; ogranicz javascript do redundantnych funkcji, które mogą być wyposażone w klasyczny dostęp do treści przez zwykły HTTP.

  2. Aplikacje internetowe . W przypadku aplikacji zamiast tego używasz Internetu jako platformy oprogramowania. Aplikacje opierają się na pewnych założeniach dotyczących dostępnego oprogramowania - nowoczesne przeglądarki, najnowsze wersje popularnych bibliotek javascript, dostęp do pulpitu za pomocą myszy i / lub tabletów z funkcją Multi-Touch.

Internet jako platforma oprogramowania

Minimalne wymagania dotyczące dostępu są OK, jeśli naprawdę budujesz aplikację - kierujesz reklamy na określoną platformę, aby uzyskać zaawansowane funkcje, których nie można zbudować inaczej. To tak jak programowanie w języku Python, Java lub .Net. Nie daj się zwieść modnym słowom takim jak HTML5 i obietnica „biegnij gdziekolwiek”; możesz mieć przenośny kod między urządzeniami tylko tak długo, jak długo obsługiwana jest na nich cała platforma. Wszelkie zmiany w stosie programistycznym, a oprogramowanie ulegnie awarii.

Tak więc cena do zapłacenia polega na tym, że podążasz za ruchomym celem, ponieważ wypuszczane są nowe wersje platformy; musisz nadrobić zaległości, aby aplikacja działała wraz z rozwojem platformy. Jedyną korzyścią jest pół-uniwersalny mechanizm dostarczania aplikacji, który nie zależy od pakietów ani sklepów z aplikacjami; ale tracisz główną funkcję odróżniającą sieć od poprzednich systemów komputerowych podłączonych do sieci.

Sieć jako dostarczanie treści

Strony zorientowane na treść to inna bestia; są w tradycji klasycznej sieci WWW. Treść jest luźno interpretowana przez klienta, który może dokonać dowolnej pożądanej transformacji przed prezentacją. Oczekuje się, że strona będzie dostępna przez ekosystem różnych platform, które mogą, ale nie muszą obsługiwać obecnych standardów:

  • Urządzenia mobilne obsługujące mniej niż najnowsze i najdroższe dzwonki i gwizdy
  • Starzy użytkownicy przeglądarki, którzy nie mogą (w przedsiębiorstwie) lub nie wiedzą (w domu), jak zaktualizować
  • Przyszłe wersje popularnych silników, które przestają być używane w starych interfejsach API

Stracisz je wszystkie, jeśli potrzebujesz aktualnego gatunku javascript, który zawsze się rozwija. W tym kontekście zepsuty JavaScript, który uniemożliwia dostęp do treści, jest grzechem.

Każdy, kto mówi, że „użycie javascript powinno być zminimalizowane” opowiada się za tym stylem. Uwzględnij trochę JS, pamiętaj, ale wszystkie funkcje powinny być nadmiarowe z podstawowym dostępem do treści, które można uzyskać po stronie serwera:

  • Sprawdzanie poprawności wprowadzania danych
  • Aktualizacje zawartości AJAX dla najszybszej nawigacji (która jednak działa bez JS)

Zaletą tego podejścia jest mniej testów i aktualizacji oraz dłuższy okres przechowywania. Pierwsze statyczne strony sprzed 20 lat nadal można przeglądać w dowolnym kliencie internetowym, ale pierwsze aplikacje internetowe są na zawsze zepsute. Jeśli Twoja witryna ma jakąkolwiek wartość archiwizacyjną, na dłuższą metę skorzystasz z Internetu jako systemu dostarczania treści, a nie platformy aplikacji.

TuringTest
źródło
3

Pracuję dla mojego rządu stanowego, w związku z czym większość mojego rozwoju dotyczy interaktywnych stron internetowych opartych na danych. Zapytania w stosunku do danych historycznych, formularzy, tego typu rzeczy. Utrzymujemy nasz Javascript na absolutnym minimum z następujących powodów:

1) Sprawdzanie poprawności danych wejściowych formularza zawsze powinno odbywać się po stronie serwera, nigdy po stronie klienta. Jeśli spróbujesz sprawdzić poprawność danych wejściowych po stronie klienta, haker musi jedynie utworzyć lokalną kopię strony internetowej i ponownie napisać Javascript, aby zezwolić na to, co chce Ci wysłać (wstrzyknięcie SQL itp.). Twoja weryfikacja musi odbywać się gdzieś pod twoją wyłączną kontrolą, tj. Na serwerze.

2) Wielu użytkowników wyłącza Javascript lub używa przeglądarki, która może go nieprawidłowo zaimplementować. Jako rząd musimy wspierać wszystkich, nawet jeśli używają naprawdę NAPRAWDĘ starego sprzętu. HTML działa wszędzie; JavaScript, nie tak bardzo. Nie używając Javascript na twoich stronach internetowych, dajesz im naprawdę mały ślad na komputerze klienckim, zużywając niewiele zasobów. Maksymalizuje to liczbę osób, które mogą uzyskać dostęp do twoich treści. Z tego samego powodu nie powinieneś być zbyt szalony w swoim CSS. Uprość to, utrzymuj w czystości i pozwól małym starszym kobietom zobaczyć twoją stronę, nawet jeśli ich komputer został zakupiony w 1999 roku (nawiasem mówiąc, otrzymujemy telefony od pomocy technicznej od takich osób).

3) JavaScript, który jest narzędziem preferowanym przez „programistów”, a nie programistów po stronie serwera, wydaje się być dość brzydki. A projektanci (którym zwykle są twórcy stron internetowych, jeśli chcesz być szczery) nie mają problemu z pobieraniem „skryptów” z przypadkowych miejsc w sieci. Mówią takie rzeczy, jak „po co wymyślać koło?” i „Nie wymyślono tutaj”. Zamiast pisać własny kod, często po prostu wychodzą i biorą coś z innej strony, myśląc, że jeśli jest w Internecie, jest to uczciwa gra. Są z tym dwa problemy: A) mogą przypadkowo opublikować złośliwy kod JavaScript, który zajmuje trochę czasu, a B) mogą naruszyć czyjeś prawa autorskie i doprowadzić cię do pozwu. Obie sytuacje należy unikać.

OGÓLNIE JavaScript jest złym pomysłem. ŻADNY kod po stronie klienta jest złym pomysłem. Strona klienta powinna zawierać tylko język znaczników i CSS; niech po stronie serwera poradzi sobie z ciężkim podnoszeniem.

Phil
źródło
2

To zależy.

Chociaż można oczekiwać, że klienckie programy klienckie będą w znaczący sposób obsługiwać i uruchamiać skrypt javascript, nie wszystkie aplikacje klienckie są graficznymi przeglądarkami komputerowymi i musisz zdecydować, czy chcesz je obsłużyć.

Przykłady obejmują:

  • wyszukiwarki (Google uruchamia trochę javascript, ale na pewno nie wszystkie, a jeśli używasz javascript do nawigacji, roboty mogą nie znaleźć całej twojej zawartości)
  • agregatory i skrobaki
  • przeglądarki tekstowe (choć niewiele osób z nich korzysta)
  • czytniki ekranu i inne pomoce do czytania
  • (niektóre) przeglądarki mobilne

Moja ogólna zasada jest taka, że ​​jeśli jest to aplikacja internetowa dla zwykłych użytkowników (wewnętrzna, społeczność, tego typu rzeczy), to poleganie na javascript jest w porządku, ale jeśli chcesz być publicznie dostępny i możliwy do znalezienia, to przynajmniej najważniejsze funkcjonalność powinna działać bezbłędnie bez javascript, i powinieneś zawodzić z wdziękiem, gdy jej potrzebujesz, zamiast wykazywać „niezdefiniowane” zachowanie.

tdammers
źródło
2

Staromodne podejście jest całkowicie przestarzałe. Na przykład zrobiłem usunięcie ajaxowe dla moderatora na jednej ze stron, a on jest po prostu szczęśliwy z powodu oczywistego wzrostu prędkości.

Oczywiście programista może zrobić dwie wersje zarówno dla użytkowników JS, jak i nie-JS, ale w większości przypadków jest to wyjątkowo kosztowne i nie jest warte 1-2% odbiorców witryny (oczywiście jeśli nie jesteś Google).

Więc moja odpowiedź brzmiałaby NIE - JavaScript jest odpowiedzią na wiele pytań związanych z wrażeniami użytkowników, dlaczego nie powinienem jej używać?

użytkownik1065145
źródło
1

Z mojego doświadczenia wynika, że ​​firmy wyłączały JavaScript według zasad. Ale ten czas już minął. Obecnie zbudowałem kilka dużych aplikacji intranetowych i aplikacji internetowych dla większych globalnych firm. We wszystkich aplikacjach użycie JavaScript i JQuery było częścią rzeczy, których oczekuje klient.

Budowanie aplikacji dla klientów to już nie tylko szybkość i bezpieczeństwo. Klient chce skupić się na użyteczności i wykorzystaniu technologii AJAX. Bez użycia JavaScript nie byłoby tak dobrze. PostBacks cały czas dla niektórych bardzo małych zadań, takich jak obliczenia lub coś takiego, dla większości firm nie jest opcją.

Kiedy myślimy o obecnych sytuacjach w większych firmach, pojawia się kolejny wskaźnik, dlaczego JavaScript jest obecnie obowiązkowy. Spójrz na systemy CMS, które obecnie działają w biznesie. Większość z nich korzysta z Microsoft SharePoint lub Adobe CQ, niektóre z nich Drupal lub jakikolwiek inny i tak dalej. Wszystkie te systemy korzystają z JavaScript. Bez javascript większość aplikacji nie działałaby zgodnie z oczekiwaniami użytkownika.

Smokefoot
źródło
0

W minionych czasach JavaScript był wykorzystywany i nadużywany, a skrypty były (uważane za) pełne luk w zabezpieczeniach i źródłem złośliwego oprogramowania.

Wiele sieci korporacyjnych zareagowało wyłączeniem JS, zasadą, która (słusznie lub błędnie) nadal istnieje w wielu organizacjach do dziś.

Po prostu sugeruję, że żadna strona nie powinna polegać na JS

Andrzej
źródło
3
Myślę, że ta opcja jest całkowicie nieaktualna. Większość firm korzysta z SharePoint lub CQ do rozwiązań intranetowych. Oba systemy w rzeczywistości polegają na JS.
Smokefoot
Odrzucam absolutnie, że „większość firm” używa Sharepoint ... i nawet dla tych firm, które zezwalają JS wewnętrznie, ustawienia Intranetu mogą różnić się od zewnętrznych.
Andrew
0

Jak wyjaśnia większość odpowiedzi tutaj, używanie javascriptnie szkodzi. Jeśli chcesz zapisać kodowanie i niechlujnie wyglądający kod źródłowy, spróbuj coffee-scriptzaoszczędzić wiele czasu na pisaniu javascript.

http://coffeescript.org/

mithilatw
źródło