title: JavaScript et abstraction slug: javascript-abstraction date: 2015-12-07 chapo: La difficulté du choix d’une abstraction réside dans la perte de savoir-faire qu’elle entraine. > However, Vanilla JS does not mean “use no abstractions”. Programming is all about abstractions! The Vanilla JS movement, is about favoring speed, smaller abstractions and understanding of the Web Platform, over big libraries that we treat as a black box. It’s about using libraries to save time, not to skip learning. > > *[Introducing Bliss: A 3KB library for happier Vanilla JS](http://lea.verou.me/2015/12/introducing-bliss-a-3kb-library-for-happier-vanilla-js/)* ([cache](/david/cache/5d5b6602ee225a8262987bded2b6ac2b/)) Je suis toujours confronté à la dure réalité d’une API difficile à prendre en main lorsque je présente JavaScript à [des personnes n’ayant jamais pratiqué un langage de programmation](/david/pro/enseignement/). D’un côté, il y a la chance de pouvoir avoir un [feedback visuel](/david/blog/2013/tdd-conception-emergente/) immédiat lorsque l’on utilise la console du navigateur et en contrepartie on doit s’imposer des `querySelectorAll`, `addEventListener` et autres joyeusetés pour convertir une `NodeList` en `Array` qui sont incompréhensibles pour un débutant. Je me suis donc mis en quête d’une couche d’abstraction minimaliste pour [comprendre](https://github.com/davidbgk/comprendre-javascript) JavaScript. La plus intéressante que j’ai pu trouver est [bling.js par Paul Irish](https://gist.github.com/paulirish/12fb951a8b893a454b32), en une dizaine de lignes j’ai une bonne partie des raccourcis souhaités et les développeurs jQuery [Full Stack Overflow](https://www.christianheilmann.com/2015/07/17/the-full-stackoverflow-developer/) ([cache](/david/cache/dd3b7b13443bac5d9fe0011426026429/)) ne sont pas trop perdus. Les commentaires permettent d’arriver à une version améliorée qui ne touche pas au `prototype` et m’ont même fait découvrir [ki.js](https://github.com/dciccale/ki.js) qui est à la limite de ce que je m’étais imposé en terme de taille de code. Et puis je découvre [Bliss](http://blissfuljs.com/) et je commence à douter. **La difficulté du choix d’une abstraction réside dans la perte de savoir-faire et de curiosité qu’elle entraine.** J’arrive aux quelques lignes suivantes : :::html