Rust Tauri系列: 项目创建

创建 Rust - Tauri

## 创建rust Tauri项目
pnpm create tauri-app
->项目名称 test-app
->选择 TypeScript / JavaScript  (pnpm, yarn, npm, bun)
->选择包管理工具(熟悉那个就用那个)
->选择 vue (熟悉那个就用那个)
->选择TypeScript 或者 js

# 运行启动
cd test-app
pnpm install
pnpm tauri dev 

# 添加quasar UI or Element Plus 都可以
pnpm add quasar @quasar/extras
pnpm add -D @quasar/vite-plugin sass@1.32.12

# main.ts or main.js
# Import icon libraries
import '@quasar/extras/material-icons/material-icons.css'

# Import Quasar css
import 'quasar/dist/quasar.css'

const myApp = createApp(App)

# quasar 的插件配置
myApp.use(Quasar, {
    plugins: {
        Notify
    }, // import Quasar plugins and add here
    config:{
        notify: { /* look at QuasarConfOptions from the API card */ }
    }
})

myApp.mount("#app");



# vite.config.ts
.....
 plugins: [
      vue({
        template: { transformAssetUrls }
      }),
    quasar({
      sassVariables: 'src/quasar-variables.sass'
    })
  ],
.....


pinia 状态管理

pnpm i pinia --save

# store/index.ts
import { createPinia } from 'pinia'  

const store = createPinia()  

export default store

# mian.ts 挂载使用

axios

pnpm i axios

# api/index.ts

import axios from 'axios';

const service = axios.create({
    baseURL: 'http://127.0.0.1:7777/',
    timeout: 120000 // request timeout
});

// 请求拦截器
service.interceptors.request.use(
    (config) => {
        // do something
        return config;
    },
    (error) => {
        Promise.reject(error);
    }
);

// 响应拦截器
service.interceptors.response.use(
    async (response) => {
        // do something
        return response.data
    },
    (error) => {
        // do something
        return Promise.reject(error);
    }
);

export default service;


# main.ts 全局挂载
import  api from '@/api/index.ts'
const myApp = createApp(App)
myApp.config.globalProperties.$axios = api;



router

pnpm i vue-router --save

// router/index.ts
import { createRouter, createWebHistory } from 'vue-router';

const routes = [
    {
        path: '/login',
        name: 'Login',
        meta: {
            title: '登录',
            keepAlive: true,
            requireAuth: false
        },
        component: () => import('@c/Login.vue')
    },
    {
        path: '/',
        name: 'Index',
        meta: {
            title: '首页',
            keepAlive: true,
            requireAuth: true
        },
        component: () => import('@c/home/Index.vue')
    }
]

const router = createRouter({
    history: createWebHistory(),
    routes
});
export default router;

// mmain.ts  内使用


编写vite.confg.ts 配置 路径别名


# 安装
pnpm add  @types/node -D

# 添加
import { resolve } from 'path'

