jquery 和原生的js比较

JavaScript013

jquery 和原生的js比较,第1张

jq是一个框架,里面是用原生js封装的各种函数。

(1)jquery没有分割模块,只能全部导入。在实际开发中,往往我们只需要某些功能,而不是jq的所有,于是这就出现一个问题,比如只想使用jq的$("#id")函数获取一个dom元素,但是我们却引入了91kB(压缩后)大小的jq包,这对于页面的加载速度影响是很大的,尤其对于门户网站而言,其中的图片和其它资源非常丰富,每1kb都显得十分重要。

(2)jquery本身也是开发人员为了提高效率而开发的一种库,主观来说对于开发者本身的提高非常有帮助,因为要封装一个比较完善的库需要比非常棒的js基础和很广的知识面,包括面向对象,模块化,以及各种大大小小的js api和浏览器间不不同实现。他不是推荐的开发模式而是一种备用的提高效率的方式。在开发中我们遇到很多js没有封装的功能时,就需要我们即时开发,或者导入以前开发好小库。jq对于高级前端工程师来说只是一种简单库,而高级前端工程师同样也有能力开发属于自己的库,定制更加完善的功能。

各种封装,包括jQuery, dojo等等,主要目的就是为了省心,拿jQuery来说:

jQuery对不同浏览器的事件,DOM对象,都进行了封装,各种操作都可以直接兼容各种浏览器, 要知道, 不同浏览器的区别不仅仅是在CSS里写"-webkit-"还是"filter"的区别, 连事件模型这种底层的东西都不一样

jQuery特有的CSS-LIKE选择器, 链式写法, 封装的各类animate函数, 封装了的异步加载, 都大幅提高了开发效率, 减少重复劳动

jQuery用delay和一系列的函数封装了AJAX操作, 这个功能目测还在不断改进和完善. 反正是比JS省心就是了.

其他就是有些常用函数JQ有所以不用自己写了,你比如浏览器检测...

插件不断丰富, 资料丰富 等等

当然,这样也导致了

jQuery比原生JS慢上 10倍(chrome)~100倍(ie). 具体数忘了, 反正是这个数量级的...尤其是有些人喜欢滥用选择器和不用链式写法

所以说, 如果只用一句JS就可以解决的问题, 就不要用JQ了啊亲...亲测$('#x')比getElementById('x')慢40倍

jQuery也不见得适用所有情况就是了, 网站规模更大就会凸显jQuery的不足. 比如没有命名空间- -. 很多网站是根据自己的情况建立自己的函数库.

题外话, 如果项目相比"一个网页"更偏向"一个APP"的情况, jQuery不见得是最合适的