Kann man mit javascript und sqlite eine Handy-App schreiben?
Welche Möglichkeiten gibt es? Es sollen möglichst keine oder wenig zusätzliche Bibliotheken oder sonstige Software zum Laufenlassen der App nötig sein.
Die App soll aus einer lokalen (keine Internetverbindung) Sqlite-DB lesen und Daten auch in der DB speichern können.
Gut wäre, wenn man das einfach im Browser aufrufen könnte.
Welche Möglichkeiten gibt es dafür und was ist dafür nötig?
3 Antworten
Naja, du willst also eine webapp, verstehe ich das richtig?
Nun, wenn das offline laufen soll usw. nennt man das progressive web app, pwa.
Lokale datenbank ist möglich, das nennt sich "web sql", sqlite kannst du vom Browser aus nicht nutzen. Eine webapp ist in der Sandbox vom Browser, kann also nicht auf Systemdateien zugreifen.
Danke nochmal. Deine Antwort und die Kommentare von Dir haben mir wirklich geholfen. :)
Danke. Serverseitig habe ich bisher PHP verwendet. Ich brauche möglichst etwas, das mir (mit nicht zu viel Aufwand ;) ) ermöglicht, Daten lokal zu speichern, wenn keine Internetverbindung vorhanden ist oder diese zu langsam ist.
Gut, ich werde mal unter lightweight suchen.
klar geht das, wenn du noch HTML für die Gestaltung nimmst, dann hast du eine sogenannte Webapp (danke jort93)
und bezüglich der zusätzlichen Sachen... alle Javascript-Bibliotheken sind am Ende in reinem Javascript geschrieben.
ob und welche Teile du verwendest, steht dir frei
Ne, mobile App nennt man das nicht. Webapp heißt das.
Mobile App heißt einfach "Handy App".
Html ist natürlich kein Problem.
Wie sieht das ganze dann praktisch aus? Variable = new sqliteDB() oder so ähnlich? Sqlite ist ja auf dem Handy wohl installiert, aber wie nutzt man das in dem Zusammenhang?
localstorage hat wohl den besten support, das unterstützt eigentlich jeder webbrowser seit 2010.
WebSQL support haben einige browser schon rausgekickt.
Und IndexedDB support kommt so langsam, einige browser haben ein paar Probleme damit.
Aber localstorage ist ein ganz einfacher key-value store. Außerdem sehr limitiert in der größe... bei den meisten browsern 10mb pro domain. Das kann ein problem sein.
Ich setze bei Webapps nachwievor eher auf zentrale Datenbanken auf dem Server als auf eine Client-basierte Datenbank
Genau das habe ich bisher auch gemacht - wobei ich in Summe eine einzige Web-Anwendung programmiert habe ;)
Aber nun kam die Anforderung (von meiner Tochter), dass sie das nutzen will, wenn sie unterwegs ist und keine Internet verfügbar (bzw. ihr Datenvolumen aufgebraucht) ist. In dem Moment nutzt ihr die App nämlich nichts mehr, da sie weder auf gespeicherte Daten zugreifen, geschweige denn sie verändern kann.
Die frage ist ob du eine offline-first oder online-first web app machen willst.
Willst du das sie primär online ist, aber offline auch teilweise funktioniert, oder willst du das sie primär offline ist, aber auch einige online funktionen anbietet.
Also, ist die grundsätzliche annahme dass der nutzer internet hat, oder ist die grundsätzliche annahme dass der nutzer kein internet hat.
Das ist eine sehr wichtige unterscheidung.
Ja, in erster Linie soll sie online verwendet werden. Aber manchmal hat man kein Internet oder Datenvolumen, so dass man beispielsweise erst abends zu Hause wieder Internet hat.
Für den Fall, dass temporär (ein paar Stunden?) kein Internet da ist, soll die Anwendung wenigstens in gewissen Teilen weiter genutzt werden können.
Es sollen also auch Daten gespeichert werden können und wenn das Internet wieder verfügbar ist, sollen die Daten mit den Daten auf dem Server abgeglichen werden.
z.B. habe ich auf meinem smartphone ein app um verschiedene stahlsorten zu vergleichen.
Die funktioniert erstmal offline komplett, aber ich kann die datenbank mit einer online datenbank abgleichen. Das wäre offline first, weil ich sie normalerweise komplett offline nutze.
Online first ist eher eine traditionelle web app, wobei ich dann an einigen stellen caching einsetze damit die website weiter funktioniert. Aber ich habe dann keine vollständige funktionalität.
Kommt halt drauf an was das für eine art von anwendung ist, was da sinnvoll ist.
Macht jetzt z.B. wenig sinn gutefrage.net als offline first anwendung zu bauen.
Macht jetzt z.B. wenig sinn gutefrage.net als offline first anwendung zu bauen.
Ja, da hast Du wohl recht :)
Für mich wären theoretisch beide Varianten denkbar. Allerdings sollen User auch von den Änderungen/Erweiterungen der Daten anderer User profitieren. Dieser Gedanke wird besser unterstützt, wenn man immer wieder online ist, weil dann auch entsprechende Daten für andere nutzbar gemacht werden können.
Mache ich eine offline-first, dann lädt das ggf dazu ein, jeweils das eigene Süppchen zu kochen und ein Austausch der Daten wird zwar nicht prinzipiell verhindert, aber die Anreize für den Einzelnen sind geringer, online zu gehen und die Daten zu teilen.
Bei online-first hat der einzelne User über die Offline-Funktionalität weitere Funktionen oder Vorteile, wenn er online geht. Da ist die Motivation höher, online zu gehen.
wenn du spezifisch nh handyapp möchtest kannst du dir auch apache cordova anschauen
Weißt Du den einen oder anderen guten Link, der mich da weiterbringen kann?