衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Tauri知識(shí)概覽

jf_wN0SrCdH ? 來(lái)源: 浮之靜 ? 作者:lencx ? 2022-11-15 10:02 ? 次閱讀

最近在折騰 WA+ 項(xiàng)目,因?yàn)橐獙?shí)現(xiàn)一些隨心所欲(想到哪是哪)的功能。就被 Tauri 摧殘的不輕。查過(guò)很多相關(guān)資料,對(duì) Tauri 也有了一些新的體會(huì)(認(rèn)知有限,不保證完全正確,請(qǐng)自行判斷)。

關(guān)于 WA+

WA+ = W(eb) + A(pp) + more...

哇,無(wú)限可能!

WA+[1] - Making a web page more like a desktop application is just the beginning, the possibilities are unlimited, up to your imagination!

Tauri 概覽

利用操作系統(tǒng)提供的 WebView 來(lái)呈現(xiàn)界面,來(lái)避免打包體積過(guò)大。一般套殼空應(yīng)用打包后的體積控制在 3M 左右。而 Electron[2] 會(huì)將整個(gè) Chromium[3] 打包進(jìn)應(yīng)用(安裝包體積幾十兆起步)。

因?yàn)橄到y(tǒng)差異,所以使用自帶 Webview 會(huì)存在兼容性問題,但是應(yīng)該朝前看,IE 瀏覽器都被微軟自家宣布死亡了。

相比 Electron 有更低的內(nèi)存占用,更小的體積,更少的線程,系統(tǒng)調(diào)用等。了解更多 Tauri 基準(zhǔn)測(cè)試[4]。

安裝包是跨平臺(tái)的,目前支持 Mac,Windows,Linux 等,未來(lái)也會(huì)支持 iOS/iPadOS 和 Android 等,跨平臺(tái)打包可以使用官方提供的 Tauri GitHub Action[5],雖然是跨端,但是一些特定于平臺(tái)的代碼還是需要借助于插件或者自行實(shí)現(xiàn),并在真機(jī)上進(jìn)行功能驗(yàn)證,否則可能出現(xiàn)行為和預(yù)期不一致。

提供內(nèi)置簽名以確保應(yīng)用自動(dòng)更新時(shí)可以安全安裝,相關(guān)配置請(qǐng)查看 Tauri Updater[6]。

使用 tauri icons[7] 命令生成自定義應(yīng)用圖標(biāo)(要求:格式為 PNG 的正方形圖片)。

應(yīng)用更安全,Tauri 在架構(gòu)層做了很多安全處理(比如:通過(guò)配置來(lái)約束 Tauri 訪問系統(tǒng)文件,網(wǎng)絡(luò)請(qǐng)求,剪貼板等)。

源代碼更安全,Tauri 只提供二進(jìn)制文件。而不是像 Electron 的 ASAR[8] 文件。

數(shù)據(jù)更安全,隔離模式會(huì)對(duì)前后端(Webview 和 Tauri Core)通信數(shù)據(jù)進(jìn)行加密傳輸。

前端使用 HTML、CSS、JavaScript 來(lái)構(gòu)建界面(也可以使用前端主流技術(shù),如:vite[9],react[10],vue[11],svelte[12] 等)。后端目前使用 Rust,未來(lái)也可能會(huì)支持其他類型語(yǔ)言(如:Go、Nim、Python、Csharp 等)。

強(qiáng)大的系統(tǒng)交互能力,支持配置全局快捷鍵,系統(tǒng)菜單,系統(tǒng)托盤,文件讀寫,命令行,系統(tǒng)信息,剪貼板等。Rust 給 Tauri 帶來(lái)了無(wú)限的想象力,Rust 可以做的事情,Tauri 理論上也可以做(歡迎自行嘗試,可能也有做不了的)。

Tauri Window[13] 支持多種配置。磨砂透明背景,無(wú)邊框功能則需要借助的兩個(gè)插件(支持 Windows 和 macOS,Linux 暫不支持):

window-shadows[14] - 為窗口添加陰影。

window-vibrancy[15] - 為窗口配置磨砂效果。

