jQuery技术

仿JQuery输写高效JSLite代码的一些技巧(2)

字号+ 作者:H5之家 来源:H5之家 2017-03-13 12:02 我要评论( )

$element = $containerLi.first(); //... 许多复杂的操作 // better var $container = $("#container"), $containerLi = $container.find("li"), $element = null; $element = $containerLi.first().detach(); //..

$element = $containerLi.first();
//... 许多复杂的操作
// better
var
    $container = $("#container"),
    $containerLi = $container.find("li"),
    $element = null;

$element = $containerLi.first().detach();
//... 许多复杂的操作
$container.append($element);


熟记技巧

你可能对使用JSLite中的方法缺少经验,一定要查看的文档,可能会有一个更好或更快的方法来使用它。

复制代码 代码如下:


// 糟糕
$('#id').data(key,value);
// 建议 (高效)
$.data('#id',key,value);


使用子查询缓存的父元素

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

复制代码 代码如下:


// 糟糕
var
    $container = $('#container'),
    $containerLi = $('#container li'),
    $containerLiSpan = $('#container li span');
// 建议 (高效)
var
    $container = $('#container '),
    $containerLi = $container.find('li'),
    $containerLiSpan= $containerLi.find('span');


避免通用选择符

将通用选择符放到后代选择符中,性能非常糟糕。

复制代码 代码如下:


// 糟糕
$('.container > *');
// 建议
$('.container').children();


避免隐式通用选择符

通用选择符有时是隐式的,不容易发现。

复制代码 代码如下:


// 糟糕
$('.someclass :radio');
// 建议
$('.someclass input:radio');


优化选择符

例如,Id选择符应该是唯一的,所以没有必要添加额外的选择符。

复制代码 代码如下:


// 糟糕
$('div#myid');
$('div#footer a.myLink');
// 建议
$('#myid');
$('#footer .myLink');


避免多个ID选择符

在此强调,ID 选择符应该是唯一的,不需要添加额外的选择符,更不需要多个后代ID选择符。

复制代码 代码如下:


// 糟糕
$('#outer #inner');
// 建议
$('#inner');


坚持最新版本

新版本通常更好:更轻量级,更高效,方法更多,更全面的覆盖jQuery方法。显然,你需要考虑你要支持的代码的兼容性。例如,项目是否跑在良好的支持 HTML5/CSS3

必要时组合JSLite和javascript原生代码

如上所述,JSLite就是javascript,这意味着用JSLite能做的事情,同样可以用原生代码来做。原生代码的可读性和可维护性可能不如JSLite,而且代码更长。但也意味着更高效(通常更接近底层代码可读性越差,性能越高,例如:汇编,当然需要更强大的人才可以)。牢记没有任何框架能比原生代码更小,更轻,更高效(注:测试链接已失效,可上网搜索测试代码)。

最后忠告

最后,我记录这篇文章的目的是提高JSLite的性能和其他一些好的建议。如果你想深入的研究对这个话题你会发现很多乐趣。记住,JSLite并非不可或缺,仅是一种选择。思考为什么要使用它。DOM操作?ajax?模版?css动画?还是选择器?jQuery重度开发者?

相关阅读:
js时间戳格式化成日期格式的多种方法
javascript操作excel生成报表全攻略
android GridView多选效果的实例代码
支持windows与linux的php计划任务的实现方法
PHP 获取远程文件大小的3种解决方法
jQuery表格列宽可拖拽改变且兼容firfox
java随机抽取指定范围不重复的数字
setTimeout自动触发一个js的方法
IOS实战之自定义转场动画详解
SQL Server数据迁移至PostgreSQL出错的解释以及解决方案
Knockoutjs 学习系列(一)ko初体验
Win10系统右键菜单没有"图形属性"和"图形选项"的还原方法图文教程
php目录操作实例代码
JavaWeb基础教程之Java基础加强版

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 通过JQuery实现win8一样酷炫的动态磁贴效果

    通过JQuery实现win8一样酷炫的动态磁贴效果

    2017-03-15 08:00

  • 值得前端开发人员收藏的jQuery实例教程

    值得前端开发人员收藏的jQuery实例教程

    2017-03-12 17:00

  • jQuery动态生成Bootstrap表格开发教程

    jQuery动态生成Bootstrap表格开发教程

    2017-03-12 16:03

  • javascript+jQuery补充

    javascript+jQuery补充

    2017-03-11 14:00

网友点评
p