Quelqu'un a-t-il créé des applications Web pouvant fonctionner totalement hors ligne? [fermé]

StackOverflow https://stackoverflow.com/questions/173378

  •  05-07-2019
  •  | 
  •  

Question

Je construis une application que les auteurs utiliseraient (espérons-le) pour les aider, euh .. créer des choses.

Pensez-y comme à un wiki mais seulement pour une personne, mais plus cool. Je souhaite le rendre aussi accessible que possible à mes masses (potentielles) adorantes, et je pense donc à en faire une application Web.

Cela n’est certainement pas nécessaire, il n’ya pas d’intégration avec d’autres sites, pas de fonctionnalités sociales. Toutefois, il s’agit de saisir des informations dans des formulaires. Par conséquent, pour une construction rapide, le Web serait probablement le meilleur.

Cependant, je ne veux pas vraiment l’héberger moi-même. Je ne pouvais pas me le permettre, mais c'est surtout que les personnes qui l'utilisent ne veulent peut-être pas que leurs données soient stockées ailleurs. Il s’agit d’informations privées sur ce qu’elles écrivent et je ne voudrais pas qu’elles me fassent confiance. C’est pourquoi je pense à en faire une application client lourd.

Et là est le problème: comment faire en sorte qu'une application qui se concentre principalement sur la saisie de données de formulaire soit facilement accessible aux utilisateurs potentiels (applications Web yay), mais également hors connexion, afin qu'ils sachent qu'ils contrôlent totalement leurs données (yay client lourd) applications).

Je vois les solutions suivantes:

  1. Créez-la en tant qu'application Java client lourd et exécutez une version simplifiée sur le réseau sous la forme d'une applet avec laquelle les utilisateurs peuvent jouer avant de télécharger l'intégralité de la chose.
  2. Créez-le en tant qu'application Flex pour les applications en ligne et Air pour les applications hors ligne (la même source utilise différents scripts de création).
  3. Créez-la en tant qu'application Web standard (HTML, JS, etc.), mais disposez d'une version téléchargeable permettant d'exécuter le site totalement sur leur ordinateur. Cela ne toucherait pas du tout le net.

En ignorant 1 et 2 (je les examine séparément), je pense que 3 impliquerait:

  • Empaquetage d'une installation contenant un minuscule serveur Web sur lequel se trouve mon code, prête à fonctionner.
  • Remappage de la base de données depuis quelque chose comme mySQL vers quelque chose comme SQLite.
  • Créer une sorte d'application convience qui a fonctionné sur le serveur et ouvert votre navigateur au bon emplacement, en utilisant éventuellement quelque chose comme Prism pour masquer tout ce qui a trait au broswer.

Alors, avez-vous déjà fait quelque chose comme ça auparavant?

Si oui, quels problèmes avez-vous rencontrés?

Enfin, existe-t-il une autre solution à laquelle je n'ai pas pensé? '

(aussi, Joyent Slingshot était une suggestion sur une autre question, mais c'est bien sûr. (dans laquelle je n'ai aucune expérience) et je suis sûr à 99% que cela ne fonctionne pas sous linux, donc ce n'est pas fait pour moi.)

Était-ce utile?

La solution

Il existe une option supplémentaire, qui consiste à utiliser les nouvelles fonctionnalités de l'application HTML5 hors connexion, à savoir les API de cache d'application, de bases de données côté client et de stockage local.

Actuellement, je pense que Safari est le seul navigateur d'expédition à prendre en charge l'un de ces logiciels. Je pense qu'il ne prend en charge que les bases de données côté client et les composants de stockage locaux. Les nightlies de Webkit prennent en charge toutes ces fonctionnalités, les nightlies de firefox en supportant un grand nombre (peut-être toutes maintenant?)

