精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Tauri:將Javascript與Rust結合構建GUI桌面應用

開發 前端
我認為我們很快從零變英雄與模板,盡管允許一系列 JavaScript 框架的靈活性確實讓一切都變得有點復雜。我想知道更武斷的方法是否會更好。但總體而言,我認為 Tauri 仍然是打造桌面應用程序而無需擔心窗口內部的一個非常可靠的解決方案。

我們重新審視 Tauri,這是一個使用任何前端框架和 Rust 核心構建桌面應用程序的框架。我們查看了 2.0 beta 版。

譯自Tauri: Mixing JavaScript With Rust for GUI Desktop Apps,作者 David Eastman。

在我 2022 年 1 月對 Tauri 的首次評論中,我指出它是一個框架,可以使用任何前端框架和 Rust 內核構建桌面應用程序。由于 Rust 語言在過去兩年半的時間里在流行度方面取得了顯著進步,我認為再次回顧 Tauri 是值得的——尤其是因為它最近發布了 2.0 版本。

Tauri 的宣傳語是“構建一個針對多平臺部署的優化、安全且與前端無關的應用程序”,這與之前的說法一致,但更多的部署目標使其更符合我最近發布的其他產品。額外的好處是,可以使用熟悉的 Web 方法構建桌面和移動應用程序。

我們獲得了 Rust 的安全性,但也獲得了 Web 開發的熟悉性和靈活性。

我們將嘗試看看構建一個可以在我的 Mac 上完全打包運行的 UI 應用程序的路徑是否變得更加平滑。Tauri 仍然將自己稱為一個“工具包”,這仍然是事實。

從概念上講,Tauri 充當一個靜態 Web 主機。因此,Tauri 與 Rust 框架和系統的原生 Web 視圖協同工作,以輸出一個體積適中的可執行應用程序。理論上,我們獲得了 Rust 的安全性,但也獲得了 Web 開發的熟悉性和靈活性。

入門路線看起來更新了一些,現在流行的是單行啟動。在我們開始之前,我懷疑我有一個舊的 Rust 安裝,所以我應該更新它。使用先決條件說明:

圖片圖片

最后,它提醒您啟動一個新的 shell 或使用 env 文件。我注意到所有這些都有一種新的更友好的口吻——就好像,也許,Rust 現在很流行!

好的,現在我應該可以使用 Tauri 的單行命令:

圖片圖片

請注意,我們已經進入了 Tauri 2.0 的測試版。

模板安裝選項認識到工具包的多樣性。我可以使用 .NET,但我將使用 JavaScript 來獲得更通用的視圖。顯然,Rust 也可用。

圖片圖片

我保留了我稍微舊的 npm/node 組合并構建了我的模板:

圖片圖片

然后我們在開發環境中運行模板:

圖片圖片

這將構建我們開始所需的所有包,第一次需要幾分鐘。這些將是 Rust 與您的操作系統窗口通信的方式。最終,它將啟動應用程序:

圖片圖片

因此,我們啟動了一個應用程序,它彈出了,在我的托盤中顯示為一個標準的 Mac 應用程序。

好的,讓我們看看它是如何組成的。在我們深入研究之前,請注意,點擊圖標會啟動一個瀏覽器頁面,在文本框中輸入您的姓名并按下按鈕會顯示一個問候語:

圖片圖片

這將幫助我們稍后找出 Rust 的一部分。代碼結構是人們對 Web 應用程序的期望:

圖片圖片

我選擇了原生 JavaScript,因此我們在模板中得到了一個非常原生的index.html:

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <link rel="stylesheet" href="styles.css" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Tauri App</title>
  <script type="module" src="/main.js" defer></script>
</head>
<body>
  <div class="container">
    <h1>Welcome to Tauri!</h1>
    <div class="row">
      <a  target="_blank">
        <img src="/assets/tauri.svg" class="logo tauri" alt="Tauri logo" />
      </a>
      <a  target="_blank" >
        <img src="/assets/javascript.svg" class="logo vanilla" alt="JavaScript logo" />
      </a>
    </div>
    <p>Click on the Tauri logo to learn more about the framework</p>
    <form class="row" id="greet-form">
      <input id="greet-input" placeholder="Enter a name..." />
      <button type="submit">Greet</button>
    </form>
    <p id="greet-msg"></p>
  </div>
</body>
</html>

