Как стать автором
Обновить

Комментарии 30

Я считаю, что Tauri может заменить не только Electron, но в перспективе и Flutter тоже.

Если говорить о Flutter то разница с первых строк:

"... . В памяти занимает на Win 11 200 Мб. Кто-то считает, что это много. Покажите меньше. .."

У Flutter вместе с движком демка собирается в 23Мб, в памяти занимает 30Мб.

Старая добрая JavaFX (OpenJFX) собранная через GraalVM в нативный exe получается 25 Мб, в памяти 28.

Добавить видео в обе эти вещи легко довесив 10-15 МБ обвязок над облегченным FFmpeg.

Не могу проверить. Ни на какой странице с демками Flutter я не нашёл готового EXE, а когда попробовал собрать сам - там что-то править в коде надо и т.д.

Ещё большой вопрос, как мерять. Task Manager и для Tauri показывает 3 мегабайта. Но извините, у меня там один массив больше.

Если действительно интересно результат двух команд в терминале, без открытия редактора:

flutter create . --org ru.sserjirk --project-name testnative --platforms windows

flutter build windows

Можете взять тут: https://disk.yandex.ru/d/eDCdcl-P4UTIHw

Спасибо, сравню на днях.

Я выложил демку, которая получается в этой статье. Пароль "habr"

На Flutter ничего править в коде не надо, даже не представляю как можно на такое выйти. Но это не важно. Важно что вы сравниваете несравнимое.

Flutter - чисто нативное приложение и рисует своими силами. Tauri чисто Web и рисует силами чужого браузера. Так что сравнивать надо когда во Flutter приложение вставлен Web View, и если при этом Flutter потребит меньше ресурсов, то он лучше. По ресурсам.

С другой стороны они при этом оба решают одну и ту же задачу - вывода пользовательского интерфейса. Для меня главный вопрос с Flutter это Dart - идея учить еще один узкоспециализированный язык который жестко привязан к одной-единственной технологии несколько смущает.

Про что б ещё написать? Два способа написать приложение Tauri на одном Расте без JS (но с HTML)? Или как в эту каракатицу встроить ещё и Питон?

Да, статься про написание на расте было бы замечательно. Еще может быть интересно преобразование существующего SPA-приложения. У меня даже идея появилась -- собрать https://ide.kaitai.io/devel/ в такое приложение. Но наверное там побольше работы, чем написание простых врапперов.

Что-нибудь табличное можете пожалуйста продемонстрировать? Насколько удобно будет работать с таблицей на голом расте или через js например, да и производительность хорошо видно на больших табличках

Tauri - это просто удобная обертка над Microsoft Edge WebView2 (если в Windows). Производительность такая же как в самом Edge, так что проверить легко в самом браузере.

А удобство работы с таблицами из Rust зависит от того, как вы реализуете взаимодействие Rust и JavaScript. Tauri дает удобный интерфейс для реализации этого взаимодействия, но функции пишете вы сами. Какие типы данных передаются и как обрабатываются на обоих концах - решаете вы сами в своем коде.

Можете хоть прямо из Rust строить HTML. А можете реализовать в JS функцию рисующую таблицу из массива данных переданного Rust, что более оптимально.

Оптимально как раз строить таблицу в Rust. Потому что можно передавать только те поля, которые видны. Но вот красиво прокручиваться с инерционной прокруткой она не будет.

Одно другому не мешает, опять же это вопрос реализации функций обмена данными между Rust и JavaScript. Если это просто статическая таблица, то отдавать HTML из Rust будет вполне удобно.

Но если это часть интерактивного пользовательского интерфейса или сама таблица интерактивна, то реализовать её проще и быстрее на JavaScript, обмениваясь с Rust только необходимыми данными.

