Z podsumowania poprzedniego artykułu wiemy, że galeria może (ale nie musi) korzystać z wtyczek lub bibliotek. Dzisiaj rozwiniemy ten temat.
Co to jest „wtyczka” i czemu wtyczki są złe.
Ogólnie rzecz biorąc – wtyczka to obcy kod, który musisz zintegrować ze swoją stroną, aby uruchomić na niej jakąś funkcjonalność.
Czemu są złe:
- Obciążają Twoją stronę (kod wtyczki musi być załadowany do pamięci i w zależności od rozwiązania, albo jest ładowany jednokrotnie i instalowany na stałe w przeglądarce, albo jest ładowany przy każdym uruchomieniu strony).To pierwsze rozwiązanie wydaje się być lepsze, ale to nic innego jak właśnie instalowanie Flash-a, SilverLight-a, czy innych tego typu rozszerzeń.
Zazwyczaj użytkownik jest proszony o zgodę na taką instalację i tu mamy pierwszy problem – a co będzie jak się nie zgodzi? No cóż – zostanie puste okienko w miejscu naszej super galerii :-).A jak będzie chciał obejrzeć na różnych urządzeniach i różnych przeglądarkach? – no to będzie musiał zainstalować wtyczkę na wszystkich urządzeniach i wszystkich przeglądarkach. Co to oznacza? Dokładnie tyle, że producent wtyczki musi zapewnić prawidłową jej pracę na wszystkich urządzeniach, a nie jest to proste :-). Zaczynają się problemy ze zgodnością, z wersjami, itd. Zrobiłeś coś nowego – musisz poprosić, żeby użytkownik zaktualizował wtyczkę, bo stara może tej funkcjonalności nie obsługiwać.No to może zrezygnujmy z tego rozwiązania i ładujmy wtyczkę bezpośrednio ze stroną. De facto – ta działają wszystkie biblioteki typu jQuery i podobne.Na pewno ta droga rozwiązuje problem pytania użytkownika o zgodę :-). Po prostu nie pytamy go o to :-). Ale czy to jest fair? No cóż, ponieważ tak ładowane wtyczki mają jednak mniejszą swobodę działania, to możemy się z tym pogodzić, ale musimy mieć jednak świadomość, że do końca – to nie wiemy co w takiej wtyczce siedzi, więc bierzemy na siebie odpowiedzialność za ewentualne włamanie za pośrednictwem takiej biblioteki. Jeśli nasza strona to zwykły blog – to problem niewielki, ale jeśli to sklep internetowy i mamy przesył pieniędzy – to zamieszczanie na takiej stronie obcego kodu (pobieranego z zewnętrznego serwera) nie wydaje się dobrym rozwiązaniem.Ale załóżmy, że jest ok, wtyczka się załadowała i wszystko działa. Czy to rozwiązanie jest bez wad? Niestety wtyczka ma swoją objętość i musi zostać przesłana przed otwarciem strony. Co prawda dobrze zbudowany kod (i wtyczki i strony) zapewni, że przeglądarka zapamięta kod wtyczki i nie będzie jej pobierała wielokrotnie, ale pamiętaj „pierwsze wrażenie robi się tylko raz”.Więc jeśli Twoja strona ten pierwszy raz będzie się ładowała ślamazarnie - to właśnie takie wrażenie po niej pozostanie :-).
- Czy poza zwiększeniem objętości strony to już wszystkie problemy związane z wtyczkami/bibliotekami?
No cóż – może chciałbyś mieć też inne funkcjonalności na stronie (komentarze, czaty, inne sprawy).Jak to pogodzić – jeśli każda z tych funkcjonalności wymaga bibliotek – to pytanie, czy to są te same biblioteki?Jeśli nie – to mamy problem – bo nie dość, że musimy je wszystkie załadować, to jeszcze one nie mogą się ze sobą „gryźć”.Więc lepiej byłoby, żeby te wszystkie funkcjonalności jednak pracowały pod ta samą biblioteką, ale co z tego wynika? To – że liczba dostępnych rozwiązań nagle nam się mocno ogranicza. Jeśli to ma być rozwiązanie „darmowe”, to możemy liczyć na to, że jakiś inny użytkownik tej konkretnej biblioteki zrobił już taką funkcjonalność i ją udostępnił. Jeśli płatne – to związujemy się z producentem biblioteki i tego rozwiązania.
Jest jeszcze trzecie wyjście – nauczyć się biblioteki i napisać samodzielnie wymagany moduł :-).
Jeśli już wejdziesz w jakąś bibliotekę – to nawet jak pod inną pojawi się ciekawe rozwiązanie – Ty masz na swojej stronie już tę inną i bijesz się z myślami – zmieniać czy ciągnąć :-).
Po co nam te wszystkie kłopoty i problemy z wtyczkami? Czy nie lepiej po prostu użyć czegoś, co nie wymaga żadnych wtyczek/bibliotek?
Tak – jest to możliwe :-). Nasza galeria – to tylko 120KB kodu i ładuje się wprost do pamięci przeglądarki. Nie przechodzi przez żadne pośrednie biblioteki czy wtyczki. Po prostu tzw. „natywny” kod JavaScript.