支持創(chuàng)建多個(gè)窗口以及為新窗口腳本注入,但是腳本注入需要在 rust 端創(chuàng)建窗口,使用 WindowBuilder::new 中的 initialization_script 來(lái)加載腳本。

通過(guò)提供的 Tauri Command[16],可以從 Web 應(yīng)用程序調(diào)用 Rust 函數(shù)。通過(guò) Tauri Events[17](emit 和 listen)可以在前后端之間傳遞消息,它與 Tauri Command 有類似性。

...

綜合來(lái)看,Tauri JS API[18] 確實(shí)提供了很多便捷 API 供前端使用,但是有些底層方法并未暴露,而 Tauri Rust API[19] 則要強(qiáng)大很多。

開發(fā)問題

資源 & 文檔

Tauri doc[20] - 官方文檔,第一參考資料,建議熟讀,源碼及 issues 可以作為補(bǔ)充。

Awesome Tauri[21] - 精選的 Tauri 生態(tài)系統(tǒng)和社區(qū)中最好的東西,包含插件和應(yīng)用,可以借鑒和學(xué)習(xí)。

Tauri issues[22] - 質(zhì)量很高的問題回答,可以解決開發(fā)中遇到的大量困惑或報(bào)錯(cuò)。如果未搜到,還可以自己上報(bào),執(zhí)行 cargo tauri info 或 npm run tauri info 可以查看平臺(tái)和版本信息。

Tauri discussions[23] - 討論社區(qū)

MDN doc[24] - 很權(quán)威的 Web 技術(shù)文檔,包含 CSS,HTML,JavaScript。

Rust doc[25] - Rust 編程語(yǔ)言基本語(yǔ)法學(xué)習(xí)

npmjs[26] - 前端生態(tài)的包管理網(wǎng)站

crates.io[27] - Rust 生態(tài)的包管理網(wǎng)站

開發(fā)準(zhǔn)備

編輯器推薦使用 Visual Studio Code[28],需要安裝的插件:

Tauri[29] - 對(duì) Tauri 命令和 tauri.conf.json JSON 驗(yàn)證提供支持。

rust-analyzer[30] - 插件提供了對(duì) Rust 編程語(yǔ)言的支持。包含代碼提示,類型定義,代碼跳轉(zhuǎn)等等。

crates[31] - 是 crates.io 依賴項(xiàng)的插件。旨在幫助開發(fā)人員在使用 Cargo.toml 時(shí)管理依賴項(xiàng)(鼠標(biāo)懸停 crate 名稱可以顯示可用版本列表)。

常見問題

子窗口不能使用 __TAURI__ API

新創(chuàng)建的遠(yuǎn)程 URL 子窗口無(wú)法使用 Tauri API,因?yàn)檫@與 Tauri 架構(gòu)安全是違背的,以下有兩條相關(guān) issues:

[bug] cant use window.TAURI with remote url[32]

[feat] Inject window.TAURI in allowed remote URLs[33]

簡(jiǎn)單概括為:任何與 IPC 相關(guān)的問題都觸及到了 Tauri 核心,并不能快速解決此類問題,但在 v2,v3 或未來(lái)更高的版本會(huì)有所改進(jìn)。

Tauri 不會(huì)在外部 URL 開的窗口上注入 Tauri API,如果項(xiàng)目沒有本地資源,可以通過(guò)將 distDir 設(shè)置為遠(yuǎn)程 URL 來(lái)解決這個(gè)問題,或者在使用的運(yùn)行時(shí)更改它。

但這種情況下只有一個(gè)外部 URL 能夠訪問 Tauri API,其實(shí)就是修改 tauri.conf.json 中配置的 build.devPath(開發(fā)環(huán)境) 和 build.distDir (生產(chǎn)環(huán)境)字段。

Brownfield vs Isolation 模式

Brownfield 模式[34]是使用 Tauri 的最簡(jiǎn)單、最直接的模式,因?yàn)樗M可能地與現(xiàn)有的前端項(xiàng)目兼容。但也并非完全兼容(API 未被瀏覽器廣泛支持,Tauri 正在實(shí)現(xiàn)中的),請(qǐng)參閱 不兼容部分[35]。

