【混合开发】CefSharp+Vue桌面应用程序开发

devtools/2025/1/18 11:10:12/

CefSharpVue_1">为什么选择CefSharp+Vue桌面应用程序

CefSharp 基于 Chromium Embedded Framework (CEF) ,它可以将 Chromium 浏览器的功能嵌入到 .NET 应用程序中。通过 CefSharp,开发者可以在桌面应用程序中集成 Web 技术,包括 HTML、JavaScript、CSS 等,来实现丰富的用户界面和交互体验。大厂产物,稳定性高。

Vue.js 渐进式 JavaScript 框架,专注于构建用户界面的前端框架。Vue 通过组件化的开发方式,易于集成和扩展,使开发者能够快速构建响应式、动态的 Web 应用。

CefSharpVue.js 结合使用,可以通过桌面应用嵌入 Web 技术实现现代的用户界面。CefSharp 相当于一个浏览器引擎,用来显示 Vue.js 渲染的页面。这样,既能享受桌面应用程序的性能,又能利用 Web 技术来构建交互性强、富有表现力的界面。类似于用自定义化浏览器实现桌面应用程序

优势:

  1. 提升桌面应用的用户体验:借助 Vue.js 的现代化前端技术,开发者能够创建更具吸引力和互动性的桌面应用。
  2. 增强开发的灵活性与效率:CefSharp 提供强大的桌面功能,而 Vue.js 提供快速开发界面的能力,两者结合可以显著提升开发效率。
  3. 促进跨平台桌面应用的开发:通过 Vue.js 与 CefSharp,开发者可以更轻松地创建支持多平台的桌面应用,尤其是在需要集成 Web
    功能时。

两种选择

  1. 使用CefSharp加载公网地址,实现内嵌web页面。
  2. 使用CefSharp加载Vue本地包,实现高定制化应用程序。
实现方式加载公网地址加载 Vue 本地包
数据来源从互联网上加载(通过 URL)从本地文件系统加载(通过文件路径)
网络依赖需要稳定的网络连接,依赖公网服务器无需网络连接,直接通过本地文件加载
资源更新资源更新需要更新服务器上的 Web 页面资源更新只需要重新构建本地 Vue 项目并替换本地文件
开发调试可以直接在 Web 环境中调试,使用浏览器开发工具调试需要通过本地构建工具调试 Vue 项目
性能开销加载速度依赖于服务器和网络条件加载速度较快,无需网络请求,完全由本地文件提供支持
适用场景用于需要动态更新且依赖外部 Web 服务的应用用于本地化、独立于网络的桌面应用
交互性适合涉及到网络数据交换的场景与本地功能的交互性较强,适合本地数据库或本地功能的集成
资源管理资源管理集中在 Web 服务器端,前端需要通过网络获取所有资源(如 JS、CSS、图片等)都需要嵌入到本地文件中
UI 更新需要服务器端更新和部署本地更新,用户需要手动更新本地应用或通过自动化更新机制来更新
本地访问只能 JavaScript 与本地 API 进行交互,可能跨域可以直接通过本地 API 与 Vue 页面进行交互或使用本地方法传递数据

CefSharp_32">使用CefSharp加载公网地址

1.安装IDE

注意:Vscode不能开发winform,所以直接安装VS2019。千万不要装最新版,最新版不支持.net 4.X,但Cefsharp基于.net 4.X.

官方网址:https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes

安装时选择.Net桌面开发(大约8G):
在这里插入图片描述

2. 环境准备

创建项目:
在这里插入图片描述
在这里插入图片描述
IDE自动生成项目初始化代码并进入设计界面:
在这里插入图片描述
打开包管理器:
在这里插入图片描述
选择CefSharp.WinForms:
在这里插入图片描述
注意:
如果NuGet包管理器无法使用,提示链接超时或被拒绝。进行以下操作:

  • 关闭VS,删除C:\Users\xxx\AppData\Roaming\NuGet下的整个nuget.config文件。
  • CMD管理员权限执行以下:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v DisabledByDefault /t REG_DWORD /d 0 /f /reg:32
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v DisabledByDefault /t REG_DWORD /d 0 /f /reg:64
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v Enabled /t REG_DWORD /d 1 /f /reg:32
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v Enabled /t REG_DWORD /d 1 /f /reg:64

选择X86平台:
如果没有,则新建。此处是为了兼容性选择了X86,否则无法在32位环境运行(向下兼容)。
在这里插入图片描述
在这里插入图片描述
注意:
CefSharp基于.Net4.X,所以当前项目版本必须是基于.Net 4.X,如果不是,可以在项目属性修改。
如果没有4.X的选项,则需要额外安装。

在这里插入图片描述

