Web前端项目的跨平台桌面客户端打包方案之——CEF框架

news2024/11/24 8:55:55

文章目录

      • 1、什么是CEF
      • 2、测测你电脑里的CEF
      • 3、从0开始的CEF入门实例

1、什么是CEF

CEF是什么

  • 概念
    Chromium Embedded Framework (CEF)是个基于Google Chromium项目的开源Web browser控件。
    CEF的目标是为第三方应用提供可嵌入浏览器支持。CEF隔离底层Chromium和Blink的复杂代码,并提供一套产品级稳定的API。

  • Web前端的发展方向
    1、分工:有些人去搞 React、Vue,有些人就去搞 Rollup、Webpack。
    2、溢出:有些人用前端技术搞后端(Node.js、Deno),有些人用前端技术搞桌面端(Electron、CEF),还有些人用前端技术搞人工智能(TensorFlow.js) 。

CEF的特点:

  • 跨平台, 跨语言
    CEF支持Windows, Linux, Mac平台。除了提供C/C++接口外,也有其他语言的移植版。

  • 功能多,性能强
    因为基于Chromium,所以CEF支持Webkit & Chrome中实现的HTML5的特性,并且在性能上面,也比较接近Chrome。

  • 开源可靠
    它是一个开源项目,且采用的是 BSD 授权协议,商业授权非常友好。
    所以很多大厂都选择 CEF 作为桌面端开发框架。

  • 很多人用
    据 CEF 官网数据,CEF 框架装机量超过 1 亿。
    QQ 桌面端、微信桌面端、网易云音乐桌面端、 MATLAB 、 FoxMail 、OBS Studio 等。

2、测测你电脑里的CEF

最近很火的一个Github项目:CefDetector
Mac版本参考SafariYYDS

  • 首先需要安装 完整版Everything 并完成全硬盘的扫描.
  • 然后解压后运行 CefDetector.exe,即可检测你电脑里哪些程序使用了CEF
  • 绿色文件名表示当前正在运行的CEF程序。

如题:

  • 你的电脑就是你的垃圾桶,你所热爱的
    在这里插入图片描述

3、从0开始的CEF入门实例

CEF只是一个标准,有很多相关的框架

  • 包括但不限于libcef、Electron、NWJS、CefSharp、Edge 和 Chrome
  • CEF则比较单纯,只对Chromium做了精简和封装,允许开发者通过C++代码控制Chromium核心,允许JavaScript和C++互操作。
  • 还有二次打包的,比如像访问托盘图标、访问剪切板、Socket通信、读写文件这类事情,它都没做。所以Electron为他们做了这些事情,而且做的很好。

这里我们以较为纯原生的libcef为例:

  • libcef下载:spotifycdn
    在这里插入图片描述

  • VS2022打开目录
    cmake:配置和构建以Windows作为编译环境的cmake配置文件。
    Debug和Release:已经编译好的CEF核心库文件
    include:libcef本身提供的头文件以及wrapper会使用到的头文件。
    libcef_dll:存放了libcef_dll_wrapper源码。
    Resources:CEF作为内核的浏览器运行时需要用到的资源文件。
    tests:存放了利用libcef、以及wrapper作为库来编写的浏览器Demo。其中,cefsimple编译出来的是一个简单的浏览器,而cefclient编译出来的是一个展示了cef许多API功能的exe。
    在这里插入图片描述

  • 使用cmake进行配置构建
    安装cmake-gui
    选择源码位置和cmake编译后的程序的存放位置
    在这里插入图片描述
    Configure选择配置并进行构建
    在这里插入图片描述
    最后Generate一下
    在这里插入图片描述

  • 使用VS2022编译测试用例,打开构建生成的cef.sln项目
    文件夹里面的内容如下:

    ALL_BUILD与ZERO_CHECK:cmake自动生成的辅助工程。
    cef_gtest与ceftests:都是测试模块
    cefclient:一个包含CEF各种API演示的浏览器程序Demo
    cefsimple:一个简单的CEF浏览器程序Demo
    libcef_dll_wrapper:对libcef库的C++代码封装。上述cefclient与cefsimple都会用它。
    在这里插入图片描述
    在这里插入图片描述

  • 编译运行程序:
    首先编译libcef_dll_wrapper,然后编译cefclient和cefsimple。
    右键点击生成即可
    在这里插入图片描述
    在这里插入图片描述
    然后就可以在对应的目录中找到运行程序
    在这里插入图片描述
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/101380.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

靠着数套的Java刷题PDF,成功“混进”腾讯T3

昨晚半夜,一个学Java的老弟突然打电话告诉我他拿到了腾讯T3的offer,说实话,我有点诧异。。。 这老弟也是渣硕一枚,去投岗了腾讯的Java后台开发岗位。等了一个星期后简历被放回池子里了,眼看着提前批马上就要截止了&am…

jsp+ssm计算机毕业设计多媒体课程精品课程网站【附源码】

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JSPSSM mybatis Maven等等组成,B/S模式 Mave…

海量数据小内存!从未出现过的数在哪里

