可以,不过一个audio只能播放一个音频,所以要同时播放两个及以上的音频,只得使用多个audio,一个audio对应一个音频
浏览器内核的复杂性就在于它几乎囊括了计算机所有的专业知识。
编译原理:V8引擎中的各种黑优化哪个是简单的?没有一定的编译原理基础你还真搞不定!
计算机网络:Chromium是自己搞了一套网络栈的,实现了很多协议,比如目前移动端使用较多的QUIC。
操作系统:Chromium的多进程,必须得每个系统写一套,同时还要消除不同系统之间的差异,如果操作系统你学的一塌糊涂,我想多进程的程序你是写不好的!
图形学:网页排版真的很复杂啊,有木有?你要支持世界各国的奇奇怪怪的文字。
我们以霸主chromium为例,目前的Chrome、360极速浏览器、Edge最新版,以及前段时间被爆丑闻的红芯浏览器都是以其为内核来开发。它到底有多复杂呢?请看下图,我简单列举了一些重要模块的功能:
实际上,拆分开每一项都是一套很复杂的东西。我们以其中的net网络库为例。
net网络库
如果你认为net只是一个简单的网络库实现,那么就大错特错了,还包括谷歌自己牵头实现的一些协议(比如QUIC等)。它里面涉及的知识点,包含了主机解析,cookies,网络改变探测,SSL,资源缓存,ftp,HTTP, OCSP实现,代理 (SOCKS和HTTP) 配置,解析,QUIC(Quick UDP Internet Connection,是谷歌制定的一种基于UDP的低时延的互联网传输层协议),socket池,SPDY,WebSockets……每一项分开来写成一本厚厚的书都不成问题。具体我们可以参考下图,github上关于net模块的代码结构。
浏览器内核到底有多复杂呢?也许只有你真正参与其中才会发现。这也是为什么强大如微软的企业也放弃了浏览器内核的维护,转投chromium怀抱,因为需要投入的人力、物力、财力简直太恐怖了,而且还不见好。
本文为作者“一个程序员的奋斗史”悟空问答原创文章,未经允许转载、抄袭必究!不需要,可以使用audio video 的音频和视频标签