众所周知,大部分前端开发在做桌面应用开发时,都会感觉力不从心
所以很多时候都会采用调用第三方程序的方式来扩展自己的程序。
相对来说 tauri
将这种嵌入第三方可执行程序称之为 sidecar
相当于摩托车旁边的边斗。
1. 第一步准备一个可执行程序
这里我们直接试用 GO
生成一个简单 demo
, 新建一个 test.go
文件,输入如下代码之后
package main
import (
"fmt"
"os"
)
// main 是程序的入口点
func main() {
// 检查命令行参数的数量
if len(os.Args) < 2 {
fmt.Println("请提供一个字符串参数")
os.Exit(1)
}
// 从命令行参数中获取用户输入的字符串
inputString := os.Args[1]
// 处理字符串(这里简单地返回一个问候语)
response := "你好,你输入的字符串是:" + inputString
// 输出响应
fmt.Println(response)
}
运行 go build -o test.exe test.go
就得到了一个将输入字符返回的可执行程序了
2. 配置 tauri sidecar
1. 复制 test.exe 到 bin 目录,并重命名为 test-x86_64-pc-windows-msvc.exe
在 src-tauri
目录下新建 bin
目录,并将 test.exe
重命名为 test-x86_64-pc-windows-msvc.exe
特别需要注意这里的文件命名
windows
下需要以-x86_64-pc-windows-msvc.exe
结尾。
Linux
下需要以-aarch64-unknown-linux-gnu
结尾具体命名可以参考 bundle配置
2. 配置 tauri.conf.json
{
// ... 省略
"tauri": {
"allowlist": {
// ... 省略
"shell": {
"sidecar": true,
"scope": [
{
// 这里的名字就是目录 + 执行程序的开始名称
"name": "bin/test",
"sidecar": true,
// 这里配置执行exe 的参数和校验
"args": [{ "validator": "\\S+" }]
}
],
"all": true,
"execute": true,
"open": true
}
},
// ... 省略
"bundle": {
// ... 省略
// 这里的名字就是目录 + 执行程序的开始名称
"externalBin": ["bin/test"]
}
}
}
需要注意这里的参数要和我们调用时一致,不然就会出现传参了但是获取不到参数的情况
3. js 调用
let result = ref(null)
import { Command } from '@tauri-apps/api/shell'
try {
// 第一个参数就是可执行程序的名称,填入 bundle 中配置的名称就行
// 第二个参数是可执行程序的参数,和 shell 中配置的 args 对应就行
const command = Command.sidecar('bin/test', ['fds-fds'])
const output = await command.execute()
console.log(output)
result.value = output.stdout
console.log(result.value)
} catch (err) {
console.error(err)
result.value = err
}
好了,到这里就结束了,运行起来看一下效果吧
可以看到已经正常调用了嵌入的二进制文件了
参考链接: tauri sidecar