当前位置: 首页 > news >正文

【Electron】electron-vue 借助 element-ui UI 库助力桌面应用开发

前面文章我们讲过 electron 让可以用 HTML、JS、CSS 开发桌面应用程序。而 electron-vue 是一个结合了 electron 与 vue 的套件。这样我们就能方便地使用 vue 快速开发桌面应用。但是,vue 只是在 js 这层面做了大量的便捷的操作。对 UI 并未过多涉及。此时如果您在开发过程中自己实现一套统一主题的 UI 视觉效果,借助成熟的 element-ui 或 bootstrap 肯定是最好的。

本文将介绍怎么让 electron-vue 与 element-ui 结合更加快捷开发我们的桌面应用程序。

一、安装 element-ui

这个安装非常简单。
如下命令:

> npm i element-ui -S

记住这个命令是在 electron-vue 创建的项目根目录安装噢~

二、使用 element-ui

安装成功之后,我们现在就把它用到我们的 electron-vue 项目中。

1)main.js 文件加载 element-ui

打开 src/renderer/man.js 加载 element-ui

......
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)
......

main.js 加载之后的完整代码示例:

import Vue from 'vue'
import axios from 'axios'import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'import App from './App'
import router from './router'
import store from './store'Vue.use(ElementUI)if (!process.env.IS_WEB) Vue.use(require('vue-electron'))
Vue.http = Vue.prototype.$http = axios
Vue.config.productionTip = false/* eslint-disable no-new */
new Vue({components: { App },router,store,template: '<App/>'
}).$mount('#app')

在 main.js 加载 element-ui 之后,您可以在任何 .vue 文件中直接使用 element-ui 提供的组件。

2)使用 element-ui 组件

为了能快速验证您安装的 element-ui 是否生效。我们可以用 src/renderer/App.vue 来进行演示。

打开 App.vue 加入以下代码:

<el-row><el-button>默认按钮</el-button><el-button type="primary">主要按钮</el-button><el-button type="success">成功按钮</el-button><el-button type="info">信息按钮</el-button><el-button type="warning">警告按钮</el-button><el-button type="danger">危险按钮</el-button>
</el-row>

注:此代码就定要加在 <template>...</template> 里面。

此时我们可以通过yarn run devnpm run dev 查看效果。此时会看到显示一组按钮。

三、编译安装包

我们通过 yarn run dev 这种形式开发能正常显示结果。但是它存在一个问题:通过 electron-packageelectron-builder 编译成安装包的时候会导致界面空白一片。

终于原因是 electron-vue 默认的组件里面只有 vue 才在编译白名单内。如果使用了第三方的的类库,一定要加到白名单。

修改:./.electron-vue/webpack.renderer.config 脚本。脚本如下代码:

let whiteListedModules = ['vue']

更改为:

let whiteListedModules = ['vue', 'element-ui']

如果以后加载了其他的跟页面渲染相关的类库,都要在这里添加到白名单。否则,通过 yarn run buildnpm run build 生成的安装包都将无法正常渲染界面出现空白的情况。

四、示例欣赏

以下示例就是我自己开发的一小玩意残次器。
它包含:

  • electron-vue
  • element-ui UI 库
  • electron-package 打包
  • 自定义系统托盘图标以及托盘图标右键菜单
  • 自定义系统标题栏(最小化/最大化/关闭)

注:在修改 src/main/index.js 的时候一定要注意开发环境与编译环境的处理。比如,我的处理方式如下:

