Упаковка веб-приложения node.js как обычного настольного приложения [закрыто]


86

Я немного искал, но не могу найти для этого существующий инструмент.

У меня есть веб-сервер node.js, предназначенный для работы на вашем собственном компьютере, который делает за вас несколько интересных вещей. Было бы неплохо, если бы я мог дважды щелкнуть MySnazzyThing.appвместо установки nodejs и npm и запуска node mysnazzyapp.jsв командной строке.

.appИсполняемый файл будет намотать на сервере узла и открыть простое родное окно WebKit , который показал бы , что бы нормально быть , localhost:3000если я управлял в командной строке.

Это собственное приложение затем можно было бы распространять, скажем, через магазин приложений Mac. И бац, настольное приложение node.js.

Есть ли такой инструмент? Или есть какие-то технические причины, по которым это не сработает, как я себе представляю?

Ответы:


21

Вы можете сделать это с помощью AppJS: https://github.com/appjs/appjs


5
Страница-заставка для проекта AppJS теперь указывает на deskshell: github.com/sihorton/appjs-deskshell
yzorg 08

2
Как показывает ответ @ Tracker1, deskshell теперь является устаревшим проектом и не разрабатывался с декабря 2013 года
cmroanirgo

91

Вариант 1: электрон (он же атом-оболочка)

Это оболочка, которую использует редактор Atom на github. Он очень похож на node-webkit, хотя сначала запускает скрипт, и вам нужно создать представление / окно для пользователя. Есть и другие незначительные отличия, но на них стоит обратить внимание.


Вариант 2: NW.js ранее node-webkit

Суть в том, что он в основном расширяет движок JS, чтобы вы могли написать веб-приложение, поддерживающее расширенную объектную модель узла и модули ... затем вы упаковываете свои модули package.json start.html и файлы js в zip (с .nw extension) и запустите его с помощью nw (.exe) .. доступны сборки для windows, mac и linux.


Вариант 3: оболочка Carlo chrom (ium) из Node.

Это позволит вам запустить локально установленный Chrome в качестве оболочки, которая может подключаться к локально запущенному серверному приложению. Требуется местный хром, но он очень близок к тому, о чем просили.


Вариант 4: MacGapNode (только OSX)

MacGap с интеграцией узлов (похоже, устаревает)


В сторону: Услуги ...

Я не могу говорить об OSX как о .App, но вполне возможно создать фоновую установку службы в NodeJS и ссылку на «локальный» сайт на рабочем столе. В большинстве браузеров есть возможность не отображать все функции (в частности, я знаю, что это делает Firefox).

Я знаю, что ваш вопрос касается, в частности, OSX, но в Windows вы можете использовать NSSM для запуска чего-либо в качестве службы, и я использовал его для служб на основе NodeJS в Windows. Я думаю, что некоторые из других вариантов выше, в зависимости от ваших потребностей.


Удалено:

  • nexe - устаревший / неподдерживаемый
  • AppJS - заменен DeskShell
  • DeskShell - устаревший, сайт не в сети
  • node-webkit - переименован в NW.js
  • Проект XULRunner застопорился и сильно отстал.
  • Thrust ( Node Adapter ) - устарел / устарел

Этот ответ скопирован для нескольких вопросов, эти ссылки в основном предназначены для удобства обновления.


Для OSX и Linux решением также выглядит github.com/crcn/nexe .
robocat

Похоже, что среди них победителем стал node-webkit. Большая база разработчиков, хорошая документация, поддержанная Intel.
Дэн

gerty, спасибо ... Я обновил свой ответ, включив nexe, а также сделал node-webkit первым местом ... похоже, что appjs могут немного устареть.
Tracker1

Для OSX проверьте Macgap, чтобы вы могли отправить его в магазин приложений. Node webkit отказывают в использовании потенциально устаревшего API в будущем.
Майкл Дж. Калкинс

Хм, теперь есть идея. Запустите приложение как сервер в фоновом режиме, затем просто откройте для него окно браузера (например, как запустить браузер без оконной рамки или вкладок / адресной строки ). Таким образом, вы не получаете такого большого контроля над окном (например, браузер обрабатывает такие элементы меню, как файл, редактирование, просмотр и т. Д., А пользователь по-прежнему имеет доступ к таким вещам, как печать браузера, масштабирование и отображение страницы функции поиска), но в основном не требуется дополнительной структуры.
Ajedi32

8

Я предлагаю изучить Topcube, его цель - «дать разработчикам узлов способ иметь графический интерфейс рабочего стола для своих серверов узлов, используя HTML5 + CSS3 в качестве платформы графического интерфейса». Topcube на github .


1
Topcube, похоже, не поддерживается намного дольше
Shamoon

Да, предлагаю заглянуть в Titanium. Это не Node.js, а кросс-платформа на основе JS для разработки ПК и мобильных приложений. appcelerator.com/products/…
Брайан Хиз

Это титановое звено сгнило. Я полагаю, это то, о чем вы имеете в виду: docs.appcelerator.com/titanium/2.0/index.html Их непрозрачный, насыщенный маркетингом веб-сайт действительно мешает увидеть, что это за продукт, или позаботиться о нем.
Grumdrig

Примечание: компоненты рабочего стола Titanium больше не будут разрабатываться / поддерживаться.
Шри Кадимисетти

1
Развитие Titanium Desktop вознесшийся над новой группой разработчиков: tidesdk.org
Мотин

-1

В настоящее время существует множество способов добиться этого.

Явным победителем в области упаковки приложения node + html5 в настоящее время является Electron (используется Atom, VSCode, Slack, Discord и т. Д.).

Вы также можете использовать любой другой язык, упакованный как приложение (с помощью инструментов для этих языков / стека), и проверить установку узла, запустить «серверный» скрипт с помощью узла, затем запустить браузер по умолчанию (или какой-либо компонент веб-представления, с помощью некоторые другие средства), наконец, установите местоположение для службы узла. Это очень легкий и эффективный метод, однако он не так хорошо интегрирован с ОС, как такое решение, как Electron.

Основным конкурентом Electron здесь является NW.js. Насколько я могу судить, основная особенность NW.js, которой нет у Electron (пока), - это компиляция / обфускация. В то время как Electron упрощает автоматическое обновление.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.