Cef必须使用对应的.net版本:
在这里插入图片描述

2.编程

using CefSharp;
using CefSharp.WinForms;public partial class Form1 : Form
{public Form1(){InitializeComponent();InitializeChromium();}private ChromiumWebBrowser chromeBrowser;private void InitializeChromium(){Cef.Initialize(new CefSettings());chromeBrowser = new ChromiumWebBrowser("https://www.baidu.com"){Dock = DockStyle.Fill};this.Controls.Add(chromeBrowser);}// 确保在程序关闭时释放资源protected override void OnFormClosing(FormClosingEventArgs e){chromeBrowser.Dispose();Cef.Shutdown();base.OnFormClosing(e);}
}

CefSharp_Vue__115">使用CefSharp加载 Vue 本地包

1.安装IDE

与前文一致

2.环境准备

与前文一致

3.编码

提前准备好前端界面代码包,执行命令打包前端程序:

npm run build

完成后,Vue.js 项目会生成一个 dist/ 或 build/ 文件夹,包含了 HTML、CSS、JS 等静态资源。

Vue 打包的静态文件放入本地资源路径。

使用C#加载打包文件:

using CefSharp;
using CefSharp.WinForms;public partial class Form1 : Form
{public Form1(){InitializeComponent();InitializeChromium();}private ChromiumWebBrowser chromeBrowser;private void InitializeChromium(){Cef.Initialize(new CefSettings());// 加载本地 VuechromeBrowser = new ChromiumWebBrowser("file:///C:/你的自定义目录/vue/dist/index.html"){Dock = DockStyle.Fill};this.Controls.Add(chromeBrowser);}// 确保在程序关闭时释放资源protected override void OnFormClosing(FormClosingEventArgs e){chromeBrowser.Dispose();Cef.Shutdown();base.OnFormClosing(e);}
}

http://www.ppmy.cn/devtools/151545.html

相关文章

【JVM】总结篇之GC性能优化案例

文章目录 性能优化案例1:调整堆大小提高服务的吞吐量初始配置优化配置 性能优化案例2:JVM优化之JIT优化即时编译对代码的优化逃逸分析编译器优化栈上分配同步省略标量替换 性能优化案例3:合理配置堆内存推荐配置如何计算老年代存活对象结论你…

去中心化身份验证:Web3如何确保元宇宙中的身份安全

随着元宇宙的迅速发展,数字身份的安全性问题变得尤为重要。传统互联网中的身份验证依赖于中心化平台,用户的个人信息和身份数据通常存储在大公司控制的服务器中,容易受到黑客攻击和隐私泄露的风险。而Web3的去中心化身份验证方式为用户提供了…

java 小红书源码 1:1还原 uniapp

深度剖析:使用Vue.js、Spring Boot和uniapp开发仿小红书应用 在当今数字化浪潮下,内容分享类应用层出不穷。其中,小红书以其独特的定位和丰富的功能吸引了大量用户。本文将深入探讨如何利用Vue.js、Spring Boot以及uniapp技术栈,…

Git 安装 操作 命令 远程仓库 多人协作

Git作用 Git诞生史 很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在…

K8S 节点选择器

今天我们来实验 pod 调度的 nodeName 与 nodeSelector。官网描述如下: 假设有如下三个节点的 K8S 集群: k8s31master 是控制节点 k8s31node1、k8s31node2 是工作节点 容器运行时是 containerd 一、镜像准备 1.1、镜像拉取 docker pull tomcat:8.5-jre8…

Qt开发:QSqlDatabase的常见用法

文章目录 一、概述二、使用流程三、常用函数的介绍四、使用QSqlDatabase创建数据表和插入数据五、使用QSqlDatabase使用查询数据表中的数据六、使用QSqlDatabase更新数据表中的数据七、使用QSqlDatabase删除数据表中的数据 一、概述 QSqlDatabase 是 Qt 中用于管理和访问数据库…

解决Element Plus el-date-picker组件清空时,触发两次change的问题

问题 el-date-picker 组件在选择日期范围时会触发两次 change 事件。当用户选择了范围的开始时&#xff0c;会立即触发一次 change 事件。而当用户选择了范围的结束时&#xff0c;又会触发一次 change 事件。 解决方法 1. 延迟更新 <template><div>选择日期--{…

大疆最新款无人机发布,可照亮百米之外目标

近日&#xff0c;DJI 大疆发布全新小型智能多光旗舰 DJI Matrice 4 系列&#xff0c;包含 Matrice 4T 和 Matrice 4E 两款机型。DJI Matrice 4E 价格为27888 元起&#xff0c;DJI Matrice 4T价格为38888元起。 图片来源&#xff1a;大疆官网 DJI Matrice 4E DJI Matrice 4T D…