[Modifier (olliej): correction, Firefox 3 prend en charge le cache de l'application, mais hélas pas le DB côté client]

Autres conseils

Je pense que vous devriez regarder tiddlywiki pour vous inspirer.

C’est un wiki écrit en JavaScript entièrement autonome dans un seul fichier html. Vous le chargez dans votre navigateur sous forme d’URL fichier: ///, vous n’avez donc pas besoin d’un serveur.

Je l'utilise comme wiki personnel pour conserver des notes sur divers sujets.

Google Gears est utilisé pour proposer quelques-unes des applications Google en mode hors connexion (Google Reader, Gmail, Docs, etc.).

Qu'est-ce que Google Gears?

  

Gears est une extension de navigateur open source qui permet aux développeurs de créer   applications Web pouvant être exécutées hors ligne.   Gears propose trois fonctionnalités clés:

     
      
  • Un serveur local, pour mettre en cache et servir les ressources de l'application (HTML,   JavaScript, images, etc.) sans   besoin de contacter un serveur
  •   
  • Une base de données pour stocker et accéder aux données à partir du navigateur
  •   
  • Un pool de threads de travail, pour créer davantage d'applications Web   réactif
  •   
     

en effectuant des opérations coûteuses dans   l'arrière-plan

     

Gears est actuellement une version pour les développeurs à accès anticipé. Il n'est pas encore destiné à être utilisé par de vrais utilisateurs dans les applications de production.

     

Si vous êtes un développeur intéressé à utiliser Gears avec votre application, visitez la page de développement de Gears <. / a>.

     

Si vous souhaitez installer Gears sur votre ordinateur, visitez la page d'accueil de Gears. Veuillez noter cependant que Gears n’est pas encore destiné à un usage général.

Mais comme vous le lisez, cela n’en est qu’à ses débuts.

Nous utilisons quelque chose de similaire à votre troisième option pour tester nos sites Web localement. Fonctionne très bien.

Notre serveur Web packagé n’est pas assez petit pour répondre à vos besoins, mais nous n’avons pas essayé non plus de le garder petit. Si vous pouvez conditionner votre code de serveur Web dans un paquet suffisamment petit, je ne vois pas pourquoi cette approche ne fonctionnerait pas.

Je pense qu'AIR est la voie à suivre ..

Quelques indications pour la solution 3:

  • pour la partie graphique, ExtJS semble vraiment sympa.

  • pour la partie stockage, il existe une belle bibliothèque javascript qui résume différents systèmes de stockage: PersistJS .

Motifs pris en charge pour PersistJS:

  1. flash: stockage persistant de Flash 8
  2. gears: stockage persistant basé sur Google Gears.
  3. localstorage: stockage brouillon HTML5.
  4. whatwg_db: stockage de la base de données provisoire HTML5.
  5. globalstorage: stockage brouillon HTML5 (ancienne spécification).
  6. C'est-à-dire: les comportements des données utilisateur d'Internet Explorer.
  7. cookie: stockage persistant basé sur un cookie.

En outre, je pense que le logiciel moin moin wiki possède un version de bureau qui inclut son propre serveur Web. Cela est facile en python, puisque les piles sont incluses .

Vous voudrez peut-être vérifier comment ils le font?

Vous pouvez créer un client dédié en utilisant Webkit ou le backbone de Firefox. Certains jeux utilisent cette solution pour l'interface utilisateur par exemple.

Ou vous pourriez créer un petit serveur Web (j'ai un petit serveur Web à Lua que j'utilise à des fins similaires, juste quelques mégas avec des bibliothèques et tout le reste). Toutefois, si vous choisissez cette voie, le plus gros problème à prendre en compte est de ne pas vouloir que votre serveur Web dépende de variables environnementales, vous voulez qu'il soit totalement autonome. Vous devriez essayer d’isoler toutes les variables d’un fichier de configuration et d’en finir (style de paquet)

Vous pouvez également utiliser une application cliente Java pour afficher la page Web

.

Ou GoogleGears, mais c’est la même chose (ou presque) que Flex + Air. alors choisissez Flex + Air si c’est ce que vous connaissez

Vous n'avez pas spécifié de langue, mais j'ai consulté Karigell il y a quelques années. Il s’agit d’un framework Web Python, similaire à Django ou TurboGears, mais il n’a pas les frais généraux liés à ces frameworks.

D'après ce que je me suis amusé à faire, cela semble fonctionner pour vous. Il possède un serveur Web intégré (bien que vous puissiez utiliser à peu près tous les serveurs de votre choix) et toute base de données prise en charge par Python.

De plus, Python fonctionne bien avec Linux. :)

Si vous avez fait de l'application une application Web standard fortement dépendante des technologies côté client (à l'aide de DHTML et autres, par exemple, Google Gears pour stocker les données hors connexion comme déjà suggéré), une fois ouvert, il n'y a pas beaucoup d'interaction avec le serveur, vous pouvez probablement héberger la chose sur un compte d'hébergement partagé de base, ce qui ne coûterait pas très cher. C’est peut-être votre point de départ le plus simple, car vous n’auriez pas à vous soucier de tous les problèmes liés aux applications de bureau, tels que la compatibilité avec différents systèmes d’exploitation, la mise en place d’une installation, etc. / p>

Vous pouvez utiliser HTML, JS et tout autre élément dans Adobe AIR et vous disposez de nombreuses options pour enregistrer les données localement.

dans le monde java, vous pouvez utiliser une jetée pour un serveur, mettre en œuvre une application Web en utilisant votre infrastructure préférée et utiliser hsqldb comme base de données - elle réside entièrement dans votre conteneur (jetée). vous pouvez déployer l'application de prévisualisation sur le Web et télécharger la version hors ligne téléchargeable du package.

Il existe une distribution portable Apache / MySQL / PHP (à placer sur des clés USB):

http://portableapps.com/apps/development/xampp

Cela devrait être facilement adapté à vos besoins.

Vous pouvez également envisager d'utiliser XULRunner ou Prism

Il s’agit de la technologie opensource sur laquelle FireFox, Thunderbird et Joost reposent. Elle vous permet de développer des applications en XML et en javascript essentiellement sur la même riche API que celle de FireFox. Et bien sûr, ceci est également multi-plateforme, donc cela fonctionnerait sur Mac / Linux / Windows ...

Vérifiez ici pour plus d'informations: https://developer.mozilla.org/en/XULRunner

Je pensais faire quelque chose comme ça moi-même. Mon plan était d'écrire une application à l'aide de Django et d'écrire un script qui démarre le serveur de test de Django et ouvre le navigateur par défaut sur le port spécifié. Mon plan était d’utiliser SQLite ...

De plus, il serait bien de l’emballer dans un seul paquet, afin que les utilisateurs sans django installé puissent exécuter une application sans aucune dépendance ...

Comme vous l’avez indiqué plus haut, je vous suggère d’utiliser un système Wiki pour résoudre votre problème. Maintenant, la question pourrait être: Lequel?

Vous pouvez utiliser Trac , il est très simple et vous pouvez personnaliser son interface graphique. Toutefois, si vous préférez quelque chose de plus avancé, utilisez MoinMoin . Je l’utilise depuis des années et l’OMI est un très bon et fort système wiki.

Choisissez le wiki que vous choisirez, oubliez d’écrire votre application web à partir de rien. Selon votre question, la meilleure approche consiste à choisir quelque chose qui fonctionne et à le personnaliser / le modifier selon vos besoins.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top