Isolation 模式[36]下前端發(fā)送到 Tauri Core 之前會(huì)被注入的一個(gè)安全的應(yīng)用程序攔截和修改傳入的 IPC 消息(使用 iframe[37] 沙盒隔離,使用瀏覽器的 SubtleCrypto[38] 來(lái)對(duì)數(shù)據(jù)進(jìn)行加密。

為了確保安全,每次運(yùn)行應(yīng)用時(shí)都會(huì)生成新的密鑰),來(lái)避免被前端惡意調(diào)用。

總結(jié):所以老項(xiàng)目想使用 Tauri 進(jìn)行套殼,想快速上線,可以考慮 Brownfield 模式。使用 Isolation 模式則更加安全,通信時(shí)消息加解密相比于 Brownfield 模式會(huì)存在額外的開銷成本,除非高性能要求,否則 AES-GCM 身份驗(yàn)證算法的成本幾乎可以忽略不計(jì)。

評(píng)價(jià) Tauri

在技術(shù)群,文章評(píng)論區(qū)也有一些朋友問過(guò)我:”如何看待 Tauri?“,我也只是業(yè)余折騰,寫過(guò)幾篇淺顯的文章而已。

以我目前的了解來(lái)看,覺得它很可能成為下一代跨端(桌面,移動(dòng)端)方案,但前提是它真的實(shí)現(xiàn)了比較易用的移動(dòng)端綁定(目前還在計(jì)劃中)。Web 的生態(tài)奠定了今天的互聯(lián)網(wǎng)基礎(chǔ),前端技術(shù)又是層出不窮,快速迭代。而 Tauri 想做的事情就是實(shí)現(xiàn) Webview 和系統(tǒng)之間的橋接層(站在巨人的肩膀)。

所以跨多少個(gè)端,提供什么樣的能力是 Tauri 需要考慮的事情,開發(fā)應(yīng)用功能是我們需要考慮的事情。Tauri 未提供的支持,我們也可以通過(guò)它的插件機(jī)制去擴(kuò)展。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • HTML
    +關(guān)注

    關(guān)注

    0

    文章

    278

    瀏覽量

    36543
  • CSS
    CSS
    +關(guān)注

    關(guān)注

    0

    文章

    110

    瀏覽量

    14428
  • LINUX內(nèi)核
    +關(guān)注

    關(guān)注

    1

    文章

    316

    瀏覽量

    21744
  • png
    png
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    4455

原文標(biāo)題:一文讀懂 Tauri

