之前有幸刷到过 “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 试用。
多图警告!
……
从 Miniblink-mb 切换至 Chromium-Embeded。明显感觉滚动更流畅了。
切换至Webview2,这个控件的自带功能比Libcef更全,但加载(初始化和页面刷新)最慢。
一不做二不休,干脆将Markdown渲染库也做成可以动态切换的。默认是 md.html,编译成单文件main.js,1MB。可选替代 MDViewer,改自 Chrome 插件 Markdown Preview Plus,分散文件、比 md.html 大一些、支持更多格式,类似于 csdn 的编辑器,不过 csdn 集成得更全面。
“将Libcef打造为win32控件”系列:
一:初识Libcef
二:初次封装,拿到浏览器HWND
三:资源拦截替换、JS调用C++ Native、首次运用
题外话 兼容微软Webview2