中央div顯示一個錨點中的圖像,該錨點處理鏈接行為。請注意,JavaScript 位于main.js中,窗口本身的應用程序標題與這里定義的標題不同。我們有一個非常老式的form用于輸入文本。因此,我們知道我們將不得不處理該表單以提取輸入的名稱,并將結果放置在最終的p中。這是main.js的內容:

const { invoke } = window.__TAURI__.core;
let greetInputEl;
let greetMsgEl;


async function greet() {
  // Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
  greetMsgEl.textContent = await invoke("greet", { name: greetInputEl.value });
}


window.addEventListener("DOMContentLoaded", () => {
  greetInputEl = document.querySelector("#greet-input");
  greetMsgEl = document.querySelector("#greet-msg");
  document.querySelector("#greet-form").addEventListener("submit", (e) => {
    e.preventDefault();
    greet();
  });
});

在選擇活動元素并為表單按鈕添加事件偵聽器之后,我們會運行一個處理輸入并將之粘貼到輸出段落的函數。這需要調用一些 Rust,所以我們了解一些它的工作原理。

如果我們回到在生成區域中的主目錄,我們會注意到 src-tauri:

而有些 Rust 代碼位于 src 中的 main.rs 中:

// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
#[tauri::command]
fn greet(name: &str) -> String {
  format!("Hello, {}! You've been greeted from Rust!", name)
}


fn main() {
  tauri::Builder::default()
    .plugin(tauri_plugin_shell::init())
    .invoke_handler(tauri::generate_handler![greet])
    .run(tauri::generate_context!())
    .expect("error while running tauri application");
}

我們能夠看到 JavaScript 中的 invoke 調用到達處理字符串的 Rust greet 函數。這是很好的一點,因為我們可以使用 Tauri 幫我們管理的 Rust 函數。(我們還需要了解 greet 函數的生成器。)

要顯示的最終文件是以 JSON 格式的,用于控制窗口本身,tauri.conf.json:

{
  "productName": "thenewstack",
  "version": "0.0.0",
  "identifier": "com.tauri.dev",
  "build": {
    "frontendDist": "../src"
  },
  "app": {
    "withGlobalTauri": true,
    "windows": [
      {
        "title": "thenewstack",
        "width": 800,
        "height": 600
      }
    ],
    "security": {
      "csp": null
    }
  },
  "bundle": {
    "active": true,
    "targets": "all",
    "icon": [
      "icons/32x32.png",
      "icons/128x128.png",
      ...
    ]
  }
}

為了確保我們理解了一切,讓我們設定一個可識別的目標,并稱呼一個友好的新問候者。

“我們改變上述目標以使其更小,并添加一個唯一的標識符:

{
  ...
  "identifier": "io.thenewsatck",
  ...
  "app": {
    "windows": [
      {
        "title": "Welcome to TheNewStack",
        "width": 600,
        "height": 200
      }
    ],
    ...
  },
  ...
}

然后我們適當地更改消息代碼。這將強迫構建檢查更改。

最后,我們運行完整構建,以查看它對可執行文件所做的更改。

圖片圖片

當然,這是需要時間的,因為它是第一次。結果是dmg和app文件。一旦我們把app移動到應用程序文件夾中,我們可以像正常的mac應用程序一樣執行它:

圖片圖片

應用程序大小仍然有點胖(10.7 mb),但我沒有做任何事情來精簡自動添加到模板的板條箱。

結論

我認為我們很快從零變英雄與模板,盡管允許一系列 JavaScript 框架的靈活性確實讓一切都變得有點復雜。我想知道更武斷的方法是否會更好。但總體而言,我認為 Tauri 仍然是打造桌面應用程序而無需擔心窗口內部的一個非常可靠的解決方案。

責任編輯:武曉燕 來源: 云云眾生s
相關推薦

2025-01-06 10:43:31

2025-05-26 03:01:00

2022-10-14 08:31:10

2020-09-28 09:58:18

Linux WSL操作系統

2022-08-27 21:31:04

Tauri框架二進制

2024-02-28 07:48:05

Rust項目框架

2023-05-26 17:21:15

PythonRust

2023-03-24 07:30:53

JavaScript項目元框架

2021-01-29 14:24:33

桌面瀏覽器Firefox

2012-06-11 09:44:01

Firefox 16Web

2023-12-12 13:42:00

微服務生態系統Spring

2009-06-19 21:21:15

Citrix Rece桌面應用手機

2010-08-11 09:36:12

Flex組件

2022-10-08 00:35:48

gRPCGuice服務器

