typescript开发调试-Tauri 初体验:开发 Todo 应用

一起创造,一起成长!这是我参加“掘金每日新项目·八月更新挑战赛”的第27天,点击查看活动详情

金牛座是什么?

Tauri是一个基于Rust的跨端桌面应用程序开发工具。 应用程序的界面仍然可以使用后端来开发。 您可以使用原生 HTML、CSS、JS,或使用 React 和 Vue 等后端框架。 这不受限制。

与Electron相比,其突出的优势是体积小。 众所周知,Electron相当于封装了一个大型浏览器,体积较大,占用显存。 Tauri开发的应用,前端使用了操作系统的webview,后端集成了Rust,使得打包后的体积相当小。 有人比较了同一个Hello World程序的打包。 Electron 打包的应用程序大约有 50 MB,而 Tauri 的大小只有 4 MB。

本文将演示如何创建Tauri项目并将其打包成windows平台下的应用程序。 由于我对 Rust 还很陌生,因此示例应用程序没有演示前端开发。

示例代码在这里,点击访问。

环境设计 (Windows) Rust

Tauri依赖于Rust,你可以参考我的文章《Rust安装和Hello World》来安装Rust。 您也可以阅读官方文档“前期规划”。 具体步骤不再赘述。

Microsoft Visual Studio C++ 构建工具

它是在内部安装 Rust 时手动安装的。 没有更多的演示了。

网页视图2

Tauri 在 WebView2 的帮助下在 Windows 上呈现 Web 内容。 我使用的是 Windows 11,它预装了 WebView2。 对于 Windows 10,您可以从 Windows 10 下载并运行常绿版本的引导加载程序,这将手动下载适合您的系统的版本。

创建项目 使用脚手架创建项目

官方文档推荐使用create-tauri-app脚手架创建Tauri项目,支持原生HMTL/CSS/Javascript,同时也支持其他后端框架,如React、Vue、Svelte等。 文档推荐使用Vite构建后端应用。

我们使用pnpm来创建项目:

pnpm create tauri-app

如果您使用npm或yarn,您可以创建一个像这样的项目:

npm create tauri-app
# or
yarn create tauri-app

在创建过程中,系统会提示您输入项目名称并选择包管理工具。 其中cargo就是rust的包管理工具。 我们可以选择自己熟悉的:

然后选择一个UI模板,这里我们选择使用vue:

项目创建完成后,进入项目目录并安装依赖:

安装依赖项后,启动项目:

pnpm tauri dev

该命令首先会执行pnpm dev,即启动一个vite脚手架到后端页面:

编译大约3分钟后,Rust后端程序也启动了,手动弹出Tauri应用程序:

Tauri项目目录结构

项目创建完成后,进入项目目录查看其结构。

事实上,Rust后端程序被插入到Vite脚手架创建的Vue项目中。

Vue部分不用多说,我们看Rust部分:

发展

熟悉了 Tauri 应用程序的基本结构后,我们来实现一个简单的 todo 应用程序。

安装组件库

我们导入Element Plus组件库并使用其ElButton组件和ElInput组件。

pnpm add element-plus

您还需要使用 Element Plus 提供的图标:

pnpm add @element-plus/icons-vue

按需导出配置组件:

pnpm add -D unplugin-vue-components unplugin-auto-import

vite.config.js

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    })
  ]
  // ......
})

安装 Sass

安装另一个 Sass 预处理器:

pnpm add sass

写一个待办事项

直接在App.vue中实现:

<script setup>
import { ref } from 'vue';
import { Close } from '@element-plus/icons-vue'let id = 0
const todosList = ref([])
const text = ref('')
​
const onAddTodo = () => {
  todosList.value.push({
    id: id++,
    text: text.value
  })
}
​
const onComplete = index => {
  todosList.value.splice(index, 1)
}
​
</script><template>
  <div class="todo-container">
    <h1>Todo List</h1>
    <div class="head">
      <el-input type="text" v-model="text"></el-input>
      <el-button @click="onAddTodo" type="primary">添 加</el-button>
    </div>
    <div class="list" v-if="todosList.length">
      <ul>
        <li v-for="(todo, index) in todosList" :key="todo.id">
          <span>{{ index + 1 }}. </span>
          <span>{{ todo.text }}</span>
          <el-icon :size="16" color="gray" @click="onComplete(index)" style="cursor: pointer;">
             <Close />
          </el-icon>
        </li>
      </ul>
    </div>
  </div>
</template>

预览效果:

调试

调试与开发后端应用程序相同typescript开发调试,按F12打开开发者工具进行调试。

执行命令中的打包命令:

pnpm tauri build

会报错:

提示我们更改identifier的值,打开tauri.conf.json进行更改。

原本的:

  "identifier": "com.tauri.dev",

变成:

  "identifier": "com.tauri.build",

然后再次执行打包命令typescript开发调试,这时候就可以正常打包了,大概需要三到五分钟:

打包完成后,需要从Github下载wix3程序,创建.msi格式的安装包。 大小为 33.1 MB。 由于网络情况,下载会很慢,大概率下载不了。

提前下载(点此下载),解压后的内容放在C:Users用户名AppDataLocaltauriWixTools目录下。

然后再次执行打包命令:

生成的安装包会放在项目的src-tauri/target/release/bundle/msi目录下,体积很小:

双击安装即可使用:

概括

至此,我们已经体验了使用Tauri开发桌面应用的过程。 可以感知到它对于后端开发人员来说非常友好,但是如果想要深入掌握它就必须学习Rust,这就增加了学习成本。 与 Electron 相比,这是一个缺点。 它的优点不用多说,得益于Rust,体积小,性能好,安全性高。