Empaquetage d'une application Web node.js en tant qu'application de bureau normale [fermé]


86

J'ai cherché un peu mais je ne trouve pas d'outil existant pour cela.

J'ai un serveur Web node.js conçu pour fonctionner sur votre propre ordinateur et qui fait des choses élégantes pour vous. Ce serait assez génial si je pouvais double-cliquer MySnazzyThing.appau lieu d'installer nodejs et npm et de fonctionner node mysnazzyapp.jssur la ligne de commande.

L' .appexécutable mettrait en file d'attente le serveur de nœuds et ouvrirait une simple fenêtre Webkit native qui montrerait ce qui serait normalement allumé localhost:3000si j'exécutais en ligne de commande.

Cette application native pourrait alors, par exemple, être distribuée via le mac App Store. Et bam, une application de bureau node.js.

Un tel outil existe-t-il? Ou y a-t-il des raisons techniques pour lesquelles cela ne fonctionnerait pas comme je l'imagine?

Réponses:



90

Option 1: électron (aka atom-shell)

C'est le shell qu'utilise l'éditeur Atom de github. C'est très similaire à node-webkit, bien qu'il exécute d'abord le script et que vous devez créer une vue / fenêtre pour l'utilisateur. Il existe d'autres différences mineures, mais cela vaut la peine d'être examiné.


Option 2: NW.js anciennement node-webkit

L'essentiel est qu'il étend fondamentalement le moteur JS pour que vous puissiez écrire une application Web prenant en charge le modèle d'objet étendu et les modules du nœud ... vous conditionnez ensuite vos modules package.json start.html et vos fichiers js dans un zip (avec le .nw) et exécutez-le avec nw (.exe) .. il existe des versions Windows, Mac et Linux disponibles.


Option 3: Coque Carlo chrome (ium) de Node.

Cela vous permettra de lancer Chrome installé localement en tant que shell pouvant se connecter à une application serveur exécutée localement. Il nécessite un chrome local, mais est très proche de ce qui a été demandé.


Option 4: MacGapNode (OSX uniquement)

MacGap avec intégration de nœud (semble devenir obsolète)


Mis à part: Services ...

Je ne peux pas parler pour OSX à ce sujet en tant que .App, mais il pourrait bien être possible de créer une installation de service en arrière-plan dans NodeJS et un lien vers un site "local" sur le bureau. La plupart des navigateurs ont la possibilité de ne pas afficher toutes les fonctionnalités (je sais que Firefox en particulier le fait).

Je sais que votre question concerne particulièrement OSX, mais dans Windows, vous pouvez utiliser NSSM pour exécuter n'importe quoi en tant que service, et je l'ai utilisé pour les services basés sur NodeJS dans Windows. Je pense que certaines des autres options ci-dessus sont meilleures en fonction de vos besoins.


Supprimé:


Cette réponse est copiée pour plusieurs questions, ces références sont principalement destinées à faciliter la mise à jour.


Pour OSX et Linux, github.com/crcn/nexe ressemble également à une solution.
robocat

Il semble que node-webkit soit le gagnant parmi ceux-ci. Large base de développeurs, bonne documentation, soutenue par Intel.
Dan

gerty, merci ... J'ai mis à jour ma réponse pour inclure nexe, ainsi que fait de node-webkit la première place ... on dirait que appjs peut devenir un peu obsolète.
Tracker1

Pour OSX, vérifiez Macgap afin que vous puissiez soumettre à l'App Store. Node webkit est refusé pour l'utilisation future d'une API potentiellement obsolète.
Michael J.Calkins

Hmm, maintenant il y a une idée. Exécutez l'application en tant que serveur en arrière-plan, puis ouvrez simplement une fenêtre de navigateur pour cela (par exemple, comment puis-je lancer un navigateur sans cadre de fenêtre ou onglets / barre d'adresse ). Vous n'obtenez pas autant de contrôle sur la fenêtre de cette façon (par exemple, le navigateur gère les éléments de menu tels que fichier, modifier, afficher, etc., et l'utilisateur a toujours accès à des éléments tels que l'impression, le zoom et l'encart du navigateur. fonctions de recherche), mais il n'y a fondamentalement aucun cadre supplémentaire requis.
Ajedi32

8

Je suggère de regarder dans Topcube, son objectif est de "Donner aux développeurs de nœuds un moyen d'avoir une interface graphique de bureau pour leurs serveurs de nœuds en utilisant HTML5 + CSS3 comme plate-forme graphique." Topcube sur github .


1
Topcube ne semble pas être pris en charge beaucoup plus longtemps
Shamoon

Oui, je suggère de regarder dans le titane. Ce n'est pas Node.js mais c'est basé sur JS et multiplateforme pour le développement d'applications PC et mobiles. appcelerator.com/products/…
Brian Heese

Ce lien en titane a pourri. Je suppose que celui-ci est ce à quoi vous faites référence: docs.appcelerator.com/titanium/2.0/index.html Leur site Web opaque, lourd de marketing, rend difficile de voir ce qu'est leur produit ou d'en prendre soin.
Grumdrig

Remarque: les composants de bureau Titanium ne seront plus développés / pris en charge.
Sri Kadimisetty

1
Le développement de Titanium Desktop a été repris par un nouveau groupe de développeurs: tidesdk.org
Motin

-1

Actuellement, il existe une multitude de moyens pour y parvenir.

Le gagnant incontestable dans le domaine de l'empaquetage d'un nœud + application html5 est actuellement Electron (utilisé par Atom, VSCode, Slack, Discord, etc.).

Vous pouvez également utiliser n'importe quelle autre langue fournie en tant qu'application (en utilisant des outils pour ces langues / piles), et vérifier l'installation d'un nœud, lancer le script "serveur" avec nœud, puis lancer le navigateur par défaut (ou un composant d'affichage Web, en d'autres moyens), définissez enfin l'emplacement du service de nœud. Il s'agit d'une méthode très légère et efficace, mais pas aussi bien intégrée au système d'exploitation qu'une solution comme Electron.

Le principal concurrent d'Electron ici est NW.js. Pour autant que je sache, la principale caractéristique de NW.js qu'Electron n'a pas (encore) est la compilation / obfuscation. Alors qu'Electron facilite les mises à jour automatiques.

https://electron.atom.io/ https://nwjs.io/

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.