search

Home  >  Q&A  >  body text

javascript - 为什么浏览器不内嵌代码库?

比如JavaScript的几个常用库,jquery-1.9.1.min.js:90.4KB yui-3.9.1.min.js:85KB,这些库每天被引用的次数不计其数,文件体积也不大,为什么浏览器厂商不在浏览器内部内置这些库呢?那岂不是能节省很多网络流量,提升站点打开速度吗?他们处于什么方面考虑不这么做呢?

如果是考虑到js版本升级与浏览器版本不同步的问题的话,那把js库的某个版本与浏览器的数个临近版本绑定在一起应该行的通吧?比如 ie6-10、firefox10-20,统一内嵌jquery1.7.2.min.js,不升级。ie11同时内嵌jquery1.7.2.min.js、jquery1.9.2.min.js,如果jq的内置版本已经达不到网站站点的需求的时候,那我们再直接引用其他的本地/CDN地址,这样不行吗?例如这样:

<script src="$browserRoot$/jquery1.7.2.min.js"></script>//提示浏览器可以加载内置的jQuery.js
<!--[if gte ie11]><script src="$browserRoot$/jquery1.9.2.min.js"></script><![endif]-->//高版本用户启用高版本jq
<script src="jquery1.8.2.min.js"></script>//假定客户浏览器主体分布在ie6-9,同时站点又想启用jquery1.8.2,
//于是可以直接引用本地/CDN版本的jq
PHP中文网PHP中文网2816 days ago760

reply all(9)I'll reply

  • ringa_lee

    ringa_lee2017-04-10 12:47:15

    对于很多 web 应用,常用库早已封装成了常用的库,比如 rails ,已经有很稳定的 gem ,而且上线 上,基本上包括 jquery 在内的所有应用基本上都压成了一个文件,这样只在第一次访问是载入慢些,后面都是很快的。

    而且浏览器厂商太多,要求所有浏览器都内置不太可能,所以你不得不在页面中检测判断,结果反倒不如直接引入文件来的方便。

    实在不行,也可以引入cdn嘛。

    浏览器本地解决是否必要

    其实不在于这样行不行,只是这样做,用处不大而已,现在的带宽对于载入一个脚本来说,完全足够了,更何况基本上这些脚本都会缓存下来。真的没有必要,它会增加开发人员的复杂度,也会增加浏览器厂商的复杂度,但其实 CDN 完全就能解决。优化是件好事,但是过犹不及呀。

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 12:47:15

    其实lz这个想法很不错,可以提给360之类的浏览器,他们还可以作为营销点来做。。。。。不需要太完美,只需要能加速就行。。。。

    reply
    0
  • ringa_lee

    ringa_lee2017-04-10 12:47:15

    这工作可以建议W3C牵头做,比如要求支持HTML5的浏览器必须内置常用的js,写网页时只需要直接引用就可以了,就像这样的通用标签一样。

    reply
    0
  • ringa_lee

    ringa_lee2017-04-10 12:47:15

    对于浏览器来说做好本地缓存就能节约很多流量了,这比内置带来的复杂度要低多了。

    reply
    0
  • 大家讲道理

    大家讲道理2017-04-10 12:47:15

    没必要, 又得做很多判断的工作...

    reply
    0
  • 阿神

    阿神2017-04-10 12:47:15

    低耦合! 人每天都要吃饭,那为什么不随身带着篓子--装满各种食物、饮料、水

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 12:47:15

    如果每个网站都需求,很有必要 1.网站(服务端)压力减小 2,客户端下载压力减小,用户带宽也能节省 3,从宏观上说假如有1000个网站(1个用户),都要下载同一个,那更多用户哪?!这样的作用是不可忽视的 4,加快网页的解析速度,更快的呈现 很不同上面人的说法,如果这个结果能起到很好的作用,办法总是有的

    reply
    0
  • 阿神

    阿神2017-04-10 12:47:15

    浏览器所有东西都基于共同认可的W3C规范,没有规范就谈不上与网站开发者的沟通。代码库是一堆没有规范的代码。单就jquery而言,$符号凭什么就给你用了?我自己做一个库为什么就不能用这个符号?更何况存在不同版本的jquery,有的需要继续支持IE7/ie6,有的不需要。其接口细节也会有所不同,你还要做预判断。

    reply
    0
  • 黄舟

    黄舟2017-04-10 12:47:15

    你做了缓存就可以了,也不是每次都要载入

    reply
    0
  • Cancelreply