文章目录题目要求1)内存 1G2)内存 3 KB3)内存 有限变量举例题目 现在有 40 亿个无符号整数,无符号整数的范围是 0 ~ 232-1(42亿),哪怕 40 亿个数完全不同,在该范围中也总有没有出现…

傻白探索Chiplet,关于EPYC Zen2 的一些理解记录(五)

目录 一、知识铺垫 (1)Chiplet (2)Zen架构 (3)EPYC和Ryzen (4)EPYC Zen2 二、关于EPYC Zen2里的部件 (1)内存控制器 (2&#xff…

Python本地下载-实例的SQL审计日志

简介:使用阿里云的RDS数据库,开启DAS的数据库治理服务。会产生大量的审计日志。 我们有2T的审计日志数据,保留180天,每小时收费空间:0.008元/GB/小时 计算下来:2x1024x 24x 30 x 0.008 11796 元 解决&…

分类预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络分类预测(语音分类)

分类预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络分类预测(语音分类) 目录 分类预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络分类预测(语音分类)基本描述模型结构设计过程参考资料基本描述 传统的语音识别技术,主要在隐马尔可夫模型和高斯混合模型两大”神器“的加持…

[element plus] 分页组件使用 - vue

学习关键语句: 饿了么加组件分页组件 element分页组件 vue3 饿了么分页组件 写在前面 必须要说明的是 , 这篇文章使用的分页组件样式包含了饿了么官方给出警告以后会弃用的部分 但是问题是什么呢? 问题就是我还没找到这个用 vmodel 绑定的使用方法 , 再加上现在也算是有点…

C++代码简化之道

1. 善用emplace C11开始STL容器出现了emplace(置入)的语义。比如 vector、map、unordered_map,甚至 stack和 queue都有。 emplace方便之处在于,可以用函数参数自动构造对象,而不是向vector的push_back,ma…

论文投稿指南——中文核心期刊推荐(电工技术2)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

机器人开发--霍尔元件

机器人开发--霍尔元件1 霍尔效应2 霍尔元件特点3 霍尔传感器的典型应用电流传感器位移测量测转速或转数参考1 霍尔效应 霍尔效应是电磁效应的一种,这一现象是美国物理学家霍尔于1879年在研究金属的导电机制时发现的。当电流垂直于外磁场通过半导体时,载…

ORB-SLAM2 --- Tracking::SearchLocalPoints函数解析

1.函数作用 用局部地图点进行投影匹配,得到更多的匹配关系。 局部地图点中已经是当前帧地图点的不需要再投影,只需要将此外的并且在视野范围内的点和当前帧进行投影匹配。 2.函数流程 Step 1:遍历当前帧的地图点,标记这些地图点不…

Mycat(6):mycat简单配置

1 找到conf/schema.xml并备份 2 配置虚拟表table[在schema里面] 其中 sharding-by-intfile 为rule.xml中的规则 规则文件为conf文件夹中的partition-hash-int.txt 3 配置数据节点dataNode 现在数据库新建3个数据库,skywalking,skywalking1,s…

[附源码]计算机毕业设计Python的低碳生活记录网站(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

MapReduce 排序

文章目录WritableComparable 排序一、排序概述1、排序分类2、自定义排序(1)、原理分析二、WritableComparable 排序案例(全排序)1、需求WritableComparable 排序 一、排序概述 排序是MapReduce框架中最重要的操作之一 MapTask和ReduceTask均会对数据按照key进行排序&#xff…

使用c++部署tensorrt加速yolov7

先放上一张我运行成功的截图,只要跟着我的教程一步一步按操作,下载好匹配的软件是一定可以成功的! 我相信想要在C++平台使用tensorrt加速的朋友们也是有很强的计算机基础的,那么简单的部分我们就跳过,重点是和大家介绍模型转换的部分以及环境的搭建。 一. 环境 我的cudn…

docker-compose安装部署

一、前言 docker compose 给容器做单机编排的。Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。 docker compose是docker的独立产品,因此安装docker compose之前需要安装docker,Centos部署Docker_crazyK.的博…

高斯信号的贝叶斯步长最小均方算法(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

云原生爱好者周刊 | 使用 WASM 来写博客是什么感觉?

开源项目推荐 zzhack zzhack 是一个静态博客框架,是一个纯正的 WASM 应用,它由 Rust & Yew 来作为技术栈进行搭建,UI 设计比较美观,大家也可以直接使用该项目的设计模板零成本构建 WASM 应用。 Tracee Tracee 是一个运行时…

数据结构与算法之双向链表的设计与实现

文章目录前言一、双向链表1.1 概念1.2 双向链表的应用1.3 双向链表的node方法1.4 双向链表的add方法1.5 双向链表的remove方法1.6 整体代码1.7 接口测试二、对比学习2.1 单向链表 vs 双向链表2.2 双向链表 vs 动态数组2.3 ArrayList和LinkedList的区别前言 文章链接之前所介绍…

基于python的C环境安装(NLP文本纠错项目使用)

1.下载c环境:(window系统) 链接:Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器 (microsoft.com) 2.安装 1.打开下载的安装包 2.进入如下页面,按照下图进行勾选,注意,其它不要动…