You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
关于 WA+
WA+ - Making a web page more like a desktop application is just the beginning, the possibilities are unlimited, up to your imagination!
Tauri 概览
WindowBuilder::new
中的initialization_script
来加载脚本。emit
和listen
)可以在前后端之间传递消息,它与 Tauri Command 有类似性。综合来看,Tauri JS API 确实提供了很多便捷 API 供前端使用,但是有些底层方法并未暴露,而 Tauri Rust API 则要强大很多。
开发问题
资源 & 文档
cargo tauri info
或npm run tauri info
可以查看平台和版本信息。开发准备
编辑器推荐使用 Visual Studio Code,需要安装的插件:
crates.io
依赖项的插件。旨在帮助开发人员在使用 Cargo.toml 时管理依赖项(鼠标悬停 crate 名称可以显示可用版本列表)。常见问题
子窗口不能使用
__TAURI__
API新创建的远程 URL 子窗口无法使用 Tauri API,因为这与 Tauri 架构安全是违背的,以下有两条相关 issues:
简单概括为:任何与 IPC 相关的问题都触及到了 Tauri 核心,并不能快速解决此类问题,但在 v2,v3 或未来更高的版本会有所改进。Tauri 不会在外部 URL 开的窗口上注入 Tauri API,如果项目没有本地资源,可以通过将
distDir
设置为远程 URL
来解决这个问题,或者在使用的运行时更改它。但这种情况下只有一个外部 URL 能够访问 Tauri API,其实就是修改 tauri.conf.json 中配置的build.devPath
(开发环境) 和build.distDir
(生产环境)字段。Brownfield vs Isolation 模式
Brownfield 模式是使用 Tauri 的最简单、最直接的模式,因为它尽可能地与现有的前端项目兼容。但也并非完全兼容(API 未被浏览器广泛支持,Tauri 正在实现中的),请参阅 不兼容部分。
Isolation 模式下前端发送到 Tauri Core 之前会被注入的一个安全的应用程序拦截和修改传入的 IPC 消息(使用 iframe 沙盒隔离,使用浏览器的 SubtleCrypto 来对数据进行加密。为了确保安全,每次运行应用时都会生成新的密钥),来避免被前端恶意调用。
总结:所以老项目想使用 Tauri 进行套壳,想快速上线,可以考虑 Brownfield 模式。使用 Isolation 模式则更加安全,通信时消息加解密相比于 Brownfield 模式会存在额外的开销成本,除非高性能要求,否则
AES-GCM
身份验证算法的成本几乎可以忽略不计。评价 Tauri
以我目前的了解来看,觉得它很可能成为下一代跨端(桌面,移动端)方案,但前提是它真的实现了比较易用的移动端绑定(目前还在计划中)。Web 的生态奠定了今天的互联网基础,前端技术又是层出不穷,快速迭代。而 Tauri 想做的事情就是实现 Webview 和系统之间的桥接层(站在巨人的肩膀)。所以跨多少个端,提供什么样的能力是 Tauri 需要考虑的事情,开发应用功能是我们需要考虑的事情。Tauri 未提供的支持,我们也可以通过它的插件机制去扩展。
Beta Was this translation helpful? Give feedback.
All reactions