Javascript dla niechętnych
Opublikowano: 01.12.2019
Ostatnia modyfikacja: 11.01.2025
Nie da się w dzisiejszych czasach robić w Pytongu i nie dotknąć się do Javascriptu. Jest to wszędzie i nawet przy największym wysiłku czasem nie da się tego ominąć. A jeszcze teraz namnożyło się tych famenwerków do frontendu, tak że nie da się obrócić żeby na jakiś nie wleźć. Nie mówiąc o politowaniu z jakim na człowieka patrzą bomble.

Pełen niechęci zacząłem poszukiwania sposobu na pożenienie tych dwóch światów, tzn Pythona z jakimś Javascriptem frontendowym. Z rosnącą niechęcią przedzierałem się przez kolejne tutoriale dotyczące Reacta, Angulara czy Vue i z coraz większym obrzydzeniem je odrzucałem. W końcu zebrałem moje oczekiwania co do docelowej architektury i wzorca aplikacji.
- żadnego webpacka i podobnych narzędzi, framework ma być osadzony w HTML
- żadnego transpilingu
- stronę wygeneruje Python i tam też będzie zrobiony routing
Nie było łatwo, ale w końcu znalazłem. Nazywa się to Preact i działa na tej samej zasadzie co React (oraz implementuje dużą część API), ale w połączeniu z HTM spełnia wszystkie wymagania, a więc da się go osadzić w kodzie HTML i nie ma potrzeby transpilowania żadnego dziwnego języka do Javascriptu. Wiąże się to z pewnymi ograniczeniami, ale walić IE, działa we współczesnych przeglądarkach.
Ilość czasu jaki musiałem poświęcić na znalezienie czegoś co działa w ten sposób i jednocześnie nie jest bolesne przekonuje mnie, że nie jest to często spotykany sposób użycia, dlatego w kilku artykułach spróbuję opisać to dokładniej.
- Prolog, czyli czego szukamy, co się nie nadaje a co tak
- Struktura aplikacji i przykładowa organizacja kodu
- Komponenty aplikacji w Preact
- Zusammen do kupy - Python, Preact, HTM
- Epilog i kilka przemyśleń dot. Javascriptu
Kod związany z tym wprowadzeniem jest dostępny na githubie. Najlepiej jest założyć, że jest to wersja rozwojowa. Jeżeli ktoś z czytelników ma jakieś uwagi to bardzo proszę się nie krygować i wskazać co można poprawić - sam się uczę tego wszystkiego.
Zapewne to nie koniec.