已经使用CEF来呈现桌面程序界面大半年了,历来没有写过相关博文。发现网上的中文资料甚至英文已经没法知足个人开发需求,很多问题只得本身探索。在此先谢过网络上各位CEF使用开发博文的贡献者,没有大家我也难易快速入手。实在惭愧,因为精力有限,本身捣鼓出来的东西一直没有贡献出来。好吧,从今天开始,面朝大海,春暖花开。网络
原先公司的C++程序界面用GDI+来作,甚是麻烦。后来客户想要相似豌豆荚那样的风格,小清新。研究了下豌豆荚,发现它的界面八成是JavaScript,用CEF来嵌入Web页面。此前也听一朋友提过Chrome源码之类云云,也知道如今很多桌面程序界面用JavaScript来作,开发效率高于C++。一直烦心于C++的界面开发,不安分的我也有极大的兴趣去作新的尝试,青春在于折腾。不过公司的程序一直以来采用的是WebBrowser控件,做为过渡,先在其上作界面。JavaScript边学边作,没办法,小公司,好多事情都要本身干,俨然成了一个全栈程序猿。异步
真正使用CEF的契机来自于一个棘手的问题。引入了一个JQuery图表插件来显示饼状图。但考虑到客户的运行环境多元化,IE各个版本都有哦,甚至于IE6还占到20%以上。一次兼容性测试,发现该插件在IE8上死活用不了,调了两天,搞不定。一怒之下,花了一周,替换成了CEF,为了解决C++与JavaScript互相调用产生死锁,作了消息循环队列,来进行异步调用,也大体理解NodeJs采用异步的妙处。此后种种往后再作分说。测试
固然CEF对于HTML五、CSS3以及JavaScript标准的支持确实很棒,可定制性也很高,不过从另外一层面也由于它的灵活带来了很多的麻烦。好比没有IE那样的右键菜单,要本身作,若是不去修改CEF的内部代码,还须要去HOOK,但这些也着实是乐趣无穷。插件