JS knihovny a další balast v roce 2013

JS knihovny a další balast

v roce 2013

Ondřej Žára, Seznam.cz

O čem to bude?

Status quo JS knihoven

Jaká je vaše oblíbená?

Problémy knihoven

Balast: neužitečné zatížení, přítěž

Můžeme pracovat s něčím lepším?

Když začínám nový projekt…

Polyfill

Feature detection

Typické scénáře

Na počátku…

S polyfilly

DOM – dotazování

DOM – class

Události

XMLHttpRequest

JavaScript 1.6

var data = [....]; var filtered = data.filter(function(item) { return item.x == y; });

ECMAScript 5

Object.create

Object.create = function(parent) { var tmp = function() {}; tmp.prototype = parent; return new tmp(); } var Parent = function() {}; Parent.prototype.doStuff = function() { /* ... */ } var Child = function() {}; Child.prototype = Object.create(Parent.prototype);

Function.prototype.bind

Function.prototype.bind = function(context) { var func = this; return function() { return func.apply(context, arguments); } } var Animal = function() {} var a = new Animal(); setTimeout(a.eat.bind(a), 1000);

Function.prototype.bind

bind pro starší a pokročilé

Function.prototype.bind = function(context) { var func = this; var args1 = Array.prototype.slice.call(arguments, 1); return function() { var args2 = Array.prototype.slice.call(arguments); return fn.apply(context, args1.concat(args2)); } }

Závěrem

Až začnu nový projekt…

Prostor pro otázky
Ondřej Žára, Vývojář UI, ondrej.zara@firma.seznam.cz