可以,不過一個audio只能播放一個音頻,所以要同時播放兩個及以上的音頻,只得使用多個audio,一個audio對應(yīng)一個音頻
瀏覽器內(nèi)核的復(fù)雜性就在于它幾乎囊括了計算機所有的專業(yè)知識。
編譯原理:V8引擎中的各種黑優(yōu)化哪個是簡單的?沒有一定的編譯原理基礎(chǔ)你還真搞不定!
計算機網(wǎng)絡(luò):Chromium是自己搞了一套網(wǎng)絡(luò)棧的,實現(xiàn)了很多協(xié)議,比如目前移動端使用較多的QUIC。
操作系統(tǒng):Chromium的多進程,必須得每個系統(tǒng)寫一套,同時還要消除不同系統(tǒng)之間的差異,如果操作系統(tǒng)你學的一塌糊涂,我想多進程的程序你是寫不好的!
圖形學:網(wǎng)頁排版真的很復(fù)雜啊,有木有?你要支持世界各國的奇奇怪怪的文字。
我們以霸主chromium為例,目前的Chrome、360極速瀏覽器、Edge最新版,以及前段時間被爆丑聞的紅芯瀏覽器都是以其為內(nèi)核來開發(fā)。它到底有多復(fù)雜呢?請看下圖,我簡單列舉了一些重要模塊的功能:
實際上,拆分開每一項都是一套很復(fù)雜的東西。我們以其中的net網(wǎng)絡(luò)庫為例。
net網(wǎng)絡(luò)庫
如果你認為net只是一個簡單的網(wǎng)絡(luò)庫實現(xiàn),那么就大錯特錯了,還包括谷歌自己牽頭實現(xiàn)的一些協(xié)議(比如QUIC等)。它里面涉及的知識點,包含了主機解析,cookies,網(wǎng)絡(luò)改變探測,SSL,資源緩存,ftp,HTTP, OCSP實現(xiàn),代理 (SOCKS和HTTP) 配置,解析,QUIC(Quick UDP Internet Connection,是谷歌制定的一種基于UDP的低時延的互聯(lián)網(wǎng)傳輸層協(xié)議),socket池,SPDY,WebSockets……每一項分開來寫成一本厚厚的書都不成問題。具體我們可以參考下圖,github上關(guān)于net模塊的代碼結(jié)構(gòu)。
瀏覽器內(nèi)核到底有多復(fù)雜呢?也許只有你真正參與其中才會發(fā)現(xiàn)。這也是為什么強大如微軟的企業(yè)也放棄了瀏覽器內(nèi)核的維護,轉(zhuǎn)投chromium懷抱,因為需要投入的人力、物力、財力簡直太恐怖了,而且還不見好。
本文為作者“一個程序員的奮斗史”悟空問答原創(chuàng)文章,未經(jīng)允許轉(zhuǎn)載、抄襲必究!不需要,可以使用audio video 的音頻和視頻標簽