我正在尝试CasperJS。我正在尝试创建一个网络剪贴簿。我需要废弃网站的所有页面并在不到5秒(每页)中获取数据。 为此,我将不得不浏览所有类似的页面。转到适当的内容div并从那里获取数据。 所以,如果该网站说1000页。我需要尽快完成整个操作。我无法控制N / W延迟,页面大小等参数。我所能控制的只是解析机制。所以我希望它尽可能快。如果甚至有小的改进,那么它将推断为URL的数量
我正在尝试解析子元素并创建CSS路径。 我需要确保解析不需要很长时间。 我听说标准java脚本在性能方面比JQuery更高效。 因此,我需要投入。
以下JQuery代码的标准JS等价物,在解析方面性能高效。
function() {
var TAG_CSS_PATH = 'div#buttons ul li.tab';
var selectOptions = $(TAG_CSS_PATH);
var results = [],i=0;
selectOptions.each(function(index,value) {
index=index+1;
results.push(TAG_CSS_PATH+':nth-of-type('+index+')');
});
return results
}
如果有人可以提供任何其他建议,我将不胜感激。
答案 0 :(得分:2)
这应该这样做:
function() {
var TAG_CSS_PATH = 'div#buttons ul li.tab',
selectOptions = document.querySelectorAll(TAG_CSS_PATH),
results = [],
l = selectOptions.length + 1;
for(var i = 1; i < l; i++){
results.push(TAG_CSS_PATH+':nth-of-type('+i+')');
}
return results;
}
答案 1 :(得分:0)
jQuery部分是$ selector,$ each。这些可以替换如下。
function() {
var TAG_CSS_PATH = '#buttons ul li.tab',
selectOptions = document.querySelectorAll(TAG_CSS_PATH),
results = [];
for( var i = 1, ln = selectOptions.length + 1; i < ln; i++ ) {
results.push(TAG_CSS_PATH+':nth-of-type('+ i +')');
}
return results;
}
由于你正在存储选择器,对我来说似乎仍然效率低下(使用nth-of-type是昂贵的选择器)。选择器从右到左阅读。
CSS /选择器优化
注意,
div#buttons
似乎是多余的。如果您正确使用CSS,那么您将只拥有与id='buttons'
匹配的一个元素。因此,通过正确使用ID,您应该能够删除选择器中的div
此外,如果您的所有.tab
都是li
,那么您也可以删除li
。如果您的所有li.tab
都在ul
内,您也可以删除ul
。