Initiation Ă Vue.js
Que se passerait-il si Monsieur Angular avait rencontré en cachette Madame Polymer?
Le concept du templating avec du âtwo-way data bindingâ dâAngular est intĂ©ressant, celui des filters aussi, mais finalement, on voit apparaĂźtre ceci aussi dans Polymer: polymer-filters, mais comme une dĂ©pendance externe ou directement dans Polymer en ce qui concerne le data binding mais avec une logique de dĂ©veloppement par composants. Je ne vous parle pas non plus des nombreuses directives fournies par Angular.
Le modĂšle par composants me plaĂźt fortement, jâai donc une tendance Ă faire pas mal de directives personnalisĂ©es lorsque je fais du Angular pour essayer de reproduire ce type de modĂšle, mais cela devient vite lourd et complexe si je compare Ă Polymer. Puis entre les contrĂŽleurs, les factories, les providers, les services, les directives, ⊠il y a de quoi virer chĂšvre.
Et finalement, passĂ© le cĂŽtĂ© magique du framework, on sâaperçoit rapidement que si on ne le maĂźtrise pas de A Ă Z (et âil y a du mondeâ) on peut rapidement faire des erreurs de conception ou gĂ©nĂ©rer des effets de bord sans sâen apercevoir.
Dâun autre cĂŽtĂ©, avec Polymer, je suis obligĂ© de me trimbaler une tonne de composants, fichiers javascript et autres choses avant dâavoir une plateforme de dĂ©veloppement opĂ©rationnelle. Mais pour le futur, je miserais plus sur Polymer quâAngular.
Parfois, je rĂȘve de quelque chose dâaussi magique mais de plus simple, que je puisse prendre en main facilement, faire cohabiter sans heurts avec dâautres frameworks (jâaime bien le cĂŽtĂ© âspartiateâ de Backbone, qui malheureusement ne possĂšde pas le cĂŽtĂ© magique du âtwo-way data bindingâ).
Et finalement, câest comme si Angular et Polymer lors dâune soirĂ©e arrosĂ©e avaient eu une relation illĂ©gitime qui aurait donnĂ© naissance Ă Vue.js, un petit framework qui apporte du templating âĂ la Mustacheâ avec un systĂšme de âtwo-way data bindingâ, mais aussi un modĂšle par composants (non obligatoire).
Le plus simple câest de montrer des exemples de code. Donc allons-y!
Les views Vue, ou les vues Vue?
Pour installer Vue.js, vous pouvez aller le chercher sur le site http://vuejs.org/guide/installation.html ou sinon un simple bower install vue
fera lâaffaire.
Puis préparez votre page
Dans mon exemple, jâai deux listes de super hĂ©ros (des arrays de super hĂ©ros) que je veux afficher dans ma page Web:
Je souhaite donc les afficher dans 2 listes différentes de type <ul><li></li></ul>
. Avec Vue.js les template ressemblent Ă des templates Mustache:
Donc, jusque lĂ , rien de dĂ©paysant (notamment pour les habituĂ©s dâAngular). Maintenant je veux lier mes âcollectionsâ de super hĂ©ros Ă mes templates. Pour cela jâai besoin de dâinstancier des objet Vue
de cette maniĂšre:
Câest trĂšs simple, comme jâai 2 templates <ul id="xmen-list">
et <ul id="avengers-list">
, je vais juste me crĂ©er une fonction Ă laquelle je passerais en paramĂštre le sĂ©lecteur de lâĂ©lĂ©ment du DOM auquel je veux me raccrocher (dans mon cas ce seront des id) et la collection Ă afficher. Et donc mon code va ressembler Ă ceci:
On essaye
Ouvrez votre page dans un navigateur:
Ăa fonctionne simplement. Maintenant, dans la console de votre navigateur, saisissez ceci:
On va donc chercher lâavenger Thor pour changer son nom:
De la mĂȘme maniĂšre vous pouvez ajouter une X-Woman Ă lâautre collection:
Donc finalement, nous sommes arrivĂ©s Ă mettre ceci en Ćuvre assez simplement. Sachez cependant que Vue.js utilise des fonctionnalitĂ©s spĂ©cifiques Ă ECMAScript 5 (Object.defineProperty
pour Ă©viter le dirty checking), donc (Ă moins dâutiliser un Polyfill), cela ne fonctionnera que sur des navigateurs rĂ©cents.
Mais ce qui est intĂ©ressant, câest que Vue.js propose aussi un systĂšme de composants (et bien dâautres choses).
Les composants avec Vue.js
PlutĂŽt que de mettre 2 templates dans ma page html, jâaimerais juste pouvoir faire quelque chose comme ceci:
Remarque: jâai insĂ©rĂ© mes composants Ă lâintĂ©rieur dâun div, car les composants Vue.js doivent ĂȘtre âraccrochĂ©sâ Ă une vue Vue.js, donc jâinstancierais une vue âreliĂ©eâ Ă root
.
Pour faire un composant avec Vue.js câest tout simple, par exemple je veux un composant <my-title></my-title>
, je le définie de cette maniÚre:
et ensuite je pourrais lâutiliser directement dans mon code html.
Donc pour mes super hĂ©ros, jâai fait une nouvelle page qui ressemble Ă ceci:
Sauvegardez, ouvrez dans le navigateur:
Donc, mĂȘme principe que tout Ă lâheure, mais avec une logique composants.
Ce nouveau framework me plaĂźt Ă©normĂ©ment, il ne me reste plus quâĂ le tester de façon un peu plus âsĂ©vĂšreâ, mais, comme ça Ă premiĂšre vue, je le trouve trĂšs trĂšs prometteur.
Tweet