
首先,请纠正以上几句话中WebKit的措辞,请正确编写WebKit,K为大写而不是webkit,
阅读本主题后,我认为该主题应具有两个含义:
如何开发WebKit核心如何开发基于Webkit核心的浏览器如何开发WebKit核心
是否有必要自己开发WebKit内核?

我已经阅读了前面的答案,它们应该是基于Webkit或Chromium开发的。我个人认为,是否有必要自己开发WebKit。这种必要性不能一概而论。如果您想开发一个具有与现有WebKit或Blink内核相同功能的渲染引擎内核,我认为没有必要。
要开发一种支持现有W3C标准功能并快速进行合成和渲染的WebKit引擎,其人力和技术成本非常高,并且WebKit的任何看似自然的功能都非常复杂。
例如,在您看来,单击HTML标记链接以打开新页面似乎是很自然的事情。在WebKit核心中,已经完成了许多事情。首先,我们必须获取当前的单击位置,并使用此位置坐标信息进行HitTest。所谓的HitTest是检测当前单击的内容。我们如何知道当前单击的内容? HitTest将遍历整个DomTree和LayerTree以查看当前坐标位置是什么。是空白吗?还是文字?静止图片还是链接?这些信息可以通过遍历DomTree,LayerTree来实现,最后以HitTestResult的形式返回遍历检测结果,最后以返回的类型进行判断,如果是链接,则将回调相应的回调函数,最后单击新建页面将打开一个。
然后这些轮子已经由WebKit和Blink工程师制造,它们都是开源的。接受并编译它们,并将其应用于您自己的产品,或者您可以自己学习和研究。

因此,既然WebKit和Chromium都做得很好,那么真的不需要自己开发内核吗?我个人认为这是必要的,但是我们必须结合我们自己的产品和应用方案。
就像很说的那样,使用Linux和Android,无需重新开发操作系统即可使用所有设备。直接移植Linux和Android就足够了,但是我们必须知道我们周围有许多熟悉的设备。 ,它实际上不是Linux或Android,例如许多可穿戴设备,智能手表,智能眼镜等。许多系统甚至都不是使用C开发的,而是直接使用的程序集。
我认为这是开源习惯的问题。每当有人提到要开发WebKit核心引擎时,每个人都会淘汰WebKit和Blink。不要自己开发它,只需使用开源WebKit或Blink。 Blink确实非常强大,渲染速度快并且用途广泛。但是眨眼的力量是有代价的。它需要稍高的硬件CPU,GPU和内存,因此对于特定位置的浏览方案,此开销将带来更大的性能损失。它使用了Blink功能的1%,但它却吸引了数十甚至数百MB的内存消耗,这适得其反。
当我第一次接触WebKit时,是几年前,搜狐开发了MeeGo版本的搜狐微博。当时,MeeGo是使用Qt开发的。微博大家都知道,最麻烦的是图形和文本的混合。它需要快速,但也要灵活方便。当时,Qt用于开发,并且使用了各种解决方案,但效果并不理想。后来发现,QtWebKit(Qt的WebKit端口)非常方便实现图像和文本混合,效果很好。仅需要混合图形和文本的场景。应该说功能非常单一,但是引入QtWebKit的结果是微博滑动并单击详细信息页面冻结,在新的WebView之后,什么也没做,5M内存消失了,5M内存,这对于MeeGo来说是很多年了以前已经很多了,而这5M内存仍在泄漏。删除WebView后,2M WebCore占用的内存仍然不可用。

对WebKit的原理进行了几年的深入了解后,我了解到WebCore确实有很多内存,除非退出应用程序,否则无法释放。因此,对于特定的应用场景,无需直接使用Blink。它似乎可以满足您的某些需求,但不能达到您想要的效果。这时,非常适合您自己开发一个非常小的快速类WebKit内核。据我所知,目前中国有几个知名的应用程序。因为他们对Blink的性能不满意,所以他们招募了团队来开发小型WebKit,这是一种非常轻巧且非常快的WebKit核心,可以满足他们自己的产品。业务需求。
如何开发WebKit核心?
为了回答这个问题,我认为,从需求开始,WebKit的所有功能,摘要只是几大块
资源调度和下载资源分析,资源综合以及渲染事件处理

因此,首先,我们必须确定您的使用方案是否是HTML的W3C标准的子集。最好使用W3C标准的子集以及您自己的自定义要求,以便您可以开发类似WebKit的核心并引用现有产品和技术。查看Blink的源代码。首先,您必须确定您的使用方案是HTML还是W3C标准的子集。最好使用W3C标准的子集以及您自己的自定义要求。
检查Blink的源代码,您会发现Google工程师为了实现性,上面的每个步骤编写都非常复杂,因此没有必要自己实施。对于资源下载部分,Blink使用其自己的Chromium_net实现。实际上,不需要使用此大型类库。使用相对轻便的网络库(例如curl)就足够了。
另一个正在解析。如果您自己实现WebKit核心,则必须解析自己的特定HTML规则(W3C +定制的子集),甚至说可以直接在服务器上解析并将结果传递给客户端。您可以在最后进行合成和渲染,以使WebKit的功能更加轻巧简洁。
如何开发基于WebKit核心的浏览器?

基于WebKit内核开发浏览器。几年前Chromium分离内核时,移动设备上的所有浏览器都基于WebKit。曾经有非WebKit浏览器,但是随着WebKit的普及,他们已经放弃了自己的内核,转而基于WebKit / Blink开发浏览器。就像我们所熟悉的UC浏览器,腾讯浏览器等。的。
对于当前的设备,基于WebKit开发浏览器基本上是不可能的,因为您所接触的系统提供了自己的系统内核。在Android上,早期是WebKit。后来变成Chromium WebView。因此,与其开发基于WebKit核心的浏览器,不如开发基于系统WebView API的浏览器,是更好的选择。在此级别上,只要您学习系统WebView的API,就可以开发自己的浏览器。无非就是UI和功能设计,这不是很难,也无非是人力投资设计和开发。
但是不幸的是,很难在当前的Android移动设备上找到的小型浏览器。一方面,浏览器制造商为了实现不同系统版本之间的通用性,另一方面,主要的手机制造商将对系统WebView进行更改,从而导致不位。
好的,我写了很多。如果有什么问题,请与我讨论。我从事WebKit,Chromium,V8和Nodejs的基础开发已经很多年了。欢迎与大家进行技术交流。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-341916-1.html
然后可以直接干过去
乱来就打沉他
千玺加油