【chrome基础】Chrome、Chromium、libcef、electron版本关系大揭秘!

文章目录

    • 概述
    • chrome、Chromium、cef、electron 版本管理
    • chrome的各种概念和学习资料
        • V8 bindings 设计
        • 谷歌V8引擎探秘:基础概念
        • Chrome 的插件(Plugin)与扩展(Extension)
        • Chrome插件开发

概述

Chrome、Chromium、libcef、electron 这四款浏览器有什么区别?

  • Chrome 是基于 Chromium 开发的稳定版本,主要用于 Windows、macOS、Linux 等操作系统;
  • Chromium 是 Chrome 的开源版本,存在一些 bug 和不稳定因素,但是更新速度更快,还支持更多的功能和扩展程序;
  • libcef 则是 Chrome 和 Chromium 的底层引擎,主要负责渲染网页和执行 JavaScript 代码;
  • electron 则是基于 Chromium 和 node.js 开发的跨平台桌面应用开发框架,可以让开发人员快速构建具有原生界面和功能的桌面应用程序。

📌 Chrome、Chromium、libcef、electron 版本关系图是怎样的?🤔 👉 看这张表就一目了然啦!👇👇👇

名称ChromeChromiumlibcefElectron(原名Atom Shell)
官网https://www.google.com/chromehttps://www.chromium.org/https://bitbucket.org/chromiumembedded/cefhttps://www.electronjs.org
首次发布时间2008年9月2日2008年9月2日2010年12月3日2013年4月11日
特点google出品的浏览器产品google出品的开源浏览器项目封装chromium的开源项目、嵌入式框架封装chromium的开源项目、支持node

🤖总之,想要体验更加稳定和快速的 Chrome 浏览器,不妨试试 Chrome 稳定版;如果想了解更多最新的技术进展和实验性功能,那么 Chromium 可能更适合你。而 cef 和 electron 则是开发人员在进行浏览器和桌面应用开发时需要关注和使用的技术框架。

chrome、Chromium、cef、electron 版本管理

Google Chrome版本历史

  • https://vikyd.github.io/download-chromium-history-version/#/
  • https://google.fandom.com/wiki/Chrome_version_history
  • https://en.wikipedia.org/wiki/Google_Chrome

这里从维基百科搬运一个表格,其中包含chrome在不同平台的一些重要时间节点。
在这里插入图片描述

Chromium 版本历史(与Chrome版本强关联)

  • Chromium 历史版本离线安装包 https://vikyd.github.io/download-chromium-history-version/#/
  • Chromium 历史版本离线安装包 https://github.com/vikyd/note/blob/master/chrome_offline_download.md

cef 版本历史

  • https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding.md
  • Downloads - https://cef-builds.spotifycdn.com/index.html

