首页 > 其他分享 >初步尝试 tauri,并且与 electron.js 对比

初步尝试 tauri,并且与 electron.js 对比

时间:2022-10-07 18:33:04浏览次数:79  
标签:Tauri Electron yarn js tauri electron 安装

什么是Tauri?

Tauri 是一个为所有主流桌面平台构建小型、快速二进制文件的框架。开发人员可以集成任何编译成 HTML、 JS 和 CSS 的前端框架来构建他们的用户界面。应用程序的后端是一个 Rust 二进制文件,具有前端可以与之交互的 API。

初步尝试 tauri,并且与 electron.js 对比_linux

在 2021 年 star 排行榜单中,​​tauri​​ 一年增长了18k 排名第五,我们就很好奇,Tauri 有什么优势呢?

然后我分别用 tauri 和 Electron.JS 打包测试一个 hello world 程序,一起来看下它们的大小。

大小对比

  • Electron.JS​​62.5​​mb
  • Tauri​​4.32​​mb

​Tauri​​​ 构建的桌面程序太小了,远不是 Electron.JS 可以相比的,因为它放弃了体积巨大的 ​​Chromium​​​ 内核 和 ​​nodejs​​​,前端使用操作系统的 ​​webview​​​,后端集成了 ​​Rust​​​。 Tauri 提供了初始化程序的模板,比如原生js, ​​​react​​​, ​​svelte.js​​​, ​​vue.js​​ 等等。

初步尝试 tauri,并且与 electron.js 对比_JavaScript_02

从 MOBILE when?​ 这条 issues 看, Tauri 团队也正在努力支持 ​​​Android​​​ and ​​IOS​​.这是不是有点小期待呢?

开始尝试 Tauri

因为 Tauri 是一个多语言的工具链,涉及安装有点复杂。

我这边是 macos 系统

1、 首先要安装 gcc 编译器

$ brew install gcc

homebrew 可以先切换清华大学的源, 需要先安装 homebrew, 下面命令是 homebrew 的国内安装地址

安装 homebrew

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

2、 确保已经安装 xcode

xcode-select --install

3、安装 Nodejs 运行环境 和包管理工具 yarn

这一步前端都已经装了

4、安装是 Rust 编程语言的编译器 rustc

$ curl --proto '=https'

初步尝试 tauri,并且与 electron.js 对比_初始化_03

然后就可以使用官方 cli 初始化程序了。

yarn create tauri-app

初步尝试 tauri,并且与 electron.js 对比_linux_04

然后要在项目目录下初始化

yarn tauri init

初步尝试 tauri,并且与 electron.js 对比_node.js_05

这一步骤很慢,我不清楚是否是我没指定 rust 国内源,知道的小伙伴可以在评论区留言。 完成之后执 ​​yarn start​​ 就跟开发 react 程序一样,就可以实时热更新了。

初步尝试 tauri,并且与 electron.js 对比_node.js_06

第一次运行这个命令时,Rust 包管理器需要几分钟时间下载并构建所有需要的包,后续的构建会快得多,因为它们是有缓存的。

客户端开发启动命令

​yarn tauri dev​

右键也可以审查元素

初步尝试 tauri,并且与 electron.js 对比_JavaScript_07

打包客户端

​yarn tauri build ​

初步尝试 tauri,并且与 electron.js 对比_linux_08

与 Electron 对比

我们可以通过官方github Readme 查看与 electron 对比

Comparison between Tauri and Electron

详细

Tauri

Electron

安装包大小 Linux

3.1 MB

52.1 MB

内存消耗 Linux

180 MB

462 MB

启动时间 Linux

0.39s

0.80s

界面服务提供

WRY

Chromium

后端绑定

Rust

Node.js (ECMAScript)

潜在引擎

Rust

V8 (C/C++)

FLOSS

Yes

No

多线程

Yes

Yes

字节码交付

Yes

No

多多窗口

Yes

Yes

自动更新

Yes

Yes1

自定义 App Icon

Yes

Yes

Windows Binary

Yes

Yes

MacOS Binary

Yes

Yes

Linux Binary

Yes

Yes

iOS Binary

Soon

No

Android Binary

Soon

No

Desktop Tray

Yes

Yes

Sidecar Binaries

Yes

No

小结

这次尝试,只是从 web 层,并没有涉及系统 后端,需要学一些 rust 相关的知识。若单纯 web 程序打包,使用 ​​tauri​​​ 会更小,若熟悉 node.js api 的还是推荐 ​​electron.js​​​ ,毕竟 ​​vscode​​​ 这么大的程序也是 ​​electron.js​​ 构建的。

以上就是本文全部内容,希望这篇文章对大家有所帮助,也可以参考我往期的文章或者在评论区交流你的想法和心得,欢迎一起探索前端。

标签:Tauri,Electron,yarn,js,tauri,electron,安装
From: https://blog.51cto.com/u_15757429/5734855

相关文章

  • 如何打一个既支持cjs,又支持esm的npm包?
    模块化是一个老生常谈的问题了,打包工具层出不穷。那么,如何利用这些打包工具去打出既支持cjs,又支持esm的npm包呢。这篇文章不涉及概念,是一些打包实测。demorepo:github.com......
  • tauri 新的桌面应用开发模式
    tauri是基于rust以及webkit开发桌面应用的框架特性高性能构建的软件包小安全跨平台githubaction集成核心能力(文件系统文档,原生通知)自更新sidecar(可以集成其他二进制......
  • 用 JS 实现数字千分位格式化
    需求:用JS实现数字千分位格式化,每个三位添加一个逗号方法一:利用字符串str.slice(-3)是取最后三位数字,并在前面添加‘,’号,再通过strNum.slice(0,str.length-3)(是取从字符串......
  • Microsoft 365 开发篇:如何使用JSON Format来定制New Item的页面布局
    Blog链接:​​​https://blog.51cto.com/13969817​​我们使用SharePointOnline作为企业数据存储和协作办公管理平台时,往往根据用户的实际需求基于SharePointOnline做了很......
  • Three.js 学习记录
    首先,你要引入three.js插件,这里默认你已经安装好了该插件three.js使用时必要的模块有:渲染器,相机,光源,场景,以及你要的加载模型在vue页面中引入import*asTHREEfrom"t......
  • 教你开发一个JS代码加密工具
    教你开发一个JS代码加密工具作者:JShaman.comw2sft本文,教你开发一个JS代码加密工具。工具可实现:把正常的JS代码,转化为加密代码,并且加密后的JS代码能直接运行。效果展示加密......
  • httpclient实现HttpGet请求传body的json参数的!
    原文来自:https://admins.blog.csdn.net/article/details/109809386前言最近调用公司项目一个接口时,发现该接口是一个Get请求,入参在Body中(json格式)。场景如下:A服务需发送h......
  • JS + Canvas 碰撞检测
     <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content=......
  • 直播带货源码,通过js实现轮播图的效果
    直播带货源码,通过js实现轮播图的效果<!DOCTYPEhtml><html> <head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <m......
  • autojs 企业微信 一键上传
    app.startActivity({action:"android.intent.action.VIEW",data:"alipays://platformapi/startapp?appId=2018062060350751&page=%2Fpages%2Fweb%2Fweb%3Furl%3Dht......