Больше Rust интересней. Зачем тут еще Python не очень понятно - JS/TS допустим необходимое зло для написания интерфейса на веб и тут уже вырисовывается один фронт и на веб-мобилки-десктоп, а Python язык примерно того же высокого уровня и я не пытаюсь сказать что он плохой, он тоже хороший, но в нем нет необходимости и его в такой проект актуально добавлять примерно на одном уровне с массой других хороших язков (Go?C#?Kotlin?).

Зачем тут еще Python

Я уже несколько раз натыкался, когда для какой-то цели на Python есть замечательная библиотека, а на Rust нету/сырая. Если это не центральная вещь для приложения, а опциональная хотелка, то проще вклеить в EXE шник ещё и Питон, чем разрабатывать с нуля.

Или ещё бывает, что у какого-то сервиса под Питон есть официальный API а под Rust - фигуёки. И тут либо реверсить их протокол, заодно не имея возможности спросить на форуме про проблемы; либо же опять таки встраивать Питон.

Благо для юзера снаружи это совершенно незаметно.

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

В памяти занимает на Win 11 200 Мб. Кто-то считает, что это много. Покажите меньше. Только HelloWorld у нас будет такой

Это многовато. В реальном проекте с расходом памяти менее 100 мегабайт (трудно сказать точно, поскольку дело происходило в чужом адресном пространстве — я смотрел на working set / private bytes чужого процесса до и после встраивания) я имел не просто скриптовый язык (диалект экмы + элементы jQuery), но и полноценную разметку со стилизацией и анимациями (в смысле, в проекте активно использовались эффекты и анимации, а не просто поддерживались движком). Бинарники были менее 5 метров, ещё столько же на ресурсы.

Правда, я замерял под Win7, хз, сколько оно скушало бы под 11.

Оффтопик

В Windows всегда есть движок от Edge, даже если в говносборке вырезан сам Edge.

Почему, зачем, с какой целью неуемные Васяны вырезают Edge? Чтобы что? Чтобы поставить ровно то же самое, только в незначительных мелочах хуже, но от Google? Нет, я ничего не имею против околотехнического творчества Васянов самого по себе, сделать говносборку с нескучными обоями вполне себе хобби (впрочем, Васянов и говносборок много, а БолгенОС - одна, не имеющая аналогов, поэтому достижение, если сравнивать с настоящими мастерами, так себе), но зачем дурь пропагандировать, без сколь-нибудь полного понимания вырезая "лишнее" - не только Edge, но и другие "плохие" компоненты? Вопрос, пожалуй, скорее риторический.

Имхо. Как и все поделки на расте, эта выглядит так же шапкозакидательно как и всё остальное "написаное на раст btw". На мой взгляд у tauri слишком много минусов чтобы делать на нём сколь нибудь серьёзный проект.

  1. Отсутствие гарантии наличия web view на компе у конечного пользователя

  2. Отсутствие гарантии что через пару лет сам microsoft не решит выпилить webview из дефолтной поставки, или что будет продолжать его обновлять

  3. Зоопарк браузерных движков на разных платформах, с разным подмножеством поддерживаемых фичь

  4. Rust. Я уж лучше буду на плюсах писать чем на этом творении великого сумрачного гения. Сколько там людей на рынке, кто согласиться писать на расте нативные расширения не связанные с криптой, и прочим модным молодёжным?

Короче говоря, если это не пет проект, и жизненный цикл продукта больше чем 5 лет, electron будет сильно лучше и надёжнее. Плюс ко всему старые билды будут запускаться, и что самое главное работать, вне зависимости от того что там снаружи.

  1. В конфиге Tauri можно указать, чтобы он чекал наличие WebView. Если его нет, то программа предложит его докачать. Делается одной строчкой в конфиге

  2. Смотрим первый пункт

  3. На то и существуют стандарты ES и сама Javascript Foundation, чтобы регулировать весь этот зоопарк. Уже давно не нулевые, где каждый делал что хотел. Времена jQuery уже давно прошли, добро пожаловать в современный вэб

  4. Дело вкуса, тут не поспоришь

WebView уже на вряд-ли покинет стандартный набор библиотек любой ОС. Это неотъемлемая часть взаимодействия с системой. У Майков даже системные вещи уже через WebView работают, если что на 11 Винде новая нижняя панель на Реакте написана (тут могу ошибаться)

для создания десктопно-мобильных приложений на JavaScript

Нет, не попробуем. Дальше можно не читать.

На что только люди не идут, лишь бы не учить нормальный язык вместо JS )

НИ!

Ну тут как посмотреть. Есть идея некого (пет)проекта с десктопно-мобильным приложением. Понятно что скорее всего вообще не займусь,а если и займусь то сделаю что-то минимальное, но от платформы хочется полноценной поддержки всех основных десктопных и мобильных платформ включая Linux, веб тоже хорошо бы, и как обязательное требование наличие качественного визуального редактора текста. С/С++ как-то совсем не хочется.

Что остается? Flutter, Electron/React Native. Теперь еще Tauri.

Является ли Dart нормальным языком по сравнению с TypeScript?

В свое время много писал на С#, но например MAUI и Blazor в WebView не поддерживают Linux, а в Avalonia нет визуального редактора текста.

Wails не поддерживает мобильные платформы и там тоже фронт на TS.

У меня аргумент проще. Сквозь UI на JavaScript прокручивается на 2 порядка больше бабла чем через все остальные UI вместе взятые. Угадайте, где всё максимально отлажено, отполировано и задокументировано?

всё максимально отлажено, отполировано и задокументировано

Настолько отполировано что для функции is_number нужна отдельная библиотека?

Это о чём речь?

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

Хорошая статья и есть надежда на появление как минимум еще одной платформы для кросс-плафторменных приложений. Чуть выше написал про проблему с выбором сейчас из имеющихся альтернатив, наверное не буду повторяться.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории