Jestem zagorzałym zwolennikiem podejścia WORA (write once, run anywhere), ewentualnie WOCA, z tego powodu, jeżeli możliwości i moje umiejętności pozwalają, niektóre aplikacje tworzę z wykorzystaniem HTML i JS. Te bardziej udane umieszczam na swoim Githubie:
https://github.com/andrzejlisek/AudioSpectrum
https://github.com/andrzejlisek/Roulette
https://github.com/andrzejlisek/TriStateLogic
Zaleta jest taka, że jedną i tą samą aplikację mogę uruchomić na komputerze i na smartfonie. Aby uruchomić na smartfonie, to po prostu przerzucam plik HTML z towarzyszącymi do smartfona i uruchamiam go w przeglądarce.
Ta technologia jest dobra, ale ma pewne ograniczenia, jak:
- Brak możliwości zapisu lub odczytu pliku poprzez wskazanie ścieżki, np. zapamiętam w Local Storage nazwę pliku, i żeby aplikacja czytała te właśnie plik, doczytałem, że celowo nie ma takiej możliwości ze względów bezpieczeństwa.
- Brak możliwości pobrania danych lub wysterowania inną stroną HTML (Same-origin policy).
- Brak możliwości bardziej zaawansowanych działań, takich jak zrzut ekranu, wysłanie e-maila, połączenia sieciowe w ograniczonym zakresie itd.
- Można wymieniać więcej, ale to nie jest cel tego wątku
Sprawa jest taka, że niedawno spotkałem się z technologią aplikacji PWA i to mnie zainteresowało. Dla mnie to, czy aplikacja będzie funkcjonować samodzielnie, czy w przeglądarce, czy będzie w Google Play bądź AppStore to wszystko jedno. Na pierwszy rzut oka, aplikacja PWA to jest zapakowany HTML/Javascript w aplikację, która wygląda tak, jak zwykła aplikacja na komputerze lub smartfonie. Z drugiej strony, doczytałem że między innymi potrzebny jest serwer HTTPS, a więc musiałbym specjalnie uruchomić taki serwer, do tego jeszcze kilka pomniejszych wymagań.
W związku z powyższym, czy aplikacja PWA ma takie same możliwości jak HTML z JS, czy ma większe możliwości dostępu do urządzenia? na przykład, jak napisałem, w Javascript w przeglądarce nie ma możliwości odczytu pliku według wskazanej ścieżki, ale aplikacja PWA już miałaby taką możliwość. Czy w ogóle PWA daje coś więcej niż to, że aplikacja HTML/JS wygląda jak aplikacja natywna, a nie wewnątrz przeglądarki?
Czy da się wytworzyć i uruchomić PWA całkowicie offline, czyli bez udziału internetu i tym samym bez HTTPS?