Autor wpisu: cojack, dodany: 03.02.2011 12:06, tagi: javascript
Już od dawna nurtował mnie mankament parsowania szablonów w php, trudności z jakimi człowiek się spotykał to niepotrzebne zużycie pamięci do przetworzenie danych w php, działanie na stringach itd. Fascynowała mnie sprawa by tym zajmowała się tylko przeglądarka, niech komputer użytkownika męczy się z wygenerowaniem szablonu. Tylko jak to zrobić? Długo nic nie mogłem na to wymyślić, ale zrobili to za mnie. ExtJS – jest to framework napisany w JavaScript będący częścią innych projektów firmy Sencha. Daje on nam wiele możliwości, począwszy od ingerencji w drzewo DOM, skończywszy na generowaniu UI naszej aplikacji.
Dlaczego nie lubię szablonów w PHP?
Bo są zbędne, nasze aplikacje mogą być o wiele szybsze, jeżeli będą przetwarzały tylko dane jakie do nich przesyłamy, a nie zajmowały się przetwarzaniem tony bajtów stringów który musi przechowywać odpowiednią długość czasu a później wypluć w eter. Przechowywanie stringów, operacje na nich są nie wydajne. Jeżeli tylko mogę to unikam takich sytuacji. Widać że mogę, bo dzięki ExtJS w PHP nie muszę parsować skomplikowanych templatek, obracać pętle w szablonach by wy-renderować tabele, menu, listę.
Podejście alternatywne do szablonów
Jest ogrom systemów szablonów które się ścigają w czasie, który szybciej się skompiluje, sparsuje itd. Jakby nie można było najprościej w świecie wklepać php z html w jakiejś templatce. Znajdź mi coś szybszego. Nie ważne, kolejnym krokiem -> xlst też ciekawe, dzięki tej technologii część mechanizmu jest po stronie serwera, a reszta po stronie przeglądarki, dane przechowujemy w XML, szablony w XSL, i dzieje się jakaś magia. Mimo wszystko to dalej nie jest rozwiązanie o które mi chodziło. Pomyślcie sobie o tej kwestii jak aplikacji server desktop. Serwerze przetwarza tylko dane, i zwraca je do aplikacji desktop-owej która je musi przetworzyć w widok. No i o to chodzi. Jak najmniej operacji na serwerze, żeby czas oczekiwania na odpowiedź był jak najkrótszy a informowanie użytkownika o postępie zadania na bieżąco jest najlepszym rozwiązaniem. Najbardziej co wkurza ludzi podczas pracy z oprogramowaniem jest brak informacji co się w danej chwili dzieje. Tzn użytkownik klika w link, leci zapytanie ajax, nie widzi tego, to klika raz jeszcze no bo skąd ma wiedzieć że coś się wydarzyło. Mamy techniczną możliwość informowania użytkownika co w danej chwili aplikacja wykonuje:
* Zapytanie zostało wysłane do serwera * Serwer przetwarza dane * Serwer odpowiedział * Przetwarzanie danych od serwera * I Na końcu wyświetlenie tych danych
4 proste kroki, bo piąty jest już widoczny, pozwoli użytkownikowi nie popadać w frustrację i będzie zadowolony z działania aplikacji.
Utworzenie takiego interfejsu w HTML który jest nie dynamiczny, dostęp do niego mamy tylko z poziomu DOM, bez żadnych obiektów do elementów, byłby mało wygodny. Za to wy-renderujmy sobie HTML za pomocą JS, co to zmienia? Bardzo wiele, chociażby dostęp do komponentu wygenerowanego jest z miejsca, każdy element listy, tabelki jest obiektem. Dodatkowo to moc przeliczeniowa komputera użytkownika a nie maszyny się liczy, także jak chce narzekać, proszę bardzo ale na swoją maszynę a nie na naszą aplikację
ExtJS nowa perspektywa
Produkt firmy Sencha jest pewnym rozwiązaniem moich problemów. Dlaczego pewnym? Ponieważ nie odważyłbym się zastosować go w frontendzie Otóż stosuje go tylko w backendzie. Dlaczego? Jakoś nie mam do niego jeszcze pełnego zaufania, poza tym styl-owanie tych wszystkich elementów jest trochę jak syzyfowa praca. Idzie jak krew z nosa. Inaczej, nie mam do tego siły. Ujednolicony sposób wyświetlania danych, komentarzy, błędów, interakcji na polecenia użytkownika, jest przyjemny dla oka inie zmusza użytkownika do ciągłego poznawania nowych rzeczy, tylko podświadomie będzie wiedział jak aplikacja się zachowa. Bez przeładowania, użytkownika nie męczymy ciągłym oczekiwaniem na przetworzenie kolejnych stosów bitów i wyświetlenie aplikacji całej od nowa po każdym requescie, w której została wykonana jakaś prosta akcja. Wszystko jest zaimplementowane po stronie przeglądarki w kodzie JavaScript.
Słów kilka na zakończenie
Niniejszy wpis, będzie rozpoczęciem cyklu wpisów o implementacji i mechanizmach ExtJS, z tym że dopiero od wydania ver. 4.0, która ma się ukazać końcem lutego. Perspektywa może być ciekawa, nie dla każdego może być użyteczna, gdyż logikę trzeba pisać niejako w dwóch miejscach. Ja sam używam, korzystam nałogowo w swoim FW, jestem zadowolony i działa dla mnie wyśmienicie, co prawda z początku miałem problemy z implementacją i strukturą oraz logiką ExtJS, ale przy pomocy googla udało się wszystko ładnie opanować.