为什么客户端JavaScript采用传输源代码而不是字节码?

网友解答: 这是一个计算机网络的基础问题。所有的网络应用程序在进行网络通信时,都要选择应用层通信协议,比如邮件服务器使用SMTP来传输电子邮件,邮件客服端使用POP3来读取邮件,而所有浏

网友解答:

这是一个计算机网络的基础问题。所有的网络应用程序在进行网络通信时,都要选择应用层通信协议,比如邮件服务器使用SMTP来传输电子邮件,邮件客服端使用POP3来读取邮件,而所有浏览器都使用HTTP或HTTPS协议来访问网站,从网站服务器读取网页资源。

HTTP和HTTPS协议都是基于文本的应用层通信协议,设计这个协议的初衷,就是为了让文档具备更好的可读性,这也是HTTP/HTTPS协议快速发展成为互联网使用最广泛的协议的原因之一。或许使用文本进行传输的效率不如二进制高,但是更多的是优点。

首先就是上文所说的可读性。文本的可读性远高于其他二进制格式的文件,这使得用户可以用肉眼读懂传输内容,这解决了早期互联网通信的痛点。

开放的浏览器生态。由于使用文本传输,客户端在执行脚本时也不需要依赖某种固定的执行引擎,可以自行研发,避免了垄断和各种专利的壁垒,同时也避免了各种跨平台问题,推动浏览器的百花齐放。这一点十分重要,否则我们可能现在还在使用某一款上古浏览器。

随着互联网的发展,上述的问题可能不再成为问题,HTTP2协议也已经制定。HTTP2协议最大的变化就是不再是文本协议,而是二进制传输协议。当然,这暂时还不会影响javascript的执行模式,虽然传输过程是二进制,但服务器只是对代码进行了压缩,浏览器会将其解析为JAVASCRIPT代码之后,再解释执行。要想达到直接传输编译好的字节码,需要统一JAVASACRIPT引擎,这是一项复杂的工作,目前没有看到这方面的动向。

欢迎大家批评指正。如果喜欢我的回答,一定记得点赞和关注,谢谢!

标签: