@kuba Wydaje mi się, że lepszym argumentem przeciw wysyłaniu strony, która się wyświetli bez JSa, jest "i tak chcemy dynamicznie aktualizować tę stronę, więc nie twórzmy dwóch metod tłumaczenia zawartości na HTML".
Oczywiście można odświeżać kawałki strony poprzez dociąganie ich w postaci HTMLa, ale nie wiem jak to łatwo zrobić bez np. resetowania pól tekstowych formularzy, które się na nich znajdują. Znasz może bibliotekę JSową (albo zupełnie inną metodę takiego odświeżania), która by robiła to w sposób unikający tych problemów?
Jeśli ta strona zawiera informacje, które zmieniają się w czasie rzeczywistym (wiadomości od innych w czymś chato-podobnym, aktualne wartości z czujników w stacji meteo, ...). Również, jeśli strona składa się z wielu kawałków, których stan chcemy zachować gdy aktualizujemy inne (np. formularz, w którym jedno pole potrzebuje jakiegoś hierarchcznego wyboru lub ma wyszukiwarkę w bardzo długiej liście; albo mapa, która ma boczny panel z szczegółami dotyczącymi zaznaczonego na niej elementu oraz np. filtr do wybierania które rodzaje elementów będą widoczne).
Hotwire wygląda ciekawie. Dzięki! Przeglądnąłem dokumentację i brakuje mi w nim dwu rzeczy. Ciekaw jestem, czy (a) ich nie ma (b) zbyt pobieżnie czytałem dokumentację, czy może (c) chciałbym tego używać w bardzo dziwny sposób.
Po pierwsze, niezależnie od tego, którego mechanizmu przeładowywania używam (wyjąwszy Streams), muszę sam zdecydować, który kawałek strony jest przeładowywany. Jak już jest przeładowywany, to wszystkie np. wypełnione pola formularza tam są czyszczone. Nie mogę więc zbytnio wprost przenieść czegoś zaprojektowanego pod React; muszę zawsze mieć jakiś spójny kawałek DOMa, który jest "odświeżany". Czy to jest coś z czym należy po prostu żyć, czy jest jakiś sposób na dostanie podobnego półmagicznego zachowania jak to, które daje np. React?
W Hotwire Streams bardzo nie wiem, jak radzić sobie (albo nawet zauważyć) zerwane połączenie po WebSocketach (lub SSE). Najchętniej miałbym jakiś mechanizm, w którym wiadomości z kolejnymi aktualizacjami przesyłają jakiś tag, i tag z ostatniej odebranej wiadomości jest podawany przy próbie wznowienia połączenia. Czy tego powinno się używać jakoś zupełnie inaczej?
@robryk Co do przeładowania formularza - po pierwsze trzeba go napisać tak, aby działał bez JS-a. A więc przeładowanie formularza może polegać na wysłaniu wszystkich danych na serwer, aby ten zwrócił ten sam formularz, wpisując do niego wartości pól, które otrzymał w body POST-a (w Hotwire osiągamy to za pomocą statusu HTTP 422)
Nie korzystałem jeszcze ze Streams, więc nie jestem w stanie odpowiedzieć. Ale może na https://discuss.hotwire.dev/ ktoś będzie wiedział :D