文章出處:【微信號(hào):Rust語(yǔ)言中文社區(qū),微信公眾號(hào):Rust語(yǔ)言中文社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Stm32寄存器與庫(kù)函數(shù)概覽

    Stm32寄存器與庫(kù)函數(shù)概覽(摘自固件庫(kù)使用手冊(cè))
    發(fā)表于 01-26 11:04

    AssetsLibrary框架詳細(xì)解析—— 基本概覽

    AssetsLibrary框架詳細(xì)解析(一) —— 基本概覽
    發(fā)表于 04-29 15:12

    EL顯示器的發(fā)展歷史概覽

    EL顯示器的發(fā)展歷史概覽
    發(fā)表于 06-03 06:13

    STM32中斷應(yīng)用概覽

    目錄一、啟動(dòng)文件簡(jiǎn)介二、RCC—使用 HSE/HSI 配置時(shí)鐘1、RCC 主要作用—時(shí)鐘部分2、RCC框圖剖析—時(shí)鐘樹3、配置系統(tǒng)時(shí)鐘實(shí)驗(yàn)三、STM32 中斷應(yīng)用概覽1、異常類型2、NVIC 簡(jiǎn)介
    發(fā)表于 08-10 07:08

    ESP32的UART串口通信概覽

    ESP32 之 ESP-IDF 教學(xué)(九)—— 串口通信(UART)文章目錄ESP32 之 ESP-IDF 教學(xué)(九)—— 串口通信(UART)一、ESP32 的 UART 概覽1、簡(jiǎn)介2、UART
    發(fā)表于 12-09 07:52

    低功耗數(shù)字VLSI設(shè)計(jì):概覽

    低功耗數(shù)字VLSI設(shè)計(jì):概覽:
    發(fā)表于 07-25 16:44 ?0次下載
    低功耗數(shù)字VLSI設(shè)計(jì):<b class='flag-5'>概覽</b>

    MEDICI的語(yǔ)法概覽

    MEDICI 的語(yǔ)法概覽 語(yǔ)句簡(jiǎn)介
    發(fā)表于 08-27 18:01 ?0次下載

    Apple平板iPad 概覽

    Apple平板iPad 概覽 規(guī)格: 尺寸:242.8
    發(fā)表于 02-01 11:26 ?1096次閱讀

    機(jī)器學(xué)習(xí)概覽

    機(jī)器學(xué)習(xí)概覽
    發(fā)表于 09-07 11:11 ?4次下載
    機(jī)器學(xué)習(xí)<b class='flag-5'>概覽</b>

    MSP430的路線圖概覽介紹

    MSP430 概覽和路線圖
    的頭像 發(fā)表于 08-22 01:00 ?2779次閱讀

    EF3器件概覽

    電子發(fā)燒友網(wǎng)站提供《EF3器件概覽.pdf》資料免費(fèi)下載
    發(fā)表于 09-27 09:13 ?1次下載
    EF3器件<b class='flag-5'>概覽</b>

    Eagle器件概覽

    電子發(fā)燒友網(wǎng)站提供《Eagle器件概覽.pdf》資料免費(fèi)下載
    發(fā)表于 09-27 09:22 ?3次下載
    Eagle器件<b class='flag-5'>概覽</b>

    SALEAGLE FPGA器件概覽

    電子發(fā)燒友網(wǎng)站提供《SALEAGLE FPGA器件概覽 .pdf》資料免費(fèi)下載
    發(fā)表于 09-27 09:16 ?0次下載
    SALEAGLE FPGA器件<b class='flag-5'>概覽</b>

    SALELF 2系列FPGA器件概覽

    電子發(fā)燒友網(wǎng)站提供《SALELF 2系列FPGA器件概覽.pdf》資料免費(fèi)下載
    發(fā)表于 09-26 15:08 ?1次下載
    SALELF 2系列FPGA器件<b class='flag-5'>概覽</b>

    模擬輸出及架構(gòu)概覽

    模擬輸出及架構(gòu)概覽
    發(fā)表于 11-04 09:52 ?3次下載
    模擬輸出及架構(gòu)<b class='flag-5'>概覽</b>
    力博娱乐| 大发888娱乐城客户端| 澳门百家乐官网规律星期娱乐城博彩 | 百家乐官网顺序| 大发888城| 百家乐买隔一数| 解析百家乐官网投注法| 网上百家乐记牌软件| 百家乐官网大转轮| 大发888官网游戏平台| 属狗的和虎的做生意好吗| 百家乐官网什么叫缆| 威尼斯人娱乐城官方站| 百家乐官网棋牌游戏开发| 百家乐官网断缆赢钱| 反赌百家乐官网的玩法技巧和规则| 澳门新濠天地| 南京百家乐的玩法技巧和规则| 百家乐官网公式与赌法| 网上真钱娱乐城| 财富百家乐的玩法技巧和规则 | 澳博| 宝龙百家乐的玩法技巧和规则| tt百家乐官网的玩法技巧和规则 | 百家乐游戏软件开发| 百家乐官网八卦投注法| 香港六合彩结果| 先锋百家乐的玩法技巧和规则 | 百家乐赌场牌路分析| 香港百家乐官网的玩法技巧和规则| 水果机遥控器多少钱| 博彩百家乐网址| 菲律宾百家乐官网开户| 蓝山县| 大发888登录器下载| 百家乐游戏制作| 属蛇和属马合作做生意谁吃亏 | 赌场百家乐官网信誉| A8娱乐城| 大发888网页免费游戏| 百家乐筹码方形|