@Wibowit:
W aplikacji webowej można zjeść ciastko i mieć ciastko, tyle że będzie to kosztowniejsze i będzie wymagało zatrudnienia lepszych i/lub bardziej wyspecjalizowanych koderów.
Są techniki programowania front-endowego, tj. kodu po stronie klienta, które pozwalają na swobodne użycie Ajaxa, ale bez poświęcania dostępności (np. dla robotów wyszukiwarek). Nie jest to nic nowego; w książce "Kuloodporny Ajax", wydanej na początku 2008 roku, Jeremy Keith opisuje technikę zwaną Hijax. Prosty back-end implementuje tam w PHP, ale język po stronie serwera nie ma znaczenia.
W Hijaxie stronę pisze się tak, żeby działała nawet bez JavaScriptu po stronie klienta. JavaScript, napisany zgodnie z zasadą unobtrusive JavaScript, przygotowany ręcznie i w całości umieszczony w zewnętrznych plikach, skanuje się drzewo dokumentu (DOM) i rozszerza je wedle własnego uznania o dodatkowe dynamiczne elementy i zachowanie. W tym o możliwość wysłania żądań ajaxowych.
Back-end musi być napisany mocno modułowo. Np. konkretna podstrona może się składać z drzewa komponentów. Normalne linki do podstron prowadzą zawsze do korzenia. Gdy wysyłasz GET do korzenia, dostajesz pełny dokument HTML ze wszystkimi podkomponentami. Ale możesz żądać też konkretnego komponentu -- wtedy serwer generuje i zwraca tylko kodem tego komponentu. Takie żądania wysyła właśnie JavaScript.
Opcjonalnie, zawsze można rozpoznawać żądania ajaxowe po tym, że mają parametr ajax=true
, który sugeruje, by nie odpowiadać pełnym dokumentem HTML, a jedynie jego fragmentem (lub JSON-em -- możliwych rozwiązań jest wiele).
Przeglądając DOM, JavaScript może pobrać atrybuty href
z linków, które bez JavaScriptu są normalnymi, działającymi linkami. JavaScript podpina się pod zdarzenia click
, dodaje ew. jakieś rzeczy typu WAI-ARIA (np. role=button) i przerabia zachowanie linków tak, by kliknięcie powodowało czy to wykonanie akcji po stronie samej przeglądarki, czy to wysłanie żądania ajaxowego na serwer.
W takim podejściu jednak JavaScript jest raczej pisany z palca (choć może i są do tego jakieś frameworki -- nie wiem na ile skuteczne). I tutaj, gdy zabiera się do tego Javowiec nie znający JavaScriptu, najprawdopodobniej się osra na różowo i jeszcze wku...rzy, bo JavaScript z Javą ma tyle wspólnego, co kotara z kotem. Choć twórcy JS-a próbowali udawać, że jest inaczej (nie wyszło im). Dlatego przeważnie do takich projektów zatrudnia się również dedykowanych JavaScriptowców.
Jak powiedziałeś: w intranecie można przeważnie olać takie podejście i po prostu wymagać po chamsku obsługi JS-a.