2024-08-27 12:21:52

桌面應用開發Python

2012-07-13 13:41:35

Canvas

2009-10-28 08:50:02

2017-03-13 16:30:50

React Route構建JavaScript

2021-11-16 14:25:38

JavaScript前端

2010-09-01 15:28:11

CSSexpression
點贊
收藏

51CTO技術棧公眾號

在线观看国产三级| 日本高清视频免费在线观看| 国产精品xxxxxx| 99久久夜色精品国产亚洲1000部| 日韩欧美激情四射| 欧美成人精品欧美一级乱| 色哟哟免费在线观看| 国产成人无遮挡在线视频| 欧美最猛性xxxx| 男人av资源站| 蜜桃国内精品久久久久软件9| 欧美日韩国产大片| 欧美日韩性生活片| 免费在线毛片网站| 久久久久久一二三区| 成人黄色网免费| 亚洲天堂视频网站| 欧美一区在线看| 亚洲欧美一区二区三区久久| 亚洲视频在线不卡| 日韩电影免费观看高清完整版| 亚洲色图制服丝袜| 欧美亚洲国产免费| 丰满少妇在线观看bd| 全部av―极品视觉盛宴亚洲| 久久久久久久久综合| 日韩欧美视频免费观看| 欧美重口另类| 欧美成人乱码一区二区三区| 性刺激的欧美三级视频| 亚洲同志男男gay1069网站| 亚洲欧美日韩成人高清在线一区| 日本一区二区在线视频| 日韩一级片免费看| 国产精品一区二区三区乱码| 国产精品免费久久久久影院| 无码人妻精品一区二区三区不卡 | 日本一区二区三区精品视频| 亚洲黄色精品视频| 国产一区二区美女| 国产综合色香蕉精品| 黄色av网站免费观看| 影音先锋亚洲电影| 欧美精品性视频| 亚洲xxxx3d动漫| 久久资源中文字幕| 色爱av美腿丝袜综合粉嫩av| 成年人在线免费看片| 久久99国产精一区二区三区| 亚洲精品日韩欧美| 激情综合丁香五月| 丝袜美腿综合| 亚洲精品自拍偷拍| 久久久久亚洲AV成人无码国产| 97久久超碰| 欧美成人vps| 欧美性生交xxxxx| 97色成人综合网站| 亚洲成人久久久| 成人区人妻精品一区二| 综合激情五月婷婷| 精品人在线二区三区| 国产成人精品一区二区三区在线观看| 网站一区二区| 亚洲黄色有码视频| 国产又爽又黄无码无遮挡在线观看| 激情小说亚洲图片| 精品香蕉在线观看视频一| 在线精品一区二区三区| 一区二区导航| 中文字幕精品久久久久| 在线视频这里只有精品| 亚洲91视频| 欧美激情一区二区三级高清视频| 麻豆一区二区三区精品视频| 亚洲高清电影| 日韩免费在线视频| 97av免费视频| 国产91精品一区二区| 国产精品一级久久久| 日本在线一二三| 国产精品区一区二区三区 | 国产亚洲网站| 国产精品精品久久久| 伊人久久一区二区| 国产成人精品1024| 久久av一区二区三区漫画| 黄色毛片在线看| 中文字幕一区二区三区四区不卡 | 久久一区二区精品| av大全在线免费看| 亚洲资源中文字幕| 欧美 激情 在线| 亚洲精品一区av| 337p日本欧洲亚洲大胆色噜噜| 六月婷婷七月丁香| 亚洲自拍偷拍网| 欧美性资源免费| 91精品中文字幕| 99国产精品久久久| 一区二区三区四区视频在线观看| 狂野欧美性猛交xxxxx视频| 日韩欧美国产骚| 亚洲综合中文网| 日韩精品久久久久久久电影99爱| 久久久久久中文字幕| 中文字幕日本人妻久久久免费| 成人亚洲一区二区一| 色涩成人影视在线播放| 免费电影网站在线视频观看福利| 色诱视频网站一区| 少妇伦子伦精品无吗| 欧美一区三区| 91av在线精品| 朝桐光av在线一区二区三区| 欧美国产97人人爽人人喊| 青青草视频在线免费播放| 亚洲免费一区| 国产一区二区三区直播精品电影| 免费视频网站www| 久久er99热精品一区二区| 久久久久一区二区三区| a视频在线观看| 在线观看亚洲专区| 久久人人妻人人人人妻性色av| 伊人成综合网| 91久久久久久| av播放在线| 日本精品免费观看高清观看| 在线观看国产免费视频| 欧美一区二区| 成人av在线网址| 午夜看片在线免费| 在线观看成人小视频| 免费在线观看你懂的| 亚洲日本欧美| 国产精品免费在线播放| 丝袜美女在线观看| 91精品国产综合久久香蕉麻豆| 特级西西www444人体聚色| 国产精品久久久久毛片大屁完整版| 国产成人免费观看| 激情av在线| 精品欧美一区二区在线观看| 久久久精品一区二区涩爱| 韩国v欧美v亚洲v日本v| 国产日本欧美在线| 激情综合五月| 欧美大成色www永久网站婷| 国产福利免费视频| 又紧又大又爽精品一区二区| 日韩精品――色哟哟| 综合在线视频| 成人综合色站| av成人福利| 日韩理论片久久| 久久久黄色大片| 亚洲国产精品成人综合| 日本激情综合网| 久久视频国产| 91视频婷婷| sis001亚洲原创区| 国产视频在线观看一区二区| 免费的毛片视频| 国产拍揄自揄精品视频麻豆| 亚洲欧美国产中文| 亚洲国产精品久久久天堂| 91亚色免费| 理论不卡电影大全神| 亚洲欧洲偷拍精品| 亚洲一级黄色大片| 亚洲精品乱码久久久久久日本蜜臀| 天堂va欧美va亚洲va老司机| 国产精品普通话对白| 日韩免费av一区二区三区| 亚洲综合视频| 午夜精品久久久久久久99黑人 | 久久天天做天天爱综合色| 欧美综合在线观看视频| 91欧美国产| 国产视频一区二区三区四区| 桃子视频成人app| 少妇精69xxtheporn| 国产成人精品无码高潮| 精品动漫一区二区三区| 亚洲成人黄色av| 国产乱子轮精品视频| 日日橹狠狠爱欧美超碰| 成人久久一区| 国精产品一区二区| 色综合视频一区二区三区44| 欧美激情xxxxx| 岛国在线视频| 精品美女在线播放| 中文字幕777| 亚洲午夜精品一区二区三区他趣| 熟女俱乐部一区二区| 国产美女视频91| 精品国产成人av在线免| 在线电影一区二区| 日本日本精品二区免费| 亚洲一区二区三区四区电影| 日本久久亚洲电影| 国产理论电影在线 | 国产极品人妖在线观看| 亚洲美女黄色片| 国产成人麻豆精品午夜在线| 在线日韩av片| 日韩成人免费观看| 亚洲乱码国产乱码精品精98午夜| 亚欧洲乱码视频| 不卡一区二区在线| 九色91porny| 久色婷婷小香蕉久久| 成人av一级片| 亚洲午夜久久久久久尤物| 一区二区三区av在线| 免费看日本一区二区| 国产视频在线观看一区| 欧美h版在线观看| 国产欧美va欧美va香蕉在线| jizz内谢中国亚洲jizz| 久久久久久国产精品三级玉女聊斋| 人人干在线视频| 一区三区二区视频| 免费在线观看一级毛片| 亚洲国产欧美一区| 亚洲国产精品久久久久爰性色| 欧美日韩国产欧美日美国产精品| 无码人妻精品一区二区三区不卡| 高跟丝袜欧美一区| 国产无遮挡又黄又爽| 亚洲综合区在线| 国产成人自拍网站| 亚洲人成小说网站色在线| 影音先锋男人在线| 欧美国产日韩精品免费观看| 免费在线观看你懂的| 2023国产精品自拍| 久久久久久久久久久国产精品| 99久久精品国产导航| 一级特黄a大片免费| 不卡的电视剧免费网站有什么| 苍井空张开腿实干12次| 丁香亚洲综合激情啪啪综合| 18禁一区二区三区| 成人一级片在线观看| 国产人妖在线观看| 成人动漫一区二区| 五十路六十路七十路熟婆| 99久久免费国产| 久久精品一区二区免费播放 | 欧美aaaaa喷水| 国产99久久久国产精品成人免费 | 337p日本欧洲亚洲大胆张筱雨 | 人妻体内射精一区二区| 久久久精品日韩欧美| 欧美另类z0zx974| 国产精品不卡一区二区三区| 我要看黄色一级片| 一区二区三区不卡视频| 男人天堂中文字幕| 狠狠操狠狠色综合网| 无码人妻精品一区二| 欧美日韩你懂得| 国产婷婷一区二区三区久久| 精品国产一区a| 日本中文字幕一区二区有码在线| 亚洲最大中文字幕| 国产精品一区二区三区视频网站| 欧美成人久久久| 蜜桃视频在线观看播放| 国产精品白丝jk喷水视频一区| 精品69视频一区二区三区| 91精品黄色| 亚洲精品456| 中文字幕一区二区三区5566| 国内精品久久久久久久影视蜜臀 | 欧美精品一区二区三区在线| 外国精品视频在线观看 | 丁香花在线观看完整版电影| 欧美一区二区视频97| 国产成人免费精品| 91在线观看网站| 国产精品欧美日韩一区| 五月天综合婷婷| 国产农村妇女毛片精品久久莱园子 | 成人欧美一区二区三区视频| 一区二区三区四区在线看| 亚洲欧美一区二区原创| 在线成人亚洲| 538任你躁在线精品免费| 成人国产精品免费观看| 欧美人与性囗牲恔配| 一区二区三区不卡在线观看 | 久久99蜜桃精品| 亚洲图片综合网| 国产精品成人网| 久久久久99精品成人片三人毛片| 7878成人国产在线观看| 全部免费毛片在线播放网站| 久久艳片www.17c.com| 欧美电影h版| 成人在线免费网站| 国产精品久久久久无码av| 大j8黑人w巨大888a片| 国内精品久久久久影院薰衣草| 国产在线观看无码免费视频| 中文字幕在线不卡视频| 亚洲毛片一区二区三区| 欧美va在线播放| 欧美三级电影一区二区三区| 国产91精品不卡视频| 视频在线观看免费影院欧美meiju 视频一区中文字幕精品 | 国产女同性恋一区二区| 日韩黄色在线视频| 日韩三级精品电影久久久| yw在线观看| 欧洲美女免费图片一区| 91精品入口| 亚洲中文字幕无码一区二区三区 | 搞黄视频在线观看| 97在线视频免费观看| 99久久香蕉| 黄色一级大片免费| 国产精品一区在线| 九九精品视频免费| 欧美日韩极品在线观看一区| 国产高清免费av在线| 青青久久av北条麻妃海外网| 欧美变态网站| 国产免费一区二区视频| 国产福利视频一区二区三区| 丝袜 亚洲 另类 欧美 重口| 欧美老人xxxx18| 欧美jizz18hd性欧美| 国产免费一区二区三区在线能观看| 精品久久综合| jizz欧美激情18| 中文字幕精品三区| 亚洲av人无码激艳猛片服务器| 亚洲欧美国产精品va在线观看| 天堂电影一区| 日本欧美色综合网站免费| 日韩精品亚洲专区| 九九热免费在线| 欧美日韩国产不卡| av免费网站在线| 国产精品v欧美精品v日韩| 一区二区三区国产在线| 超碰97人人干| 在线观看网站黄不卡| 在线视频1区2区| 亚洲一区中文字幕在线观看| 午夜精品久久99蜜桃的功能介绍| 韩国三级在线看| 精品美女久久久久久免费| 欧美精品a∨在线观看不卡| 国产成人精品久久| 国产国产精品| 性生交大片免费看l| 精品久久久中文| 搞黄视频在线观看| 91理论片午午论夜理片久久| 午夜国产一区| 中文字幕无码人妻少妇免费| 欧美小视频在线观看| 触手亚洲一区二区三区| 亚洲影视中文字幕| 亚洲欧洲日本一区二区三区| 亚洲日本精品视频| 在线观看91av| 白浆在线视频| 日韩欧美亚洲日产国产| 国产在线看一区| 1级黄色大片儿| 中文字幕免费精品一区高清| 欧一区二区三区| 国产福利视频在线播放| 亚洲人成网站精品片在线观看| 四季av日韩精品一区| 国产精品91久久久| 欧美激情1区2区3区| 欧美性xxxx图片| 6080国产精品一区二区| h片在线观看视频免费| 日韩尤物视频| 粉嫩欧美一区二区三区高清影视| 免费的毛片视频| 欧美激情国产高清| 国产精品手机在线播放| 无人码人妻一区二区三区免费| 欧美日韩国产影院| 成人在线观看免费网站| 鲁鲁狠狠狠7777一区二区| 美女视频黄 久久| 成年人免费看毛片| 久久这里有精品| 精品国产视频| 影音先锋黄色资源|