提高jQuery性能优化的技术

提高jQuery性能优化的技术
下面是分享以下技巧来改进jQuery性能优化

缓存变量

DOM遍历是昂贵的,因此元素缓存将尽可能重用。

复制代码代码如下所示:
H = $(#元),Height();

$(#元),Css('height,H-20型);

建议

$元=美元(#元);

H = $()element.height;

element.css美元('height,H-20型);
避免使用全局变量

jQuery与Javascript相同,一般来说,最好确保变量在函数作用域内。

复制代码代码如下所示:
$元=美元(#元);

H = $()element.height;

element.css美元('height,H-20型);

建议

VaR(#美元美元元=元);

H = $()element.height VaR;

element.css美元('height,H-20型);
使用匈牙利命名方法

jQuery对象很容易通过在变量前面添加一个$前缀来标识。

复制代码代码如下所示:
第一组(# VaR美元第一);

无功二=美元(' #二);

VaR值= $()first.val;

在添加前缀之前,在jQuery对象中

VaR(#第一=美元美元第一);

VaR(#美元美元二=二),

VaR值= $()first.val;
使用var链(单var模式

合并多个变量声明为一个声明,我建议把未赋值的变量在后面。

复制代码代码如下所示:

VaR

第一,美元美元(#第一),

二美元美元=(#二),

价值= $()first.val,

k=3,

cookiestring = 'somecookiesplease,

我,

J,

MyArray = { };
请use'on

在新版本的jQuery中,使用一个较短的(单击)来替换一个函数,如单击()。在以前的版本中,on()是绑定()。由于jQuery 1.7版本,on()添加了事件处理程序的首选方法。但是,为了一致性,您可以简单地使用on()方法。

复制代码代码如下所示:
first.click美元(函数(){()

first.css美元('border','1px固体红);

first.css美元(颜色','蓝色');

});

first.hover美元(函数(){()

first.css美元('border','1px固体红);

})

建议

在此一美元(,函数(){(){

first.css美元('border','1px固体红);

first.css美元(颜色','蓝色');

})

在此美元('hover,函数(){(){

first.css美元('border','1px固体红);

})
简化Javascript

一般来说,尽可能多地合并函数是更好的。
first.click美元(函数(){()

first.css美元('border','1px固体红);

first.css美元(颜色','蓝色');

});

建议

在此一美元(,函数(){(){

first.css美元({

边境:'1px固体红',

'color':'blue'

});

};复制代码代码如下所示:
first.click美元(函数(){()

first.css美元('border','1px固体红);

first.css美元(颜色','蓝色');

});

建议

在此一美元(,函数(){(){

first.css美元({

边境:'1px固体红',

'色':'蓝色'

});

});
连锁经营

jQuery实现方法的链式操作非常简单。

复制代码代码如下所示:
second.html美元(价值);

second.on美元(听到咔哒声,函数(){(){

警报(hello大家);

});

second.fadein美元(慢的);

second.animate美元({身高:'120px},500);

建议

second.html美元(价值);

second.on美元(听到咔哒声,函数(){(){

警报(hello大家);

})。FadeIn(慢的),动画({身高:'120px},500);
保持代码的可读性

随着代码的简化和链的使用,代码很难阅读。可以起到增加紧缩和换行效果很好。

复制代码代码如下所示:
second.html美元(价值);

second.on美元(听到咔哒声,函数(){(){

警报(hello大家);

})。FadeIn(慢的),动画({身高:'120px},500);

建议

second.html美元(价值);

二美元

,(听到咔哒声,函数(){ alert(你好大家');})

渐显(慢的)。

。动画({身高:'120px},500);
短路评估的选择

短路求值是一个表达式从左到右的评价,与(逻辑与)或| |(逻辑或运算符)。

复制代码代码如下所示:
功能initvar($ myVar){

如果(!$ myVar){

$ myVar =美元(' #选择器);

}

}

建议

功能initvar($ myVar){

$ myVar =美元(' #选择器)| | myVar美元;

}
选择快捷方式

简化代码的方法之一是使用编码快捷方式。

复制代码代码如下所示:
如果(collection.length > 0){等}

建议

如果(集合,长度){ }
重作业中元素的分离

如果要对DOM元素进行大量操作(在一行中设置多个属性或CSS样式),建议首先分离元素并添加它。

复制代码代码如下所示:
VaR

集装箱= $(美元#容器),

containerli = $(美元#容器里),

$ = null;

containerli.first美元美元元=();

许多复杂的操作…

/更好

VaR

集装箱= $(美元#容器),

containerli = container.find美元美元(礼),

$ = null;

containerli.first美元美元元=()将();

许多复杂的操作…

container.append美元($元);
记忆技巧

您可能缺乏使用jQuery中的方法的经验,这是一个必须查看的文档,可能有更好或更快的方法使用它。

复制代码代码如下所示:
$(# ID)数据(键,值);

建议(效率)

美元。数据(# ID,关键值);
使用查询缓存父元素

正如前面提到的,DOM遍历是一种昂贵的操作,典型的方法是在选择子元素时缓存父元素并重用缓存元素。

复制代码代码如下所示:
VaR

集装箱=(#美元美元的集装箱),

containerli = $(美元的#容器里),

containerlispan = $(美元的#容器里跨度);

建议(效率)

VaR

集装箱=(#美元美元的集装箱),

containerli = $(美元container.find李),

containerlispan = $(美元containerli.find 'span);
避免通用选择器

子选择器中泛型选择器的性能非常糟糕。

复制代码代码如下所示:
$(容器> *);

建议

$(集装箱)的孩子();
避免隐式通用选择器

一般选择器有时是隐式的,不容易找到。

复制代码代码如下所示:
$('。someclass:收音机);

建议

$('。someclass输入:收音机);
最佳的选择

例如,id选择器应该是唯一的,因此不需要添加其他选择器。

复制代码代码如下所示:
$('div #身份识别码);

$('div #页脚a.mylink);

建议

$(#身份识别码);

$(#页脚。MyLink);
在这里避免多个ID选择器强调ID选择器应该是唯一的,不需要添加额外的选择器,并且不需要更多的后代ID选择器。

复制代码代码如下所示:
$(#外#内');

建议

$(#内');
坚持最新版

新版本通常是更好的:更轻、更高效。显然,你需要考虑你想要支持的代码的兼容性。例如,2版不支持IE 6 / 7 / 8.abandoning遗弃的方法和重点的丢弃方法的每一个新版本是很重要的,尽量避免这些方法的运用。

复制代码代码如下所示:
$(#外#内');

建议

$(#内');
利用CDN

谷歌的来电显示可以保证最近的缓存和用户快速响应的选择。(使用谷歌该去寻找你自己的地址,这里的地址是不可用的,和CDN的jQuery官方网提供)。

如果必要的话,结合jQuery和Javascript本机代码

如上所述,jQuery是Javascript,这意味着事情可以做jQuery也可以使用本地代码。代码(或香草)可能比jQuery可读和可维护的代码少,寿命更长。但这也意味着更高效的(通常是较低的代码,更糟糕可读性、性能、较高的例如,汇编语言,当然,更强大的人才的需要)。记住,没有框架是更小,更轻,比本地代码更有效(注:测试环节都失败了,在网上搜索的测试代码),香草和jQuery之间性能的差异来看,我强烈建议吸收两人的本质和使用本地代码等价(可能)到jQuery。

最后的建议

最后,我记录下这篇文章的目的提高jQuery的性能和其他一些好的建议。如果你想对这一课题的深入研究,你会发现很多乐趣。记住,jQuery是不是必不可少的,只有一个选择。想想你为什么要使用it.dom操作吗Ajax吗模板CSS动画还是选择器引擎也许Javascript迷你框架或自定义版本的jQuery是更好的选择。

以上是对jQuery性能优化的详细说明,希望对您有所帮助。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部