為什么客戶端JavaScript采用傳輸源代碼而不是字節(jié)碼?
網(wǎng)友解答: 這是一個計算機網(wǎng)絡的基礎問題。所有的網(wǎng)絡應用程序在進行網(wǎng)絡通信時,都要選擇應用層通信協(xié)議,比如郵件服務器使用SMTP來傳輸電子郵件,郵件客服端使用POP3來讀取郵件,而所有瀏
這是一個計算機網(wǎng)絡的基礎問題。所有的網(wǎng)絡應用程序在進行網(wǎng)絡通信時,都要選擇應用層通信協(xié)議,比如郵件服務器使用SMTP來傳輸電子郵件,郵件客服端使用POP3來讀取郵件,而所有瀏覽器都使用HTTP或HTTPS協(xié)議來訪問網(wǎng)站,從網(wǎng)站服務器讀取網(wǎng)頁資源。
HTTP和HTTPS協(xié)議都是基于文本的應用層通信協(xié)議,設計這個協(xié)議的初衷,就是為了讓文檔具備更好的可讀性,這也是HTTP/HTTPS協(xié)議快速發(fā)展成為互聯(lián)網(wǎng)使用最廣泛的協(xié)議的原因之一?;蛟S使用文本進行傳輸?shù)男什蝗缍M制高,但是更多的是優(yōu)點。
首先就是上文所說的可讀性。文本的可讀性遠高于其他二進制格式的文件,這使得用戶可以用肉眼讀懂傳輸內容,這解決了早期互聯(lián)網(wǎng)通信的痛點。
開放的瀏覽器生態(tài)。由于使用文本傳輸,客戶端在執(zhí)行腳本時也不需要依賴某種固定的執(zhí)行引擎,可以自行研發(fā),避免了壟斷和各種專利的壁壘,同時也避免了各種跨平臺問題,推動瀏覽器的百花齊放。這一點十分重要,否則我們可能現(xiàn)在還在使用某一款上古瀏覽器。
隨著互聯(lián)網(wǎng)的發(fā)展,上述的問題可能不再成為問題,HTTP2協(xié)議也已經(jīng)制定。HTTP2協(xié)議最大的變化就是不再是文本協(xié)議,而是二進制傳輸協(xié)議。當然,這暫時還不會影響javascript的執(zhí)行模式,雖然傳輸過程是二進制,但服務器只是對代碼進行了壓縮,瀏覽器會將其解析為JAVASCRIPT代碼之后,再解釋執(zhí)行。要想達到直接傳輸編譯好的字節(jié)碼,需要統(tǒng)一JAVASACRIPT引擎,這是一項復雜的工作,目前沒有看到這方面的動向。
歡迎大家批評指正。如果喜歡我的回答,一定記得點贊和關注,謝謝!