Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Он на полную силу пользуется возможностями JavaScript 1.8, которые поддерживаются только современными браузерами, например Firefox 3.5+. Да, даже в третьем Фоксе часть не заработает. Я надеюсь, что такой шаг принесет в фреймворк изюминку и расширит круг возможностей.
nano(function () {
var i;
console.log(".title");
console.time('Nano');
for (i = 1000; i--;) nano('.title');
console.timeEnd('Nano');
console.time('Jquery');
for (i = 1000; i--;) $('.title');
console.timeEnd('Jquery');
console.log("('[class=enabled]').find('.a .b')");
console.time('Jquery');
for (i = 1000; i--;) $('[class=enabled]').find('.a .b');
console.timeEnd('Jquery');
console.time('Nano');
for (i = 1000; i--;) nano('[class=enabled]').find('.a .b');
console.timeEnd('Nano');
console.log(".a .b .c");
console.time('Nano');
for (i = 1000; i--;) nano('.a .b .c');
console.timeEnd('Nano');
console.time('Jquery');
for (i = 1000; i--;) $('.a .b .c');
console.timeEnd('Jquery');
console.log("[class=id], .title");
console.time('Jquery');
for (i = 1000; i--;) $('[class=id], .title');
console.timeEnd('Jquery');
console.time('Nano');
for (i = 1000; i--;) nano('[class=id], .title');
console.timeEnd('Nano');
console.log("span");
console.time('Nano');
for (i = 1000; i--;) nano('span');
console.timeEnd('Nano');
console.time('Jquery');
for (i = 1000; i--;) $('span');
console.timeEnd('Jquery');
console.log("#her");
console.time('Jquery');
for (i = 1000; i--;) $('#her');
console.timeEnd('Jquery');
console.time('Nano');
for (i = 1000; i--;) nano('#her');
console.timeEnd('Nano');
});
.title
Nano: 158ms
Jquery: 1014ms
('[class=enabled]').find('.a .b')
Nano: 939ms
Jquery: 2581ms
.a .b .c
Nano: 346ms
Jquery: 400ms
[class=id], .title
Nano: 1773ms
Jquery: 2323ms
span
Nano: 43ms
Jquery: 57ms
#her
Nano: 11ms
Jquery: 22ms
nano : 3270 = 100%
JQuery : 6397 = 195%
.title
Nano: 9ms
Jquery: 221ms
('[class=enabled]').find('.a .b')
Nano: 362ms
Jquery: 458ms
.a .b .c
Nano: 139ms
Jquery: 153ms
[class=id], .title
Nano: 360ms
Jquery: 441ms
span
Nano: 81ms
Jquery: 81ms
#her
Nano: 0ms
Jquery: 1ms nano : 951 = 100%
JQuery : 1355 = 142%var $ = window.document.querySelectorAll;else if (arg instanceof Array)isArray : function(o) {
return Object.prototype.toString.call(o) === '[object Array]';
}else return false;return this.each(function (elem) {
elem.parentNode.removeChild(elem);
});elem.parentNode.removeChild? =)for (var elem, i = 0; elem = this.elems[i]; i++)
elem.parentNode.removeChild(elem);
this.elems[15] = myElem;, а до этого элементов было только 3. таким образом, получится такой результат:return this.each(function (elem) {
elem.parentNode.removeChild(elem);
});
// =>
var e = this.elems;
for (var i = 0, l = e.length; i < l; i++) if (i in e) {
e[i].parentNode.removeChild(e[i]);
}
return this;
this.elems.forEach(function (elem) {
elem.parentNode.removeChild(elem);
});
return this;
var Ъ = {}; // это валидно!javascript:(function(){var Ъ = {a: 1};alert(Ъ.a);}());var ctx = $('#canvas').getContext('2d');
extend(object, {
get prop : function () {},
set prop : function () {}
});
e = arg.match(idRe) ? [In.getElementById(arg)] :
toArray(
arg.match(classNameRE) ? In.getElementsByClassName(arg) :
arg.match(tagNameRE) ? In.getElementsByTagName(arg) :
In.querySelectorAll(arg)
);
<script type="text/javascript">var startTimestamp = new Date();</script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(function() {
var finishTimestamp = new Date();
var loadingTime = startTimestamp.getTime() - finishTimestamp.getTime();
});
</script>
if (!arguments.length) {
var e = [doc];
} else if (typeof arg == s_string) {
e = arg.match(idRe) ? [In.getElementById(arg.substr(1))] :
toArray(
arg.match(classNameRE) ? In.getElementsByClassName(arg.substr(1)) :
arg.match(tagNameRE) ? In.getElementsByTagName(arg) :
In.querySelectorAll(arg)
);
var tagNameRE = /^[-_a-z0-9]+$/i;
var classNameRE = /^\.[-_a-z0-9]+$/i;
var idRe = /^\#[-_a-z0-9]+$/i;
...
else if (typeof arg == s_string) {
e = arg.match(idRe) ? [In.getElementById(arg.substr(1))] :
toArray(
arg.match(classNameRE) ? In.getElementsByClassName(arg.substr(1)) :
arg.match(tagNameRE) ? In.getElementsByTagName(arg) :
In.querySelectorAll(arg)
);
}
var rx = /^([#\.]?)([-_a-z0-9]+)$/i;
...
else if (typeof arg == s_string) {
var m = arg.match(rx);
var selector = arg;
if (m)
{
if (m[1] == '.')
selector = { Class: m[2] };
else
if (m[1] == '#')
selector = { id: m[2] }
else
selector = { tag: m[2] }
}
e = nano.find(In, selector);
}
Nano — миниатюрный JavaScript фреймворк