Nouveau Framework Aurelia

Et voici encore un nouveau framework web : Aurelia.

Quels sont vos avis sur ce nouveau framework ?

1 « J'aime »

Il est intéressant car il est clairement tourné vers les technos à venir ( O.o , classes, webcomponents …) .
Après si on regarde , c’est un Angular 2.0 bis ! J’ai appris hier que le projet venait d’un ancien membre de la team d’Angular justement…

Pour l’instant Angular 2.0 n’est pas prêt et il y a encore peu d’infos dessus. Ca peut être une mise en bouche intéressante.

A voir maintenant comment ça va évoluer : vers l’adoption future d’Angular 2.0, d’une scission avec 2 frameworks plus ou moins différents ou carrément une regression d’Angular

J’attendais d’avoir une première réponse pour donner mon avis :)

Donc clairement, sur le papier, ce framework me parait très intéressant. Selon moi, c’est AngularJS 2 avant l’heure.

Déjà, quand on regarde comment le code source est fait, on s’aperçoit que tout est divisé en modules distincts. C’est très bon signe, et si jamais un des modules ne nous convient pas, on pourra toujours le forker et le modifier ! Un des problème d’AngularJS, c’est justement qu’on est obligé de prendre TOUT ou RIEN du framework. Ici, ça a l’air beaucoup plus souple et chaque partie bien découplée.

Il y a notamment le module “aurelia-binding”. Selon moi, cette partie est un point faible d’angularJS, qui ne fait que du dirty checking avec le fameux $digest loop, et peut causer de gros problèmes de performance. L’approche adoptée par Aurelia me plait beaucoup, avec un binding personnalisable et adaptatif, qui peut même être implémenté manuellement si besoin. Un extrait de la doc:

Note: Aurelia has a unique and powerful databinding engine that uses adaptive techniques to pick the best way to observe changes in each property. For example, if you are using a browser with Object.observe support, both firstName and lastName will be observed with that strategy. If not, we’ll generate getters and setters that batch changes to the Micro Task Queue, correctly emulating Object.observe behavior. Since the computed property fullName can’t be observed with either of these techniques, we use dirty checking. We’ll use the best technique depending on the situation and you can even plug in custom strategies as well in order to “teach” the framework how to observe special types of model patterns. We think it’s pretty cool.

Et bien sûr, le gulpfile qui va bien pour utiliser n’importe quel language qui compile en JavaScript ! Merci :)

3 « J'aime »

Je ne suis pas allé aussi loin dans l’exploration ;) merci du retour poussé.

Oui c’est ce que je pense aussi, un Angular 2.0 avant l’heure.
J’ai poussé le dev sur Angular v1.x, l’annonce de la V2 et la rupture avec l’existant ne m’a pas dérangé car je me suis rendu compte des faiblesses petit à petit. Après il y a peu d’infos encore sur Angular 2.0 et Aurelia montre clairement la voie d’un Angular futuriste

1 « J'aime »

Un peut trop verbeux, vous ne trouvez pas ?

A quel niveau, et par rapport a quel framework JS ? Je trouve que quelques features ES6 permettent de le rendre moins verbeux justement.

L’ES6 j’adore, je parle au niveau des trucs spécifiques au framework lui même, du genre :

Behavior.withProperty('router');
import {Behavior} from 'aurelia-framework';

export class NavBar {
  static metadata(){ return Behavior.withProperty('router'); }
}

Pour le binding :

<template>
  <import from='./nav-bar'></import>

  <nav-bar router.bind="router"></nav-bar>

  <div class="page-host">
    <router-view></router-view>
  </div>
</template>

Le routing :

import {Router} from 'aurelia-router';

export class App {
  static inject() { return [Router]; }
  constructor(router) {
    this.router = router;
    this.router.configure(config => {
      config.title = 'Aurelia';
      config.map([
        { route: ['','welcome'],  moduleId: 'welcome',      nav: true, title:'Welcome' },
        { route: 'flickr',        moduleId: 'flickr',       nav: true },
        { route: 'child-router',  moduleId: 'child-router', nav: true, title:'Child Router' }
      ]);
    });
  }
}
1 « J'aime »

Un article intéressant : Aurelia Q&A

Rob Eisenberg adore le comparer à Angular 2 en termes de tailles de code.
Pour le coup, je ne pense pas qu’on puisse le reprocher d’être verbeux. Il repose énormément sur les conventions :

A mes yeux ça frise presque l’adversité constante, plutôt malsaine.

1 « J'aime »
Human Coders - Le centre de formation recommandé par les développeur·se·s pour les développeur·se·s