Basitkhan
@Basitkhan
full-stack developer, ux/ui designer

Кросс платформенное приложение, миф ли это?

Сегодня у меня возник некий спор о кроссплатформенности нашего приложения, у нас web приложение и у него есть оболочка для десктопа, и моя коллега очень настырно мне говорит, что этот electron создаёт одно приложение, которое можно установит как на Windows, так и на Mac Os.

Я понял слово "кроссплатформенность" на сайте электрона как, то что наше само приложение написанное на: node.js, react, html, css будут К-П, а интерпретатор (оболочка созданная electronom) будет на каждую ОС разной (ну их будет несколько), типа браузеры для разных ОС, которые будут открывать один и тот же сайт

Возможно я как то отстал от жизни, но по моему один установщик приложения под разные ОС это дичь (ну в принципе можно обнаруживать, какая ОС и в зависимости от этого давать нужные пакеты и директории для установки, но я ещё такого не видел)

Пожалуйста проясните ситуацию)
  • Вопрос задан
  • 673 просмотра
Решения вопроса 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Нет, electron создает три отдельных, хотя и функционально одинаковых приложения под каждую платформу. Кросс-платформенных экзешников не существует, насколько я знаю (ну если только FatELF -- контейнер с elf-ами под несколько платформ). Внутри везде один и тот же html/js/css, но завернуто это в разные бинарники в зависимости от платформы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
saboteur_kiev
@saboteur_kiev
build engineer
Electron is an open source library developed by GitHub for building cross-platform desktop applications with HTML, CSS, and JavaScript. Electron accomplishes this by combining Chromium and Node.js into a single runtime and apps can be packaged for Mac, Windows, and Linux.

То есть к вам приезжает nodejs + браузер Chromium и поверх этого - ваше приложение в одном исполняемом файле.
Как бы технически - они не врут, но..
Ответ написан
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Установщик, в привычном значении "инсталлятора" - это выполняемый файл, поэтому для каждой платформы он свой.
А электрон - это типа v8, который выполняет ваш node.js код и рендерит фронтенд. И этот v8, в который всё оборачивается, тоже компилируется отдельно для каждой платформы, на которой потом будет запущен.
Кросс-платформенное приложение - это один исходный код, который компилируется под разные ОС, а не один бинарный файл, который запускается на разных ОС. Такое в принципе невозможно.
Ответ написан
@nick3iro
есть компиляция(1), компиляция в байт-код(2) и интерпретация(3)
2 и 3 в принципе позволяют(иногда с мелкими доработками) создавать кросс-платформенное приложение если в запускаемой системе уже присутствует нужная виртуальная машина(2) или интерпретатор(3).
Для 1-го же существует кросс-компиляция позволяющая собирать программы под нужную платформу(архитектуру процессора и семейство ОС).
НО, сама виртуальная машина(2) или интерпретатор(3) изначально должны быть скомпилированы(1) под нужную платформу.

electron это по сути интерпретатор(3) ваших программ.
Поэтому ваша программа написанная на electron будет псевдо кросс-платформенная, так как она тянет за собой интерпретатор который должен быть скомпилирован под нужную платформу.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
от 40 000 до 60 000 руб.
Home Credit Bank Санкт-Петербург
от 85 000 до 100 000 руб.
от 130 000 до 180 000 руб.
22 окт. 2018, в 02:30
12000 руб./за проект
22 окт. 2018, в 02:01
10000 руб./за проект
21 окт. 2018, в 22:38
1200 руб./за проект