Nie jestem profesjonalnym programistą JavaScript ani Wasm, ale amatorsko, na własne potrzeby korzystam z tych technologii, co ciekawsze projekty wrzucam na Github.
Moje zdanie na temat JavaScript i WASM jest następujące: WebAssembly to jak najbardziej TAK, w języku C++ lub Rust. Co prawda, istnieją kompilatory do WASM do praktycznie każdego języka progrmowania, ale C++ i Rust to języki najbardziej "naturalne" do WASM
Nie przesadzałbym z tą naturalnością. Z całym szacunkiem do C++, robienie w tym języku UI jest raczej stratą czasu, chyba, że mowa o jakimś mocno skomplikowanym obliczeniowo komponencie (np. mapa). Zwyczajnie biblioteki UI do tego języka są takie sobie.
- Gdy mam jakąś aplikację desktopową w Java lub w C# i chciałbym mieć taką samą, ale "przeglądarkową", to łatwiej i szybciej jest przerobić na C++ i WASM niż na JavaScript ze względu na podobieństwo języków i łatwiejsze testowanie/debugowanie.
To oczywistość. Pytanie dlaczego robiąc aplikację przeglądarkową mam sięgać po JS'a?
@piotrpo: Argumentacja na temat dostępu i manipulacji DOM, moim zdaniem jak najbardziej ma sens. W aplikacjach desktopowych, mobilnych i konsolowych nie ma DOM, ale w zamian za to mają odpowiednio formularze (czyli de facto okna, ale zazwyczaj nazywane domyślnie form1, form2), widoki/aktywności, strumienie standardowe. W przypadku aplikacji "przeglądarkowej" nie ma formularzy, ale jedyny "kontakt z użytkownikiem", a więc odczytanie lub wypisanie odbywa się właśnie poprzez DOM.
To dlaczego nie użyć tych formularzy, okienek i komponentów wizualnych w przeglądarce?
@piotrpo: Co do armii frondendowców, to jak zwykle trzeba powiedzieć "to zależy". Jeżeli skrypt miałby wykonać tylko jakieś proste przetworzenie i wysłanie żądania do serwera, to goły JavaScript jest jak najbardziej na miejscu. A jeżeli chciałbyś zaimplementować jakąś grę (choćby taką jak "snake", "tetris", "minesweeper"), to logikę biznesową lepiej napisać w WASM, a pobieranie z formularza i wyświetlanie planszy w JavaScript.
Dlaczego mam wyświetlać cokolwiek używając JS'a? Co mi to daje? Uruchamiając jakiś projekt, dostępność ludzi na rynku, lub zasoby wiedzy w zespole są dość istotne.
A TypeScript? Jedynie wiem, że takie coś istnieje, ale nic "konkretnego" w tym nie tworzyłem. To miał być taki "lepszy JavaScript z typami".
TS to jedynie przyjemniejszy i mniej błędogenny język programowania.
Czy aby na pewno? Może jeśli chciałbyś oprzeć w 100% swoją aplikację na canvasie to tak, ale jeśli chcesz mieć jakieś kontrolki porozmieszczane w przestrzeni (jak w GTK, QT, nie wiem czym jeszcze) to zawsze jest jakaś hierarchia tych obiektów i tu DOM, moim zdaniem jest wygodniejszy niż cokolwiek czego używałem (choć przyznaję, że nie było tego dużo).
Na ekranie zwykle masz jakąś hierarchię obiektów. Okno aplikacji, jakiś kontener zarządzający rozmieszczeniem innych kontenerów, zarządzających rozmieszczeniem kontrolek w środku
Może to kwestia przyzwyczajenia i tego, że nie muszę się uczyć niczego nowego, ale ten model myślena o interfejsie mi pasuje. Dodatkowo, możliwość użycia inspektora w przeglądarce to spore ułatwienie. Natomiast odkąd zacząłem się bawić Vue, to już w ogóle nie mam ochoty myśleć o robieniu innych frontendów.
Ja rozumiem podejście, że "potrafię robić coś w X, więc nie będę się uczył Y, bo zanim osiągnę potrzebny poziom miną miesiące". W sumie podchodzę do tego w podobny sposób, tylko z innej strony. Mam sporo doświadczenia z aplikacjami mobilnymi (lata temu trzaskałem je taśmowo), mając wolną chwilę pobawiłem się Kotlin Compose, dla mnie całkiem wygodny framework. UI ma jakąś strukturę, powiedzmy, że DOM, ale nie jest to struktura obsługiwana przez przeglądarkę. Nie widzę w tym nic złego. Dlatego zastanawiam się jakie są argumenty przeciwko używaniu takiego podejścia. Oczywiście inne niż "nasi ojcowie i dziadowie robili inaczej".