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

Первоначально в качестве возможного направления для изучения упоминалось пакетное приложение Chrome. Однако может показаться, что приложения Chrome больше не актуальны для Windows и MacO.

Мы довольно часто используем React / Angular и Node.js, поэтому было бы разумно использовать эти технологии, если это возможно, поскольку это позволило бы людям с опытом работы в этой сфере (большая часть нашей компании) подключиться и работать. по различным аспектам приложения, не создавая при этом базы кода, которая сильно отличается от большинства других проектов.

Принимая во внимание эти моменты, Электрон казался хорошим кандидатом для проверки. На его основе построен настольный клиент Slack и VS Code, а также Atom (который, честно говоря, я прекратил использовать, так как он забирал всю мою оперативную память).

Мои мысли по поводу всего опыта на данный момент:

  • Приложения Electron по умолчанию включают Chromium, так что даже приложение hello world не будет маленьким.
  • Было очень легко установить и запустить приложение, в данном случае созданное для macOS. У меня не самый большой опыт работы с javascript, и у меня было настольное приложение, работающее на macOS, с сервером WebSocket, работающим в фоновом режиме, примерно через день.
  • Основным приложением было простое приложение Angular, и запустить его с Electron было не так уж сложно.
  • Чтобы запустить сервер WebSocket (процесс Node) при запуске приложения, потребовалось немного разобраться, но я понял, что это работает с дочерними процессами. Связь между основным и дочерним процессами осуществлялась посредством межпроцессного взаимодействия, хотя я думаю, что другим подходом может быть использование скрытого окна в Electron.
  • Electronic-packager действительно может объединить множество ненужных вещей, если у вас есть несколько файлов package.json в подкаталогах. Параметр `- ignore option` - ваш друг в том, что касается того, чтобы ваше упакованное приложение не было массовым.
  • Производительность казалась довольно быстрой, а объем памяти не был чрезмерным для варианта использования.
  • Будет интересно посмотреть, буду ли я так же положительно относиться к этому через неделю. Я еще не на 100% уверен, что использование этой технологии - правильный путь, но, учитывая то, чего мы хотим достичь, и технологии, которые мы используем в настоящее время, кажется, что она подходит для этого сценария. Я думаю, что Progressive Web Apps, вероятно, убьют Electron в будущем, и это меня немного беспокоит. Прямо сейчас мы не можем достичь того, чего хотим на рабочем столе, с помощью PWA для этого сценария, по крайней мере, насколько я могу судить. Думаю, мне нужно еще немного изучить.