electron 版本历史(chrome、node、npm版本)
官网直接查看: https://releases.electronjs.org/releases/stable
在这里插入图片描述
下面是几个比较代表的节点:

  • 22:支持Windows 7/8/8.1最后的版本。(所以不要再使用最新版本的electron,免得后期各种坑)
  • 1.0.2:支持Windows xp最后的版本,详见官网地址。(其实就是chrome支持的最后一个版本:Google Chrome 49.0.2623.112,支持 Windows XP 系统的最后一个版本。

版本列表如下所示:

Electron 版本发行时间Chrome 版本Node.js 版本
第一个版本,当时叫Atom Shell2013-4-11--
0.20.02014-12-1239.0.2171.65Node.js 0.13.0-pre
1.0.2(支持Windows xp最后的版本)2016-05-1349.0.2623.75Node.js 5.10.0
1.8.8(最后一个1.x版本)2018-08-2259.0.3071.115Node.js 8.2.1
2.x2018-05-01Chrome 61Node.js 8.9.3
3.x2018-09-18Chrome 66Node.js 10.2.0
4.x2018-12-20Chrome 69Node.js 10.11.0
9.x2020-05-19Chrome 83.0.4103.64Node.js 12.14.1
10.x2020-08-24Chrome 85.0.4183.84Node.js 12.16.3
22.x2022-11-29Chrome 108.0.5359.62Node.js 16.17.1
27.x2023-10-09Chrome 118.0.5993.54Node.js 18.17.1

chrome的各种概念和学习资料

V8 bindings 设计

isolate,context,world,frame之间的关系
参考文章: https://zhuanlan.zhihu.com/p/54135666

  1. isolate (隔离)
  2. Context (上下文)
  3. Entered context and current context( 输入上下文和当前上下文)
  4. World
  5. A relationship between isolates, contexts, worlds and frames
  6. DOM wrappers and worlds
  7. DOM wrappers and contexts
谷歌V8引擎探秘:基础概念

参考文章: https://blog.dingkewz.com/post/tech/google_v8_core_concepts_01/

  • Context
  • Handle
  • Handle Scope
  • Templates
  • Isolates
Chrome 的插件(Plugin)与扩展(Extension)

参考文章:https://www.zhihu.com/question/20628768/answer/15687936
扩展(Extension),指的是通过调用 Chrome 提供的 Chrome API 来扩展浏览器功能的一种组件,工作在浏览器层面,使用 HTML + Javascript 语言开发[*]。比如著名的 Adblock plus。插件(Plug-in),指的是通过调用 Webkit 内核 NPAPI 来扩展内核功能的一种组件,工作在内核层面,理论上可以用任何一种生成本地二进制程序的语言开发,比如 C/C++、Delphi 等。比如Flash player 插件,就属于这种类型。一般在网页中用 <object> 或者 <embed> 标签声明的部分,就要靠插件来渲染。

  • 插件管理页:chrome://plugins/
  • 扩展管理页:chrome://extensions/
Chrome插件开发
  • 从零深入Chrome插件开发: https://xieyufei.com/2021/11/09/Chrome-Plugin.html#content-scripts
  • 7分钟学会写一个浏览器插件——突破某SDN未登录禁止复制的限制 https://segmentfault.com/a/1190000040824814

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用GitLab CI/CD 定时运行Playwright自动化测试用例

创建项目并上传到GitLab npm init playwright@latest test-playwright # 一路enter cd test-playwright # 运行测试用例 npx playwright test常用指令 # Runs the end-to-end tests. npx playwright test# Starts the interactive UI mode. npx playwright

Oracle 简介与 Docker Compose部署

最近&#xff0c;我翻阅了在之前公司工作时的笔记&#xff0c;偶然发现了一些有关数据库的记录。当初&#xff0c;我们的项目一开始采用的是 Oracle 数据库&#xff0c;但随着项目需求的变化&#xff0c;我们不得不转向使用 SQL Server。值得一提的是&#xff0c;公司之前采用的…

Servlet

Servlet Servlet是Java提供的一门动态web资源开发技术&#xff0c;其实就是一个接口&#xff08;规范&#xff09;&#xff0c;将来我们需要自定义Servlet类实现Servlet接口即可&#xff0c;并由web服务器运行Servlet。 快速入门 创建Web项目&#xff0c;导入Servlet依赖坐标…

linux 安装下载conda并创建虚拟环境

目录 1. 下载安装2. 创建虚拟环境1. 下载安装 在window操作系统中下载anconda包,并通过scp传输到ubuntu操作系统 具体anconda包在如下界面: anconda包 目录 博主选择了最新的包:Anaconda3-2023.09-0-Linux-x86_64.sh 通过scp传输到ubuntu操作系统中: 并在ubuntu操作系…

8、Docker数据卷与数据卷容器

一、数据卷(Data Volumes) 为了很好的实现数据保存和数据共享&#xff0c;Docker提出了Volume这个概念&#xff0c;简单的说就是绕过默认的联合文件系统&#xff0c;而以正常的文件或者目录的形式存在于宿主机上。又被称作数据卷。 数据卷 是一个可供一个或多个容器使用的特殊目…

信息系统项目管理师第四版学习笔记——项目进度管理

项目进度管理过程 项目进度管理过程包括&#xff1a;规划进度管理、定义活动、排列活动顺序、估算活动持续时间、制订进度计划、控制进度。 规划进度管理 规划进度管理是为规划、编制、管理、执行和控制项目进度而制定政策、程序和文档的过程。本过程的主要作用是为如何在…

【17】c++设计模式——>原型模式

原型模式的定义 c中的原型模式&#xff08;Prototype Pattern&#xff09;是一种创建型设计模式&#xff0c;其目的是通过复制&#xff08;克隆&#xff09;已有对象来创建新的对象&#xff0c;而不需要显示的使用构造函数创建对象&#xff0c;原型模式适用于创建复杂对象时&a…

vue3+vite+ts中的@的配置

文章 前言错误场景问题分析解决方案后言 前言 ✨✨ 我们是天生勇敢的开发者&#xff0c;我们创造bug&#xff0c;传播bug&#xff0c;毫不留情地消灭bug&#xff0c;在这个过程中我们创造了很多bug以供娱乐。 错误场景 vue3 vite ts 问题分析 在vue3的项目开发中我遇到了这样…

【Linux】 vi / vim 使用

天天用vim 或者vi 。看着大佬用的很6 。我们却用的很少。今天咱们一起系统学习一下。 vi / vim 发展史 vi 是一款由加州大学伯克利分校&#xff0c;Bill Joy研究开发的文本编辑器。 vim Vim是一个类似于Vi的高度可定制的文本编辑器&#xff0c;在Vi的基础上改进和增加了很多…

35.树与二叉树练习(1)(王道第5章综合练习)

【所用的树&#xff0c;队列&#xff0c;栈的基本操作详见上一节代码】 试题1&#xff08;王道5.3.3节第3题&#xff09;&#xff1a; 编写后序遍历二叉树的非递归算法。 参考&#xff1a;34.二叉链树的C语言实现_北京地铁1号线的博客-CSDN博客https://blog.csdn.net/qq_547…

使用asp.net core web api创建web后台,并连接和使用Sql Server数据库

前言&#xff1a;因为要写一个安卓端app&#xff0c;实现从服务器中获取电影数据&#xff0c;所以需要搭建服务端代码&#xff0c;之前学过C#&#xff0c;所以想用C#实现服务器段代码用于测试&#xff0c;本文使用C#语言&#xff0c;使用asp.net core web api组件搭建服务器端&…

前端uniapp如何修改下拉框uni-data-select下面的uni-icons插件自带的图片【修改uniapp自带源码图片/图标】

目录 未改前图片未改前源码未改前通过top和bottom 和修改后图片转在线base64大功告成最后 未改前图片 未改前源码 然后注释掉插件带的代码&#xff0c;下面要的 未改前通过top和bottom 和修改后 找到uni-icons源码插件里面样式 图片转在线base64 地址 https://the-x.cn/b…

图像上传功能实现

一、后端 文件存放在images.path路径下 package com.like.common;import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annot…

大数据编程实验3 熟悉常用的HBase操作前期准备

一、实验目的 &#xff08;1&#xff09;理解HDFS在Hadoop体系结构中的角色&#xff1b; &#xff08;2&#xff09;熟练使用HDFS操作常用的Shell命令&#xff1b; &#xff08;3&#xff09;熟悉HDFS操作常用的Java API。 二、实验平台 1. 操作系统&#xff1a;Linux&#x…

【JavaEE】多线程进阶(一)饿汉模式和懒汉模式

多线程进阶&#xff08;一&#xff09; 文章目录 多线程进阶&#xff08;一&#xff09;单例模式饿汉模式懒汉模式 本篇主要引入多线程进阶的单例模式&#xff0c;为后面的大冰山做铺垫 代码案例介绍 单例模式 非常经典的设计模式 啥是设计模式 设计模式好比象棋中的 “棋谱”…

springboot项目中后台文件上传处理

参考地址:http://www.gxcode.top/code 文件上次核心处理代码: @Autowired private FileUpload fileUpload; //获取资源对象:file-upload-prod.properties@ApiOperation(value = "用户头像修改", notes = "用户头像修改", httpMethod =

Mall脚手架总结(三) —— MongoDB存储浏览数据

前言 通过Elasticsearch整合章节的学习&#xff0c;我们了解SpringData框架以及相应的衍生查询的方式操作数据读写的语法。MongoDB的相关操作也同样是借助Spring Data框架&#xff0c;因此这篇文章的内容比较简单&#xff0c;重点还是弄清楚MongoDB的使用场景以及如何通过Sprin…

相机坐标系之间的转换

一、坐标系之间的转换 一个有4个坐标系&#xff1a;图像坐标系、像素坐标系、相机坐标系、世界坐标系。 1.图像坐标系和像素坐标系之间的转换 图像坐标系和像素坐标系在同一个平面&#xff0c;利用平面坐标系之间的转换关系可以之知道两个坐标系变换的公式&#xff0c;并且该…

JRebel在IDEA中实现热部署 (JRebel实用版)

JRebel简介&#xff1a; JRebel是与应用程序服务器集成的JVM Java代理&#xff0c;可使用现有的类加载器重新加载类。只有更改的类会重新编译并立即重新加载到正在运行的应用程序中&#xff0c;JRebel特别不依赖任何IDE或开发工具&#xff08;除编译器外&#xff09;。但是&…

PlantUML 绘图

官网 https://plantuml.com/zh/ 示例 绘制时序图 USB 枚举过程 PlantUML 源码 startuml host <-- device : device insert host note right : step 1 host -> device : get speed, reset, speed check note right : step 2 host -> device …