electron+vue3+vite

1.创建工程

开源的electron构建脚手架:GitHub - electron-vite/electron-vite-vue: 🥳 Really simple Electron + Vite + Vue boilerplate.

1.使用命令创建工程(node版本在16上)

npm create electron-vite

2.项目目录结构

 

2.安装依赖

1.配置镜像

# 指定 npm 国内淘宝镜像
npm config set registry=https://registry.npmmirror.com/
# 指定 Electron 的国内淘宝镜像地址
npm config set electron_mirror=https://npmmirror.com/mirrors/electron/

2.安装依赖

npm i 

3.运行工程

npm run dev 

4.打包工程

electron打包需要打包插件 

npm i electron-builder -D

在package.json中新增打包命令  

"electron:build": "vite build & electron-builder build --config electron-builder.json5" 

 运行打包命令

npm run electron:build 

其他打包方式 在package.json中新增打包命令  

"build": "vue-tsc --noEmit && vite build",
"package": "electron-builder"

 运行打包命令

npm run build
npm run package

配置项

 1.vite.config.ts 打包样例模板

        

import { defineConfig } from 'vite'
import { resolve } from "path"; // 主要用于alias文件路径别名
import vue from '@vitejs/plugin-vue'
import vueJsx from "@vitejs/plugin-vue-jsx"; // jsx插件
export default defineConfig({
    plugins: [vue(), vueJsx()], // 配置需要使用的插件列表
    base: './',   // 在生产中服务时的基本公共路径
    publicDir: './public',  // 静态资源服务的文件夹, 默认"public" 
    resolve: {
        alias: {
            "@": resolve(__dirname, './src'), // 这里是将src目录配置别名为 @ 方便在项目中导入src目录下的文件
        }
    },
    // 引入第三方的配置,强制预构建插件包
    optimizeDeps: {
        include: ['echarts', 'axios', 'mockjs'],
    },
    css: {
        preprocessorOptions: {
            scss: {
                charset: false, // 关闭编译时 字符编码 报错问题
                javascriptEnabled: true,
                additionalData: `@import "${resolve(__dirname, 'src/assets/css/var.scss')}";`,
            },
        },
    },
    json: {
        //是否支持从 .json 文件中进行按名导入 
        namedExports: true,
        //若设置为 true 导入的json会被转为 export default JSON.parse("..") 会比转译成对象字面量性能更好 
        stringify: false,
    },
    //继承自 esbuild 转换选项,最常见的用例是自定义 JSX 
    esbuild: {
        jsxFactory: "h",
        jsxFragment: "Fragment",
        jsxInject: `import Vue from 'vue'`
    },
    // 打包配置
    build: {
        target: 'modules', // 设置最终构建的浏览器兼容目标。modules:支持原生 ES 模块的浏览器
        outDir: 'dist', // 指定输出路径
        assetsDir: 'assets', // 指定生成静态资源的存放路径
        assetsInlineLimit: 4096, // 小于此阈值的导入或引用资源将内联为base64编码,设置为0可禁用此项。默认4096(4kb)
        cssCodeSplit: true, // 启用/禁用CSS代码拆分,如果禁用,整个项目的所有CSS将被提取到一个CSS文件中,默认true
        sourcemap: false, // 构建后是否生成 source map 文件
        minify: 'terser', // 混淆器,terser构建后文件体积更小
        write: true,   //设置为 false 来禁用将构建后的文件写入磁盘  
        emptyOutDir: true,  //默认情况下,若 outDir 在 root 目录下,则 Vite 会在构建时清空该目录。  
        chunkSizeWarningLimit: 500,  //chunk 大小警告的限制 
        terserOptions: {
            compress: {
                drop_console: false, // 打包时不删除console.log日志.否则无法调试
                drop_debugger: true,
            },
        }   //去除 console debugger
    },
    // 本地运行配置,及反向代理配置
    server: {
         port: 8888,
         cors: true, // 允许跨域
         hmr: true, // 开启热更新
        open: true, // 在服务器启动时自动在浏览器中打开应用程序
        strictPort: false, // 设为 false 时,若端口已被占用则会尝试下一个可用端口,而不是直接退出
        https: false, // 是否开启 https
        cors: true, // 为开发服务器配置 CORS。默认启用并允许任何源
        // proxy: { // 为开发服务器配置自定义代理规则
        //     // 字符串简写写法 
        //     '/foo': 'http://192.168.xxx.xxx:xxxx', 
        //     // 选项写法
        //     '/api': {
        //         target: 'http://192.168.xxx.xxx:xxxx', //代理接口
        //         changeOrigin: true,
        //         rewrite: (path) => path.replace(/^\/api/, '')
        //     }
        // }
    },
 base: './', // 打包路径
})

 简易模板

import { defineConfig } from 'vite'
import path from 'node:path'
import electron from 'vite-plugin-electron/simple'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  plugins: [
    vue(),
    electron({
      main: {
        entry: 'electron/main.ts',
      },
      preload: {
        input: path.join(__dirname, 'electron/preload.ts'),
      },
      renderer: process.env.NODE_ENV === 'test'
        ? undefined
        : {},
    }),
  ],
  server: {
    port: 8888,
    cors: true, // 允许跨域
    hmr: true, // 开启热更新
  },
  base: './', // 打包路径
})

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Electron是一个开源框架,用于构建跨平台的桌面应用程序,结合Vue.jsVite(一个快速的前端构建工具)可以让您创建现代、高性能的Web视图层,嵌入到 Electron 应用中。RTSP(Real-Time Streaming Protocol)是一种网络协议,用于实时视频流传输。 要在 Electron + Vue3 + Vite 中实现 RTSP 播放,您可以按照以下步骤操作: 1. **安装依赖**: - 安装 `vue-video-player` 或类似的库,它提供了处理媒体流的功能,如 `vue-streaming-api`。 - 如果需要,安装支持 RTSP 解码的库,比如 `fluent-ffmpeg` 或 `mediasoup-client`。 ```bash npm install vue-video-player fluent-ffmpeg --save ``` 2. **设置配置**: 在项目中创建一个配置文件(例如 `config.js`),用于管理 RTSP 地址等信息。 ```javascript export default { rtspsource: 'rtsp://your_rtspserver_url/stream' } ``` 3. **在 Vue 组件中使用**: 使用 Vue 插件或组件内的方法加载并播放 RTSP 流。例如,使用 `vue-video-player`: ```html <template> <div id="player"> <VideoPlayer v-bind:src="config.rtspsource"></VideoPlayer> </div> </template> <script> import VideoPlayer from 'vue-video-player'; import { defineComponent, ref } from 'vue'; import config from '@/config'; export default defineComponent({ components: { VideoPlayer, }, setup() { const player = ref(null); // 当组件挂载后尝试播放 mounted() { player.value.play(); } return { player, }; }, }); </script> ``` 4. **错误处理**: 添加错误处理代码来捕获并处理播放过程中可能出现的问题,如连接失败、编码不兼容等。 5. **优化和调整**: 根据应用需求可能还需要对视频质量、缓冲策略等进行优化,并确保在不同平台上运行稳定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值