2011-05-27 8 views
5

Byłem bardzo skoncentrowany na javascript i poprawieniu wydajności mojej witryny. Jedną rzeczą, którą często robię, jest dynamiczne tworzenie elementów i dostęp do tych elementów za pomocą identyfikatorów.Idealna liczba identyfikatorów w dokumencie domowym lub html

Może możesz mi pomóc z kilkoma pytaniami.

  1. Jakie są główne zalety, dzięki którym każdy interesujący węzeł w dokumencie ma unikalny identyfikator?

  2. Jaka jest idealna liczba identyfikatorów w dokumencie?

  3. Czy istnieje maksymalna liczba identyfikatorów dla dokumentu?

  4. Jeśli chodzi o wydajność, czy otrzymanie elementu przez klasę css jest wolniejsze niż uzyskiwanie go po identyfikatorze?

Dziękuję wam za odpowiedzi. Jeśli masz dodatkowe uwagi na te pytania dotyczące domeny i dostępu do nich, byłoby to mile widziane.

Dziękuję.

+0

Jaki jest przykład "interesującego węzła"? :) –

+0

Awesomely, googling "ciekawe węzeł" zwraca stronę prawie całkowicie wypełnioną linkami "node.js"! Oto twoja odpowiedź :) –

Odpowiedz

6

Nie znam prawdziwej kary za używanie wartości "id" w sposób liberalny, poza tym, że irytacja IE, Safari i Chrome promuje wartości "id" na window. Jednak dobry kod JavaScript powinien być w stanie sobie z tym poradzić.

zauważyć, że:

  • "id" Wartości moszczu być przechowywane doskonale unikalna w dokumencie (strona). Nie można użyć tej samej wartości "id" dla więcej niż jednego elementu.
  • Wyszukiwanie według "id" jest znacznie szybsze niż wyszukiwanie w jakikolwiek inny sposób.

We współczesnych przeglądarkach wyszukiwania według klas mogą być dość szybkie, ale dzieje się tak tylko dlatego, że praca z nimi została zanurzona w niskopoziomowym kodzie obsługi przeglądarki (prawdopodobnie obsługiwanym przez bardziej rozbudowane wewnętrzne struktury danych, pamięci podręcznej itp.). Teraz nazwy klas są również bardzo ważne, zarówno dla prostego znacznika semantycznego, jak i dla kodu po stronie klienta, więc nie mówię, że klasy są złe lub cokolwiek. W rzeczywistości są chwile, kiedy robienie rzeczy wyłącznie przez "id" byłoby dość głupie, gdy używanie klas wprowadzałoby prostotę.

edit — już teraz (koniec 2013 roku) Firefox tworzy window właściwości elementów z "id" przypisuje zbyt. :(

+1

Wydaje mi się, że zauważam trend, szczególnie w przypadku nowych użytkowników jquery, do myślenia, że ​​każdy element musi mieć identyfikator, aby uzyskać do niego dostęp. Wiele przykładów w sieci jest słabych i zawsze wydaje się używać identyfikatorów, być może jako bezpieczna ochrona, więc ludzie nie uruchamiają javascriptu na elementach, których nie mieli na myśli. Czy tylko ja to zauważyłem? –

+0

@Wesley Murch dobrze, spędzając nawet krótki okres czasu tutaj na SO powinien dać jasno do zrozumienia, że ​​używanie JavaScriptu nie jest w ogóle uważane za "programowanie" przez ogromną liczbę ludzi. Pomyśl o wszystkich tych pytaniach, które zaczynają się: "Cześć, muszę coś zrobić dla mojego szefa, ale ja w ogóle nie znam JavaScriptu ..."? Często zastanawiam się, czy gdzieś w sieci istnieje strona, na której potencjalni twórcy mostów lub chirurdzy mogą zadawać takie pytania. – Pointy

+1

Jestem pewien, że w ich własnym świecie jest mnóstwo niedoświadczonych budowniczych mostów lub chirurgów, którzy mają błędne założenia lub nie rozumieją, co robią w dużym stopniu, ale jest trochę inaczej, ponieważ bariera wejścia jest znacznie wyższa . –

1
  1. Brak wady dając każdy element id, poza możliwością kolizji wartości (i co Pointy podzielił)
  2. To nie ma znaczenia, ile używasz
  3. Istnieje brak limitu liczby elementów z identyfikatorami może być na stronie (tak jak wyżej)
  4. Ponieważ identyfikatory są unikatowe, będą szybsze - ale utracisz przewagę nad klasami możliwości użycia wielu wartości lub zastosowania Ta sama wartość dla wielu elementów. Na przykład, jeśli chcesz używać javascript do wybierania wielu elementów według nazwy klasy zamiast podawania kilku identyfikatorów.W szczególności dla CSS wzrost prędkości będzie na ogół niezauważalny.

Elementy z identyfikatorami mają również inne zalety niezwiązane z javascriptem, takie jak bezpośrednie hiperłącze do elementu. Generalnie wolę unikać zaśmiecania znaczników identyfikatorami ids, chyba że uważam, że jest to naprawdę konieczne, na przykład: z dynamiczną zawartością z bazy danych, która musi wchodzić w interakcje z javascript.

Aby rozwiązać problemy związane z wydajnością, rzadko zdarza się, że nieefektywny selektor spowoduje znaczne problemy. Mimo że dobrze jest zoptymalizować, nie robiłbym niczego, aby każdy element, który z tego powodu wybrałeś, byłby możliwy. Większość problemów z wydajnością wynika z innych rzeczy, takich jak wolne zapytania do bazy danych podczas wykonywania żądań AJAX lub generowanie wielu animacji naraz lub ogólnie po prostu nieefektywne javascript.

Powiązane problemy