export default defineConfig(async () => ({
....
....
  resolve: {
    alias: {  // 这里就是需要配置resolve里的别名
      "@": resolve(__dirname, "./src"), // resolve 记得引入
      "@assets": resolve(__dirname, "./src/assets"), // resolve 记得引入
      "@view": resolve(__dirname, "./src/view"), // resolve 记得引入
      "@c": resolve(__dirname, "./src/components"), // path记得引入

      // 'vue': 'vue/dist/vue.esm-bundler.js' // 定义vue的别名,如果使用其他的插件,可能会用到别名
    },
  },

})

最后项目依赖:

“dependencies”: {
“@quasar/extras”: “^1.16.8”,
“@tauri-apps/api”: “^1.5.1”,
“axios”: “^1.6.2”,
“pinia”: “^2.1.7”,
“quasar”: “^2.14.0”,
“vue”: “^3.3.4”,
“vue-router”: “^4.2.5”
},

前端目录:

在这里插入图片描述

最后vite.config.ts文件

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import { quasar, transformAssetUrls } from '@quasar/vite-plugin'
import { resolve } from 'path'

export default defineConfig(async () => ({
  plugins: [
      vue({
        template: { transformAssetUrls }
      }),
    quasar({
      sassVariables: 'src/quasar-variables.sass'
    })
  ],
  resolve: {
    alias: {  // 这里就是需要配置resolve里的别名
      "@": resolve(__dirname, "./src"), // path记得引入
      "@assets": resolve(__dirname, "./src/assets"), // path记得引入
      "@view": resolve(__dirname, "./src/view"), // path记得引入
      "@c": resolve(__dirname, "./src/components"), // path记得引入

      // 'vue': 'vue/dist/vue.esm-bundler.js' // 定义vue的别名,如果使用其他的插件,可能会用到别名
    },
  },


  // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build`
  //
  // 1. prevent vite from obscuring rust errors
  clearScreen: false,
  // 2. tauri expects a fixed port, fail if that port is not available
  server: {
    port: 1420,
    strictPort: true,
  }
}));

我的博客园:https://www.cnblogs.com/MnysLjj/p/17862788.html
下一节:与Rust互动

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tauri 中,`App::handle`、`tauri::Builder::default()` 和 `tauri::WindowBuilder::new` 是三个重要的 API,它们分别用于处理应用程序的事件、构建 Tauri 应用程序和创建窗口。 ### App::handle `App::handle` 方法用于处理 Tauri 应用程序的事件。Tauri 是一个基于 Rust 和 Web 技术栈的框架,运行在基于 Chromium 内核的 WebView 中。`App::handle` 方法会监听应用程序的事件,例如启动、关闭、最小化、最大化等,并且可以根据这些事件来执行相应的操作。 以下是一个简单的示例,使用 `App::handle` 方法监听应用程序的启动事件,并在启动时打印一条消息: ```rust fn main() { tauri::Builder::default() .invoke_handler(tauri::generate_handler![my_custom_handler]) .run(tauri::generate_context!()) .expect("failed to run app"); } #[tauri::command] fn my_custom_handler() { println!("My Tauri app has started!"); } ``` ### tauri::Builder::default() `tauri::Builder::default()` 方法用于构建 Tauri 应用程序。在构建 Tauri 应用程序时,可以定义应用程序的窗口、菜单、打印机、文件选择器等属性。使用 `tauri::Builder::default()` 方法可以获取一个默认的构建器实例,你可以在此基础上进行进一步的配置。 以下是一个简单的示例,使用 `tauri::Builder::default()` 方法构建一个窗口: ```rust fn main() { tauri::Builder::default() .invoke_handler(tauri::generate_handler![my_custom_handler]) .run(tauri::generate_context!()) .expect("failed to run app"); } #[tauri::command] fn my_custom_handler() { let window = tauri::WindowBuilder::new() .title("My Tauri App") .build() .unwrap(); window.show().unwrap(); } ``` ### tauri::WindowBuilder::new `tauri::WindowBuilder::new` 方法用于创建窗口。在创建窗口时,可以定义窗口的标题、大小、位置、图标等属性。使用 `tauri::WindowBuilder::new` 方法可以获取一个默认的窗口构建器实例,你可以在此基础上进行进一步的配置。 以下是一个简单的示例,使用 `tauri::WindowBuilder::new` 方法创建一个窗口: ```rust fn main() { tauri::Builder::default() .invoke_handler(tauri::generate_handler![my_custom_handler]) .run(tauri::generate_context!()) .expect("failed to run app"); } #[tauri::command] fn my_custom_handler() { let window = tauri::WindowBuilder::new() .title("My Tauri App") .width(800) .height(600) .build() .unwrap(); window.show().unwrap(); } ``` 以上三个 API 是 Tauri 应用程序开发中的重要组成部分,通过它们可以构建 Tauri 应用程序,并且对应用程序的事件进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值