热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

单线多拨插件安装_用Libcef和Webview2替换miniblink:3+1多内核实现

之前有幸刷到过“Miniblink背后的故事”,第一反应,这么厉害?有事耽搁了,过些时间看了看他的开源仓库,结

之前有幸刷到过 “Miniblink背后的故事,第一反应,这么厉害?有事耽搁了,过些时间看了看他的开源仓库,结果变成闭源了……

不过作者发布的两个dll现在都能用:

  • miniblink_x64.dll:免费版,37MB,wke实现。
  • mb.dll:定制版,2MB,基于上面的dll给出一个定制的实现。

免费版是单线程的,做UI不知如何,当浏览器控件使用却是不够用的,会比较卡。定制版有所改善,不过大概因为内核版本落后,流畅度仍然比不上Libcef。

于是萌生了这样的想法:用 Libcef 替换 miniblink。注意是替换不是取代,可能这两个词没啥区别,但我的意思是,在一个应用程序中兼纳多种浏览器控件,而不是只选择其中一个、而放弃其他的方案。

miniblink 体积较小,将其随应用打包、作为默认的浏览器控件,压缩后仅10MB。Libcef体积较大,让用户按需下载,然后动态(运行时)切换浏览器内核。

Libcef是臃肿,足足178MB,但是性能优秀,内存、CPU占用都不大。

还可以兼容尚未正式发布的 Edge Webview2,须下载安装 Edge insider 试用。

多图警告!

……


e390d82a46c568ce430290e888a26ded.gif

从 Miniblink-mb 切换至 Chromium-Embeded。明显感觉滚动更流畅了。


8dcc0d0d7f0c96c9cd6d4775ee2d407e.gif

切换至Webview2,这个控件的自带功能比Libcef更全,但加载(初始化和页面刷新)最慢。


6aeb4ce79b528adb1c1daf2aa42c6eba.gif

一不做二不休,干脆将Markdown渲染库也做成可以动态切换的。默认是 md.html,编译成单文件main.js,1MB。可选替代 MDViewer,改自 Chrome 插件 Markdown Preview Plus,分散文件、比 md.html 大一些、支持更多格式,类似于 csdn 的编辑器,不过 csdn 集成得更全面。

“将Libcef打造为win32控件”系列:

一:初识Libcef

二:初次封装,拿到浏览器HWND

三:资源拦截替换、JS调用C++ Native、首次运用

题外话 兼容微软Webview2



推荐阅读
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • JavaScript简介及语言特点
    本文介绍了JavaScript的起源和发展历程,以及其在前端验证和服务器端开发中的应用。同时,还介绍了ECMAScript标准、DOM对象和BOM对象的作用及特点。最后,对JavaScript作为解释型语言和编译型语言的区别进行了说明。 ... [详细]
  • 使用chrome编辑器实现网页截图功能的方法
    本文介绍了在chrome浏览器中使用编辑器实现网页截图功能的方法。通过在地址栏中输入特定命令,打开控制台并调用命令面板,用户可以方便地进行网页截图操作。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文详细介绍了解决全栈跨域问题的方法及步骤,包括添加权限、设置Access-Control-Allow-Origin、白名单等。通过这些操作,可以实现在不同服务器上的数据访问,并解决后台报错问题。同时,还提供了解决second页面访问数据的方法。 ... [详细]
author-avatar
风云再起2012668
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有