Varför jag överger jQuery 2013

2013-01-04 / 2 min.

Nåväl, det kan ändra sig. Men hur som helst.

jQuerys uttalande inför 2.0, en stor snackis förra året:

Åtminstone för mig är hela poängen med ett JS-bibliotek att lösa problem som är mellan webbläsare. jQuery 2.0 är därför en mycket kontroversiell trendförändring.

De skriver vidare om varför gamla versioner av IE skippas:

Smaller size, better performance, and the lack of problems introduced by the need for oldIE support. We expect that we can improve error handling in the $.Deferred implementation in 2.0, for example, whereas we can’t do that as long as oldIE is supported.

Ska bara nya webbläsare stödjas kommer jQuery att bli ett 32KB stort lyxtillägg och inget mer, eftersom bibliotekets enda syfte i det läget blir en alternativ JavaScript-syntax. Precis som CoffeeScript eller Dart, med undantaget att jQuery måste laddas ner i och läsas in i webbläsaren (dåligt).

Dess egenskaper kan lösas med ren JavaScript om vi bara ska stödja nya webbläsare:

// $(".news li:nth(0)")
var firstItem = document.querySelector(".news li");

// firstItem.addClass("first")
firstItem.classList.add("first");

Men ren JavaScript skrämmer en majoritet av webbutvecklare som blivit vana och bekväma med jQuery. Jag vill dock hävda att även den här gruppen bör titta på t ex Zepto.js. Kolla in Zepto.js webbläsarstöd:

Target platforms

Då är det dessutom värt att nämna att Zepto.js från början var ämnad för mobila enheter. [Swipe och touch finns i Zepto.js](http://zeptojs.com/#Touch events).

The “touch” module adds the following events, which can be used with on and off:

Som om inte ovanstående skulle räcka så finns ännu ett argument: filstorleken.

Zepto.js är 8.7KB för hela paketet gzippat. jQuery 1.8.3 ligger på 32KB gzippat. Även om jQuery påstår att de kan slimma ner 2.0 när de droppar gamla versioner av IE skulle det innebära att de kapar 75% av kodbasen, vilket jag ser som otroligt.

Att byta till Zepto.js är därför tilltalande, särskilt på grund av den korta startsträckan:

Zepto is a minimalist JavaScript library for modern browsers with a largely jQuery-compatible API. If you use jQuery, you already know how to use Zepto.

Baserat på bättre filstorlek, stöd för touch och jQuerys framtida roadmap kommer jag därför aktivt att jobba för att byta ut eller helt avveckla jQuery under detta år.

Tills dess att jQuery 2.0 har mindre storlek och lika bra, gärna bättre support för swipe och touch än t ex Zepto.js kommer jQuery vara ett föredetta ting för mig, och gör därmed Prototype/Scriptaculous sällskap.

~