https://github.com/AClon314/tauri-vuetify-learn
Tauri存在的意义
省流总结:浏览器过于谨慎的更新支持、苹果反对PWA以防对应用商店的生态破坏。可以把tauri理解成Webview的mod模组
APP vs 网页
浏览器可谓是全世界的互联网标准,W3C说的标准还不算,得看浏览器支不支持,目前仅剩下 谷歌的Chromium、火狐的Gecko、苹果的Webkit的内核,代表着大家的HTML代码,有着3套不同的实现。
微软的2个自研内核都胎死腹中:IE的Trident内核,Edge换内核前的Chakra。可以说明从头写一个浏览器内核是极其艰难的事情。
嵌入式浏览器Servo的内核,从火狐分支出来,现在有Linux欧洲基金会支持,一套在嵌入式设备上HTML的新实现,很期待哦~
但是W3C及其他互联网委员会,对于特性的更新都过于谨慎。试想下,如果打开一个网页,授权后,他就能随意访问本机上所有的文件,你说你的隐私危不危险。
有传闻,苹果其实反对PWA,即一个网页就是一个应用的设计(比如Discord)。这会让以后的APP绕过Apple Store应用商店的审查,安卓同理。所以纯网页的PWA就是个半残品。
目前争气的新特性有WebGPU、文件夹局部访问授权(仅Chromium),其他我还不了解。
我们都知道,APP比网页的权限更多、更自由,毕竟是本机平台代码。在Windows上,除了系统文件,任何一个EXE都可以随便访问、修改任何文件。而在Android上,就必须在运行时弹窗授予权限,给了用户更多知情权与选择权。
但是APP的本机代码是不能跨平台的,安卓、苹果各一套代码,维护时需要花费更多人力物力财力……
跨平台开发
对于个人开发者和公司,这无疑是福音,未来开发的方向——一套前端代码走天下。QQ NT版就已经用C++后端和前端Electron重构了代码。
虽然Electron已经成熟,但是打包还得带个Webview,会让包体积增大大约50~150MB左右,嵌入式就可以说再见了。(虽然公司不在乎用户的存储空间)
而且Tauri用rust编写,内存安全更好(如果你把一部分UI逻辑写到rust里,而不是在前端)。并且目前Tauri更加注重安全性,这体现在写tauri.config.json
中有各种坑、和rust代码里的更多潜在的异常判断……
一些Webview无法做到的功能,就可以用rust来做。比如跨平台设置壁纸的功能。
需要预制作前端+后端模板
Vite前端+Tauri后端,但Vite具体的框架有很多:Vuetify、Element、Quasar……
一开始用quasar,但后来发现没法搭配Tauri在安卓上运行,发现quasar魔改了配置文件,叫quasar.config.qts
,不支持tauri的一些配置。
最后选用 Vuetify + Tauri,这样就能手动合并vite.config.ts
里的配置了。
然后发现vuetify的网格布局有点坑爹,有些还是用html才实现的布局。
一定要加Discord交流群
Discord搞开发群,好处是比回帖更加活跃,坏处就是没法在谷歌上搜索到
Tauri繁杂的配置
你可以自己试着按官网配,遇到坑的时候看我项目怎么配就行了。
外部存储的访问
https://github.com/tauri-apps/tauri/pull/9311
https://discord.com/channels/616186924390023171/1220085327419674737
解决方案的大意:调用tuari.dialog弹出授权,开发者修改AndroidManifest.xml
的权限,在rust内写一套判断授权成功与否的逻辑。