Pakowanie aplikacji internetowej node.js jako zwykłej aplikacji komputerowej [zamknięte]

86

Szukałem trochę, ale nie mogę znaleźć istniejącego narzędzia do tego.

Mam serwer sieciowy node.js, który został zaprojektowany do działania na Twoim komputerze, który robi za Ciebie niesamowite rzeczy. Byłoby MySnazzyThing.appwspaniale, gdybym mógł kliknąć dwukrotnie zamiast instalować nodejs i npm i uruchamiać je node mysnazzyapp.jsw wierszu poleceń.

Plik .appwykonywalny zbuforowałby serwer węzła i otworzył proste natywne okno zestawu webkit, które pokazywałoby, co normalnie byłoby włączone, localhost:3000gdybym był uruchomiony w wierszu poleceń.

Ta natywna aplikacja mogłaby być następnie, powiedzmy, dystrybuowana za pośrednictwem sklepu z aplikacjami na komputery Mac. I bam, aplikacja komputerowa node.js.

Czy istnieje takie narzędzie? A może są jakieś techniczne powody, dla których to nie zadziała, tak jak to sobie wyobrażam?

Alex Wayne
źródło

Odpowiedzi:

91

Opcja 1: elektron (inaczej powłoka atomu)

To jest powłoka używana przez edytor Atom na githubie. Jest bardzo podobny do node-webkit, chociaż najpierw uruchomi skrypt i musisz utworzyć widok / okno dla użytkownika. Jest kilka innych drobnych różnic, ale warto się im przyjrzeć.


Opcja 2: NW.js dawniej node-webkit

Istota jest taka, że ​​w zasadzie rozszerza on silnik JS, abyś mógł napisać aplikację internetową obsługującą rozszerzony model obiektowy i moduły node ... następnie pakujesz moduły i pliki package.json start.html i js do pliku zip (z .nw) i uruchom go za pomocą nw (.exe). Dostępne są wersje dla systemów Windows, Mac i Linux.


Opcja 3: powłoka Carlo chrom (ium) z Node.

Umożliwi to uruchomienie lokalnie zainstalowanej przeglądarki Chrome jako powłoki, która może łączyć się z lokalnie działającą aplikacją serwera. Wymaga lokalnego chromu, ale jest bardzo zbliżony do tego, o co proszono.


Opcja 4: MacGapNode (tylko OSX)

MacGap z integracją Node (wydaje się być nieaktualny)


Poza tym: Usługi ...

Nie mogę mówić w imieniu OSX jako .App, ale byłoby możliwe utworzenie instalacji usługi w tle w NodeJS i łącza do „lokalnej” witryny na pulpicie. Większość przeglądarek ma opcję, aby nie wyświetlać wszystkich funkcji (wiem, że w szczególności robi to Firefox).

Wiem, że twoje pytanie dotyczy w szczególności OSX, ale w Windows możesz użyć NSSM do uruchomienia czegokolwiek jako usługi, a ja używałem go do usług opartych na NodeJS w Windows. Myślę, że niektóre z powyższych opcji są lepsze w zależności od twoich potrzeb.


Oddalony:


Ta odpowiedź jest kopiowana dla wielu pytań, te odniesienia są głównie dla wygody aktualizacji.

Tracker1
źródło
Dla OSX i Linuksa github.com/crcn/nexe również wygląda na rozwiązanie.
robocat
Wygląda na to, że wśród nich zwycięzcą jest node-webkit. Duża baza programistów, dobra dokumentacja, wspierana przez firmę Intel.
Dan
gerty, dzięki ... Zaktualizowałem moją odpowiedź, dodając nexe, a także ustawiłem node-webkit na pierwszym miejscu ... wygląda na to, że appjs może być trochę przestarzały.
Tracker1
W przypadku płatności w systemie OSX Macgap, więc możesz przesłać do sklepu z aplikacjami. Pakiet Node Webkit nie może używać potencjalnie przestarzałego interfejsu API w przyszłości.
Michael J. Calkins,
Hmm, teraz jest pomysł. Uruchom aplikację jako serwer w tle, a następnie otwórz dla niej okno przeglądarki (np. Jak mogę uruchomić przeglądarkę bez ramki okiennej lub zakładek / paska adresu ). W ten sposób nie masz tak dużej kontroli nad oknem (np. Przeglądarka obsługuje elementy menu, takie jak plik, edycja, widok itp., A użytkownik nadal ma dostęp do takich rzeczy, jak drukowanie, powiększanie i wyświetlanie na stronie funkcje wyszukiwania), ale w zasadzie nie jest wymagana żadna dodatkowa struktura.
Ajedi32,
8

Proponuję przyjrzeć się Topcube, jego celem jest „Dać programistom węzłów sposób na posiadanie graficznego interfejsu użytkownika na ich serwerach węzłów przy użyciu HTML5 + CSS3 jako platformy GUI”. Topcube na github .

Brian Heese
źródło
1
Wydaje się, że Topcube nie jest już obsługiwany
Shamoon
Tak, proponuję zajrzeć do Titanium. To nie jest Node.js, ale oparty na JS i wieloplatformowy do tworzenia aplikacji na komputery PC i urządzenia mobilne. appcelerator.com/products/…
Brian Heese
To tytanowe ogniwo zgniło. Przypuszczam, że to jest to, do czego się odnosisz : docs.appcelerator.com/titanium/2.0/index.html Ich nieprzejrzysta witryna internetowa z dużą ilością marketingu z pewnością utrudnia sprawdzenie, jaki jest ich produkt, lub o to chodzi.
Grumdrig
Uwaga: części pulpitu Titanium nie będą już rozwijane / obsługiwane.
Sri Kadimisetty
1
Rozwój Titanium Desktop został przejęty przez nową grupę programistów: tidesdk.org
Motin.
-1

Obecnie istnieje wiele sposobów, aby to osiągnąć.

Wyraźnym zwycięzcą w zakresie pakowania aplikacji node + html5 jest obecnie Electron (używany przez Atom, VSCode, Slack, Discord itp.).

Możesz również użyć dowolnego innego języka spakowanego jako aplikacja (używając narzędzi dla tych języków / stosów) i sprawdzić instalację węzła, uruchomić skrypt „serwerowy” z węzłem, a następnie uruchomić domyślną przeglądarkę (lub jakiś komponent widoku internetowego, w inny sposób), ostatecznie ustaw lokalizację usługi węzła. Jest to bardzo lekka i wydajna metoda, jednak nie tak dobrze zintegrowana z systemem operacyjnym, jak rozwiązanie takie jak Electron.

Głównym konkurentem Electron jest tutaj NW.js. O ile wiem, główną cechą NW.js, której Electron (jeszcze) nie jest, jest kompilacja / zaciemnianie. Podczas gdy Electron ułatwia automatyczne aktualizacje.

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

Devin McKeon
źródło