Могу ли я использовать Electron без node.js?

Я новичок в Javascript, поэтому я хотел бы свести его к минимуму. Есть ли способ использовать Electron для связи со скриптом python без node.js? Мое приложение - это просто базовое приложение, которое принимает некоторый ввод от пользователей с html-страницы, и мне нужно, чтобы этот текстовый ввод обрабатывался в python и записывался в файл excel. Итак, в html мало что происходит, так что есть ли простой способ передать ввод в файл python? Я хочу использовать Electron, потому что мне нужно, чтобы этот html был моим пользовательским интерфейсом, а также мне нужно распространять это приложение.


person Community    schedule 18.05.2020    source источник
comment
без node.js означает, что он не установлен на вашем компьютере? Electron поставляется со своим собственным узлом, поэтому Node всегда будет запущен, когда вы запускаете электронное приложение, но вам не нужно устанавливать его на свой компьютер для запуска приложения. однако он понадобится вам на вашем компьютере для разработки электронных приложений.   -  person pushkin    schedule 18.05.2020
comment
если я пишу бэкенд на питоне. Потребуется ли пользователю, чтобы для этого был установлен python? Я имею в виду, действует ли установщик электронов как PyInstaller, где пользователю не требуется python для выполнения файла.   -  person    schedule 18.05.2020


Ответы (2)


Я предполагаю, что ответ «нет»: основной узел, выполняющий процесс, всегда будет там.

Приложение Electron состоит из основного процесса JavaScript и одного или нескольких процессов рендеринга JavaScript. Встроенной поддержки Python нет. И пользователю потребуется уже установленный Python. Таким образом, это звучит как плохое соответствие тому, что вам нужно.

ответы здесь могут быть полезны и покажут, как вызывать скрипт python. Я бегло просмотрел упомянутый там инструментарий flexx. Кажется, он работает с браузером пользователя, а не создает один исполняемый файл.

person Darren Cook    schedule 18.05.2020

Недавно я сделал это с помощью какого-то трюка, надеюсь, это поможет вам, и есть следующий шаг, которому я следовал:

  1. Создал автономный исполняемый файл python с помощью pyinstaller, и у исполняемого файла есть фляжный сервер, затем я поместил фляжный сервер в свое приложение node.
  2. Теперь нам нужно инициировать наш фляжный сервер и отправить ему запрос на обработку, я сделал это с помощью функции «execFile» в качестве дочернего процесса, для которого я создал функцию, и код был примерно таким:

    async function callFlask(){ var child = require('child_process').execFile; child('path_to_python_exe ', function(err, data) { if(err){ console.error(err); return; } }); }

  3. Теперь мы инициировали наш фляжный сервер, а затем отправим запрос с помощью запроса на выборку, например

    await callFlask().then( await fetch('host_ip_defined_in_flask'+encodeURIComponent('data'))

    1. Now further we can extend our then chain to get response from python if any and proceed further forexample -

    await callFlask().then( await fetch('host_ip_defined_in_flask'+encodeURIComponent('data')) .then(res => res.text()) .then(body => console.log(body)))

Здесь ваши выходные данные, которые возвращает python, будут напечатаны в консоли, после чего вы можете заставить ваше приложение узла вести себя по-разному в зависимости от возвращаемого им вывода.

  1. Также вы можете упаковать свое приложение с помощью доступных упаковщиков для электрона, таких как электронный упаковщик, это будет работать как шарм.

Также есть некоторые недостатки использования python, так как он увеличит размер вашего пакета, и процесс будет сложно убить от электрона после обработки, что увеличит нагрузку на хост-компьютер.

Я предполагаю, что объяснение создания сервера фляг не входит в рамки этого вопроса, вместо этого, если у вас возникнут какие-либо проблемы, дайте мне знать, я надеюсь, что это поможет...

person Prakalp varshney    schedule 29.05.2020
comment
На самом деле, я отказался от Electron и взял Eel. Угорь прост и идеально подходит для моего использования. Спасибо, в любом случае - person ; 29.05.2020