Комментарии 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 потребит меньше ресурсов, то он лучше. По ресурсам.
Про что б ещё написать? Два способа написать приложение 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 слишком много минусов чтобы делать на нём сколь нибудь серьёзный проект.
Отсутствие гарантии наличия web view на компе у конечного пользователя
Отсутствие гарантии что через пару лет сам microsoft не решит выпилить webview из дефолтной поставки, или что будет продолжать его обновлять
Зоопарк браузерных движков на разных платформах, с разным подмножеством поддерживаемых фичь
Rust. Я уж лучше буду на плюсах писать чем на этом творении великого сумрачного гения. Сколько там людей на рынке, кто согласиться писать на расте нативные расширения не связанные с криптой, и прочим модным молодёжным?
Короче говоря, если это не пет проект, и жизненный цикл продукта больше чем 5 лет, electron будет сильно лучше и надёжнее. Плюс ко всему старые билды будут запускаться, и что самое главное работать, вне зависимости от того что там снаружи.
В конфиге Tauri можно указать, чтобы он чекал наличие WebView. Если его нет, то программа предложит его докачать. Делается одной строчкой в конфиге
Смотрим первый пункт
На то и существуют стандарты ES и сама Javascript Foundation, чтобы регулировать весь этот зоопарк. Уже давно не нулевые, где каждый делал что хотел. Времена jQuery уже давно прошли, добро пожаловать в современный вэб
Дело вкуса, тут не поспоришь
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, да и тыкал его всего раз на релизе, но статья написана оч классно, легко и интересно) спасибо автору, появился повод поиграться с платформой на досуге
Хорошая статья и есть надежда на появление как минимум еще одной платформы для кросс-плафторменных приложений. Чуть выше написал про проблему с выбором сейчас из имеющихся альтернатив, наверное не буду повторяться.
Попробуйте Tauri