miniblink载入html,miniblink使用小结

最近开发一个项目,时间比较急,打算是h5+壳的方式来做桌面端的开发。对比了一下方案:cef, electron, miniblink。由于这个项目对安装包的大小有比较严格的要求,所以选用了minibllik.

miniblink介绍

特点是:极致小巧的体积:使用的是18年10月的一个版本,dll只有15M左右,相比于cef或electron,少了近一半。

内嵌Node.js, 支持electron:暂时还没有用到。

支持windows xp, npapi; - C++, C#, delphi的调用:用C++开发,只需要引用一个头文件即可。api文档齐全,使用方便。

随心所欲的定制功能,模拟环境; - 完美支持各种h5的效果:对html某些特性支持的还不算好。

以上是从官网上找到的介绍,补充了一下个人使用的感受。

用法介绍初始化引擎:只需要调用下面两句代码

wstring strWkeFilePath = L"XXX";

wkeSetWkeDllPath(strWKEFilePath.c_str());

wkeInitialize();创建了web窗口,提供了两种方式:

-wkeCreateWebWindow:比较简单,创建完成后直接loadurl即可。

- wkeCreateWebView这种比较复杂一点,需要自己去写渲染的过程,优点是灵活,可以自己实现各种效果。可以参考:https://github.com/weolar/mb-demo设置各种属性

wkeSetCookieJarPath(m_window, strPath.c_str()); //设置cookie所在的位置

wkeIsCookieEnabled(m_window); //是否允许记录cookie

wkeSetCspCheckEnable(m_window, false);//是否允许跨域,我们一个页面里面嵌入了另一个web应用的页面,所以这里把跨域检查关掉

wkeSetDragEnable(m_window, false);//不允许拖拽

wkeOnNavigation(m_window, &dowkeNavigationCallback, this); //h5页面不允许跳转,打开一个链接,通过这个回调截掉,跳转到浏览器去打开。

wkeOnCreateView(m_window, &dowkeCreateViewCallback, this);//打开新窗口的时,在这个回调里创建一个新的webWindows。

wkeOnLoadUrlBegin(m_window, &dowkeLoadUrlBeginCallback, this); //这个在后面讲~~

wkeOnWindowClosing(m_window, &dowkeWindowClosingCallback, this);//在任务栏右键关闭时会走这里,做一些退进程的操作绑定js:主要是跟h5页面联调,定好接口:C++ 调用js(wkeJsBindFunction), js调用C++(wkeRunJsByFrame)。使用起来还是挺方便的。

加载url(wkeLoadURLW)及显示(wkeShowWindow)

遇到的问题download属性不支持

由于h5的代码不让修改。想到的解决方案是通过hookurl的方式。在加载 js开始的时候,把线上的js换成本地的js.在官网里也有介绍。

//先绑定onloadurlbegin.

wkeOnLoadUrlBegin(m_window, &dowkeLoadUrlBeginCallback, this);

//在dowkeLoadUrlBeginCallback里判断是不是要加载替换的js

if (0 != strstr(url, c_XXXURL))

{

return HookUrl(job);

}

return false;

//在HookUrl方法里加载安装包带的js文件:里面去掉了download的属性

wkeNetSetMIMEType(job, "text/html");

vectorbuffer;

wstring strLocalFile = CommonUtils::GetCurrentPath() + c_ReplaceJS;

if (!CommonUtils::FileExists(strLocalFile))

return false;

readJsFile(strLocalFile.c_str(), &buffer);

wkeNetSetData(job, &buffer[0], buffer.size());

return true;

这种方式只能算绕过去,实现起来比较挫。而且线上的js如果有改动,这样客户端就得重新发版。不过,这个问题后面miniblink会解决,在github上提过issues,作者回复后面会补上。 - 调试模式:对于web开发者来说,调试前端页面的时候离不开F12。里面可以方便的进行调试定位。但是对于miniblink来说,这个还是比较欠缺的。有wkeSetDebugConfig这个api,但是调用起来后窗口是一片空白。由于项目涉及到前后端联调,有些功能不能在浏览器里查看,必须集成到客户端里,联调的时候就相当痛苦~~ - miniblink github里还有比较多的issues没有关闭,之前关注过,大概看了一下,某些场景还是没有覆盖全。但是从releases的发版频率来看,扫地僧大大还是挺给力的。

如果项目没有特别复杂的用法,miniblink还是挺推荐使用,毕竟小巧,使用方便。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值