if (process.env.NODE_ENV !== 'development') {// 系统托盘右键菜单var trayMenuTemplate = [{label: '设置',click: function () {} //打开相应页面},{label: '意见反馈',click: function () {}},{label: '帮助',click: function () {}},{label: '关于我们',click: function () {}},{label: '退出',click: function () {app.quit();}}];trayIcon = path.join(__dirname, 'static/app.ico');appTray  = new Tray(trayIcon);// 图标的上下文菜单const contextMenu = Menu.buildFromTemplate(trayMenuTemplate);// 设置此托盘图标的悬停提示内容appTray.setToolTip("It助手\n您的开发小帮手");// 设置此图标的右键菜单appTray.setContextMenu(contextMenu);}

关键代码:

if (process.env.NODE_ENV !== 'development') {
// code ...
}

通过 yarn run dev 的时候就是开发环境。通过 yarn run build 的时候就是编译环境。上面就是判断当前环境不是开发环境的时候生效。因为,在开发环境有很多如果底层支持的功能(系统托盘图标)是无法在开发环境使用的。所以,我们要做环境区分。

xxx.png


喜欢的朋友记得点赞、收藏、关注哦!!!

相关文章:

【Electron】electron-vue 借助 element-ui UI 库助力桌面应用开发

前面文章我们讲过 electron 让可以用 HTML、JS、CSS 开发桌面应用程序。而 electron-vue 是一个结合了 electron 与 vue 的套件。这样我们就能方便地使用 vue 快速开发桌面应用。但是&#xff0c;vue 只是在 js 这层面做了大量的便捷的操作。对 UI 并未过多涉及。此时如果您在开…...

《信息论与编码课程笔记》——信源编码(1)

目录 一、信源编码基本概念 1. 定义与目的 2. 编码示例 3. 编码分类 4. 唯一可译码的判断标准 5. 编码评价指标 二、香农第一定理&#xff08;无失真可变长信源编码定理&#xff09; 1. 核心内容 2. 关键概念与指标 3. 数据压缩的本质 4. 例子与启示 5. 定理的意义…...

2022年8月,​韩先超对中移信息进行微服务架构原理(Docker+k8s+DevOps+Go等)培训

2022年8月&#xff0c;​韩先超对中移信息进行微服务架构原理&#xff08;Dockerk8sDevOpsGo等&#xff09;培训 2022年8月&#xff0c;在企业数字化转型和云原生架构加速演进的背景下&#xff0c; 中移信息技术有限公司特别邀请云原生与DevOps领域专家 韩先超老师&#xff0c…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】8.4 数据故事化呈现(报告结构设计/业务价值提炼)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 8.4 数据故事化呈现&#xff1a;从报告结构到业务价值的深度融合一、数据故事化的核心价值体系&#xff08;一&#xff09;报告结构设计的黄金框架1. 业务场景锚定&#xff…...

Docker 核心目录结构

1. Docker 核心目录结构 数据存储目录 默认根目录&#xff1a;/var/lib/docker Docker 所有运行时数据&#xff08;镜像、容器、卷、网络配置等&#xff09;的默认存储位置。 bash 复制 下载 # 查看 Docker 数据根目录 docker info | grep "Docker Root Dir" # 输出…...

【工具推荐】Code2Prompt

DeepWiki工具可以帮我们快速理解 GitHub 项目&#xff0c;简直是理解陌生开源项目的利器&#xff01; 但是&#xff0c;它有个小小的“遗憾”——只能解析在线的 GitHub 项目。 如果是本地项目怎么办&#xff0c;还要特意上传&#xff0c;no&#xff0c;code2prompt 就是一款…...

OpenCV定位地板上的书

任务目标是将下面的图片中的书本找出来&#xff1a; 使用到的技术包括&#xff1a;转灰度图、提取颜色分量、二值化、形态学、轮廓提取等。 我们尝试先把图片转为灰度图&#xff0c;然后二值化&#xff0c;看看效果&#xff1a; 可以看到&#xff0c;二值化后&#xff0c;书的…...

Spring Cloud:概述,服务注册和服务发现,多机部署和负载均衡

什么是微服务 就是将一个大型的应用程序拆分成多而小的独立的服务模块&#xff0c;每个服务模块围绕某个业务功能建立&#xff0c;具有独立的数据库&#xff0c;服务栈&#xff0c;并通过轻量级的通信协议进行交互。 单体架构 就是将所有的业务和功能都打包在一个jar包中&…...

Linux的基础开发工具

目录 前言&#xff1a; 1、包管理器yum 1.1 软件包的依赖 1.2 镜像源 1.3 查找/安装/卸载软件 2、编辑器vim 2.1 命令模式(默认) 2.1.1 撤销与反撤销 2.1.2 光标定位 2.1.3 复制&&剪切(删除)&&粘贴 2.1.4 替换 2.1.5 插入模式 2.1.6 V-Block模式 …...

解锁跨平台开发的新时代——Compose Multiplatform

解锁跨平台开发的新时代——Compose Multiplatform 在当今移动和桌面应用程序开发领域,跨平台解决方案是开发者们梦寐以求的工具。而由JetBrains打造的Compose Multiplatform正是这样一款现代UI框架,它基于Kotlin技术,为开发者构建高性能且美观的用户界面提供了极大的便利和…...

键盘固件刷写详解:Bootloader

键盘固件刷写详解&#xff1a;从入门到精通 引言 作为一名机械键盘爱好者&#xff0c;相信大家都曾经面临过刷写固件的问题。无论是想要自定义按键功能&#xff0c;还是升级键盘的固件&#xff0c;掌握刷写技巧都是非常必要的。本文将全面介绍不同类型的引导加载程序&#xf…...

网络原理初识

本来想从网络的发展史开始写,之后再写网络的定义啥的,但快写完了才发现,这不课本教材吗,没劲,遂弃之,重撰,删芜就简.写点我认为,对程序员来说真正有用的东西 目录 IP地址 概念 格式 特殊地址 端口号 概念 格式 协议 概念 知名协议的默认端口 五元组 协议分层 OS…...

PVP鼠标推荐(deepseek)

下面有不懂的自行百度查找&#x1f44d; ❤️ 以下是几款在 双击性能&#xff08;DBC&#xff09; 和 拖拽点击&#xff08;DC&#xff09; 方面表现优秀的游戏鼠标推荐&#xff0c;结合了硬件性能、微动寿命以及玩家口碑&#xff1a; 1. 罗技 G102/G203 Lightsync 特点&#…...

Navee滑板车强势登陆中国,以智能科技重塑城市出行新风尚

当科技与潮流邂逅&#xff0c;城市出行迎来了一场前所未有的变革。全球智能出行领域的先锋品牌Navee&#xff0c;携其多款旗舰滑板车产品——ST3、GT3、V系列等&#xff0c;正式进军中国市场。凭借“颜值、性能、安全、智能”四大核心优势&#xff0c;Navee正以破竹之势重新定义…...

【Linux网络】网络命令

Ping Ping命令是一种用于测试网络连接状况的工具&#xff0c;在Windows、Linux、macOS等操作系统中都可以使用。以下是其详细介绍&#xff1a; 它主要通过向目标主机发送Internet控制报文协议&#xff08;ICMP&#xff09;的回声请求&#xff08;Echo Request&#xff09;数据…...

【JS逆向基础】面向对象

1&#xff0c;OOP编程思想 面向对象编程是在面向过程编程的基础上发展来的&#xff0c;它比面向过程编程具有更强的灵活性和扩展性。面向对象编程是程序员发展的分水岭&#xff0c;很多初学者会因无法理解面向对象而放弃学习编程。 面向对象编程(Obiect:oriented Programming…...

# 如何使用OpenCV进行发票的透视变换和二值化处理

如何使用OpenCV进行发票的透视变换和二值化处理 引言 在自动化处理发票和其他文档时&#xff0c;图像预处理是一个关键步骤&#xff0c;它可以帮助提高OCR&#xff08;光学字符识别&#xff09;的准确性。透视变换用于校正图像中的透视失真&#xff0c;而二值化处理则可以简化…...

NetSuite 如何得到所有Item最近一次采购订单的货品单价?

我们知道&#xff0c;如果取Item主数据的数据&#xff0c;得到的是很多相关transaction的Item 货品平均价值&#xff1b;如果只想得到最近一次采购订单上的采购单价&#xff0c;主数据上应该无法直接得到&#xff0c;那该如何处理&#xff1f;我们可以利用Saved Search来拉取相…...

[5-2] 对射式红外传感器计次旋转编码器计次 江协科技学习笔记(38个知识点)

1、 2、 3、这些缩写通常出现在嵌入式系统或微控制器的上下文中&#xff0c;它们各自有不同的功能&#xff1a; • RCC&#xff1a;Reset and Clock Control&#xff08;复位和时钟控制&#xff09;。它负责管理微控制器的时钟系统&#xff0c;包括时钟源的选择、时钟频率的设置…...

阿里云 golang 一面

消息队列 分布式文件系统 Linux的虚拟网络设备 TCP SSL/TLS 场景&#xff1a;对于打车场景&#xff0c;如何设计一个系统来处理并发打车请求&#xff1f; 设计一个处理并发打车请求的系统需要考虑多个方面&#xff0c;包括系统架构、数据存储、负载均衡和实时性。以下是一个基…...

【C++ Qt】多元素控件(ListWidget、TableWidget、TreeWidget)

每日激励&#xff1a;“不设限和自我肯定的心态&#xff1a;I can do all things。 — Stephen Curry” 绪论​&#xff1a; 本章将通过代码示例详细介绍了Qt中QListWidget、QTableWidget和QTreeWidget三种多元素控件的使用方法与核心功能&#xff0c;涵盖列表的增删操作、表格…...

排序算法-冒泡排序

冒泡排序一种简单的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是说该数列已经排序完成。 这个算法的名字由来是因为元素会经由交换慢…...

C++ 工具链与开发实践:构建安全、高效与创新的开发生态

引言 在 C 的技术演进中&#xff0c;工具链的革新与开发实践的迭代始终是推动语言生命力的核心动力。从内存安全的攻防体系到嵌入式设备的能效优化&#xff0c;从跨平台开发的降本增效到开发者社区的生态构建&#xff0c;C 正通过工具链与方法论的双重升级&#xff0c;应对复杂…...

uni-pages-hot-modules插件:uni-app的pages.json的模块化及模块热重载

uni-pages-hot-modules uni-app的pages.json的模块化及模块热重载 uni-app的pages.json的模块化及模块热重载 解决uni-app的pages.json无法模块化的问题,并且解决模块热重载和缓存的问题 安装 npm i uni-pages-hot-modules -Suni-app vite版本(vue3)示例项目 uni-app webpa…...

【WEB3】区块链、隐私计算、AI和Web3.0——数据民主化(1)

区块链、隐私计算、AI&#xff0c;是未来Web3.0至关重要的三项技术。 1.数据民主化问题 数据在整个生命周期&#xff08;生产、传输、处理、存储&#xff09;内的隐私安全&#xff0c;则是Web3.0在初始阶段首要解决的问题。 数据民主化旨在打破数据垄断&#xff0c;让个体能…...

从0到1:用Lask/Django框架搭建个人博客系统(4/10)

摘要&#xff1a;本文深入解析了使用Lask和Django构建个人博客系统的全过程。从技术选型的考量&#xff0c;突出Lask的轻量灵活与Django的强大功能&#xff0c;到开发环境搭建、项目初始化&#xff0c;再到核心功能实现如文章管理、用户认证与权限控制&#xff0c;详细阐述了开…...

探索 C++23 的 views::cartesian_product

文章目录 一、背景与动机二、基本概念与语法三、使用示例四、特点与优势五、性能与优化六、与 P2374R4 的关系七、编译器支持八、总结 C23 为我们带来了一系列令人兴奋的新特性&#xff0c;其中 views::cartesian_product 是一个非常实用且强大的功能&#xff0c;它允许我们轻…...

微软拼音自定义词库方法

1.准备文件input.txt 令狐冲 郭靖2.使用python转成微软拼音需要的格式 from xpinyin import Pinyin # pip install xpinyin -i https://pypi.tuna.tsinghua.edu.cn/simplep Pinyin()with open(input.txt, r, encodingutf-8) as infile:with open(output.txt, w, encodingutf…...

SQLite3常用语句汇总

SQLite 命令行工具&#xff08;sqlite3 shell&#xff09; 中的内置命令 命令作用说明.open filename.db打开或创建一个 SQLite 数据库文件.tables列出当前数据库中的所有表.schema [table]查看某个表或所有表的建表语句&#xff08;DDL&#xff09;.headers ON/OFF开启或关闭…...

数据库设计三范式

第一范式 (1NF) 每个表中的每一列都是原子值 每个表中的每一行都是唯一的 下面这个表格就是不符合第一范式的例子&#xff1a;因为学时数能够拆分为讲课和实验。所以他并不是每一列都是原子值。 不仅要考虑列是否是原子值&#xff0c;还需要考虑每列的值是否可拆分。 第二范…...

GoWeb开发

学习目标&#xff1a; 本篇要达到的目的&#xff0c;能为后续复习提供极大便利。 &#xff08;当我写下本篇博客时&#xff0c;已复习3遍&#xff09; 一、网络通信概述 &#xff08;为本篇基础核心内容&#xff09; 1、什么是网络通信&#xff1f; 网络通信是指不同设备&…...

(7)Nokov 室内光学跟踪系统

文章目录 前言 7.1 所需硬件 7.2 Nokov 系统设置 7.3 配置旋翼机 7.4 启动 Nokov 模块 7.5 MAVProxy 准备 7.6 测试飞行 7.7 参数说明 前言 本文将介绍如何通过 Nokov 运动捕捉系统向旋翼机传输姿势信息。联系方式&#xff1a;NOKOV | Optical Motion Capture System。…...

Linux Shell编程和循环语句

一.for循环语句 1.for语句的结构2.for循环语句实例①根据姓名列表来批量创建多个用户②根据IP地址列表检查主机状态 二.使用while循环语句1.while语句结构2.while循环语句应用①批量添加规律编号用户②猜价格游戏 三 until循环语句1.until语句结构① 计算1-50的和 1.for语句的结…...

Java后端程序员学习前端之JavaScript

1.什么是JavaScript 1.1.概述 JavaScript是一门世界上最流行的脚本语言javaScript 一个合格的后端人员&#xff0c;必须要精通JavaScript 1.2.历史 JavaScript的起源故事-CSDN博客 2.快速入门 2.1.引入JavaScript 1.内部标签 <script>//.......</script> --…...

redis多路复用IO模型 以及 6.0引入的多线程模型

redis为什么选择单线程 采用多线程的话&#xff0c;会出现上下文切换的开销采用多线程&#xff0c;会带来共享资源的竞争控制&#xff0c;比如多个线程同时访问同一个资源&#xff08;键值&#xff09;时&#xff0c;需要额外的手段来保障共享资源的正确性&#xff0c;会带来额…...

101alpha_第6个

第6个alpha (-1 * correlation(open, volume, 10)) 这个就是看这两个相似性。10天之内的 如果结果为正且数值较大&#xff0c;投资者可能会认为在开盘价上涨时成交量萎缩&#xff0c;市场上涨动力不足&#xff0c;可能是卖出信号&#xff1b;反之&#xff0c;开盘价下跌时成交…...

crawl4ai能替代scrapy等传统爬虫框架吗?

传统爬虫框架就像拿着渔网在数字海洋中捕鱼——虽然能捞到东西&#xff0c;但面对现代网站的复杂性时常常"漏网之鱼"满天飞。以Scrapy为代表的工具存在三大致命短板&#xff1a;首先是JavaScript盲区&#xff0c;对动态渲染内容束手无策&#xff0c;就像试图用收音机…...

Sui Basecamp 2025 全栈出击

“我们不仅仅是在构建一个 L1&#xff0c;我们是在重建互联网。” — — Mysten Labs 首席产品官 Adeniyi Abiodun 本届 Sui Basecamp 汇聚了 Web3 领域的建设者、合作伙伴和思想领袖&#xff0c;为期两天&#xff0c;不仅展示了 Sui 的未来&#xff0c;也展现了去中心化互联网…...

计算机体系架构-----设计模式:状态模式(从程序员加班问题切入)

文章目录 1.梦开始的地方2.代码1.0版本3.代码2.0版本4.代码3.0版本5.梦结束的地方 最近在学习这个专业课里面的体系结构这门课程&#xff0c;作为专业里面的一门基础课&#xff0c;这个课程里面主要讲解的就是软件的设计思想&#xff0c;一些历程之类的&#xff0c;包括了面向对…...

【C/C++】RPC与线程间通信:高效设计的关键选择

文章目录 RPC与线程间通信&#xff1a;高效设计的关键选择1 RPC 的核心用途2 线程间通信的常规方法3 RPC 用于线程间通信的潜在意义4 主要缺点与限制4.1 缺点列表4.2 展开 5 替代方案6 结论 RPC与线程间通信&#xff1a;高效设计的关键选择 在C或分布式系统设计中&#xff0c;…...

数据结构之串

一、串的定义与基本概念 1. 串的定义 定义&#xff1a;串是由零个或多个字符组成的有限序列&#xff0c;记作 s"a1​a2​…an​"&#xff0c;例如 "data structure"、"123" 等。 空串&#xff1a;无任何字符&#xff0c;长度为 0&#xff0c;…...

基于腾讯云MCP广场的AI自动化实践:爬取小红书热门话题

基于腾讯云MCP广场的AI自动化实践&#xff1a;爬取小红书热门话题 我正在参加Trae「超级体验官」创意实践征文&#xff0c;本文所使用的 Trae 免费下载链接&#xff1a;www.trae.com.cn/?utm_source… &#x1f50e; 背景 在人工智能快速发展的时代&#xff0c;AI技术不仅重…...

AI领域的MCP(Model-Centric Paradigm)

1. 什么是MCP&#xff08;Model-Centric Paradigm&#xff09;&#xff1f; MCP&#xff08;Model-Centric Paradigm&#xff09;是人工智能开发中的一种核心理念&#xff0c;强调以模型的优化与改进作为主要驱动因素来提升AI系统的表现。在MCP模式下&#xff0c;开发者专注于…...

裸辞8年前端的面试笔记——JavaScript篇(一)

裸辞后的第二个月开始准备找工作&#xff0c;今天是第三天目前还没有面试&#xff0c;现在的行情是一言难尽&#xff0c;都在疯狂的压价。 下边是今天复习的个人笔记 一、事件循环 JavaScript 的事件循环&#xff08;Event Loop&#xff09;是其实现异步编程的关键机制。 从…...

力扣刷题Day 41:除自身以外数组的乘积(238)

1.题目描述 2.思路 方法1&#xff1a;搞一个数组存放各元素之前所有数的乘积&#xff08;头为1&#xff09;&#xff0c;再搞一个数组存放各元素之后所有数的乘积&#xff08;尾为1&#xff09;。 方法2&#xff1a;上面的方法是很好理解的&#xff0c;在此基础上应该如何优化…...

金仓数据库征文-金仓KES数据同步优化实践:逻辑解码与增量同步

目录 一.同步场景与方案选型 二.同步环境配置 1.前置条件验证 2.逻辑解码配置 三.同步实施与问题排查 1.结构映射规则 2.增量数据捕获 3.数据一致性校验 四.性能调优实践 1.同步线程优化 2.批量提交优化 3.资源监控指标 五.典型场景解决方案 1.双向同步冲突处理 …...

【前端基础】9、CSS的动态伪类(hover、visited、hover、active、focus)【注:本文只有几个粗略说明】

一、什么是伪类 选择器的一种&#xff0c;用于选择处于特定状态的元素。 最常见的现象&#xff1a;鼠标放在某些文字上面&#xff0c;文字就会加上颜色。 鼠标没放上去之前&#xff1a; 鼠标放上去之后&#xff1a; 二、动态伪类 图片来源&#xff08;链接文章也有其他伪…...

企业开发平台大变革:AI 代理 + 平台工程重构数字化转型路径

在企业数字化转型的浪潮中&#xff0c;开发平台正经历着前所未有的技术革命。从 AST&#xff08;抽象语法树&#xff09;到 AI 驱动的智能开发&#xff0c;从微服务架构到信创适配&#xff0c;这场变革不仅重塑了软件开发的底层逻辑&#xff0c;更催生了全新的生产力范式。本文…...

ZooKeeper工作机制与应用场景

目录 1.1、概述1.2、选举机制1.2.1、选举触发条件1.2.2、选举规则1.2.3、选举过程详解 1.3、数据同步机制1.3.1、正常同步1.3.2、宕机同步 1.4、客户端常用命令1.5、应用场景1.5.1、配置管理1.5.2、命令服务1.5.3、分布式锁服务1.5.4、集群管理1.5.5、分布式ID1.5.6、分布式协调…...

VR制作软件用途(VR制作软件概述)

虚拟现实&#xff08;VR&#xff09;制作软件作为现代科技的瑰宝&#xff0c;正以独特的魅力重塑各行各业。 通过构建三维虚拟环境&#xff0c;这些软件提供了前所未有的沉浸式体验&#xff0c;还推动了技术革新与产业升级。本文将探讨VR制作软件的主要用途&#xff0c;并重点…...