web-dev-qa-db-fra.com

Angular 2 VS Aurelia? 2017

J'ai évalué de nombreux cadres SPA. Je suis coincé avec les deux suivants et je ne peux pas décider lequel utiliser pour mon prochain projet:

  1. Angulaire 2
  2. Aurelia

Les deux cadres promettent beaucoup d'opérations. J'étais vraiment excité par le angular 2 car il est soutenu par Google et a été adapté par de nombreuses grandes entreprises. J'ai donc fait une comparaison de ma propre excuse (doigt croisé) à Angular fans;). Je suis aussi fan mais .....

Voici ce que j'ai fait:

Angulaire 2

  1. Téléchargement de QuickStart depuis https://github.com/angular/quickstart/archive/master.Zip
  2. Suivre les instructions de démarrage rapide et exécuter l'application, jusqu'à présent tout va bien
  3. Jetez maintenant un œil à l'onglet Réseau dans chrome Outils de développement. WOW, je vois au moins 36 requêtes http et la taille totale de cette application simple est d'environ 1,4 Mo minimisé.
  4. Googlé un peu et a constaté que nous pouvons réduire la taille et minimiser jusqu'à 50k et les requêtes http à 10 en suivant AOT, arborescence, gzip .... beaucoup d'autres méthodes. C'est suffisant.
  5. Enfin, comparé le style de codage: afin d'afficher simplement Bonjour Angular nous devons créer main.ts , app.module.ts , app.component.ts . Chaque fichier doit inclure @ Component () le décorateur nécessite donc d'importer angular noyau presque sur chaque module. Ensuite, importez ce composant dans le module. ts puis bootstrap the main.ts.

Aurelia

  1. Téléchargé depuis http://aurelia.io/downloads/basic-aurelia-project.Zip
  2. J'ai suivi les instructions sur le démarrage rapide.
  3. Ajout de deux fichiers app.ts et main.ts avec bonjour le monde dedans.
  4. Exécutez l'application jusqu'à présent, elle fonctionnait si bien.
  5. vérifié l'onglet réseau dans les outils de développement, il affiche 0,9 Mo et 9 requêtes http sont effectuées.
  6. Après avoir suivi une même procédure pour minimiser la taille avec gzip et le regroupement, il arrive à environ 170 Ko avec 5 requêtes http.

Enfin comparé le style de codage des deux cadres. Clairement, Aurelia a un code clair facile à comprendre.

Le seul inconvénient que je peux voir dans Aurelia est qu'il est assez nouveau et presque inconnu de nombreux développeurs JS et a une communauté pauvre jusqu'à présent.

Je les vois comme Microsoft Windows (Angular 2) et Apple (Aurelia). Apple est plus stable et a une gamme spécifique d'utilisateurs d'autre part, Microsoft Windows est presque partout.

Que devrais-je faire? Veuillez aider.

Merci

16
Riy

Peut-être que l'AMA suivant vous est utile, bien qu'il soit un peu plus ancien maintenant: AMA avec Aurelia Team

Les questions et réponses les plus importantes pour vous sont les suivantes (uniquement citées):

Croyez-vous que Angular 2.0 s'écarte des normes? Aurelia vise-t-elle à être conforme aux normes et indépendante?

Dans ce cas, ce n'est pas une question de croyance, mais de fait. Si vous regardez la spécification HTML et que vous regardez Angular 2, vous verrez qu'elles ne sont pas harmonieuses.

Il y a plus d'un an, l'équipe Angular 2 a présenté sa syntaxe de liaison symbolique. Bien qu'il s'agisse d'un code HTML conforme aux normes, la communauté a fait remarquer qu'il n'était pas conforme SVG (je ne l'ai pas confirmé moi-même). Bien que les membres de la communauté l'aient souligné, l'équipe Angular 2 n'a apporté aucune modification à leur conception. Depuis la version bêta 2, ils ont en fait adopté une syntaxe d'attribut/élément supplémentaire qui implique des contraintes de respect de la casse. Le HTML n'est pas sensible à la casse et donc cela rompt avec la spécification. Par conséquent, il n'est en fait pas possible de faire fonctionner Angular 2 en mode natif avec l'analyseur du navigateur, l'API DOMParser ou même innerHTML parce que ce mécanisme "normalise" le boîtier de différentes manières en fonction du navigateur et donc du boîtier ne peut pas être "digne de confiance". Cela signifie que si Angular 2 dépend de la casse (c'est-à-dire ngFor et ngModel attrs), le navigateur ne pourra pas gérer cela de manière native. Pour résoudre ce problème, je crois comprendre que l'équipe Angular 2 a dû implémenter son propre analyseur de balisage propriétaire. Bottom line: Je ne sais pas comment ils appellent leur langue d'affichage, mais ce n'est pas du HTML.

Pour Aurelia, la conformité aux normes est très, très importante. Nous avons travaillé dur pour nous aligner sur les normes actuelles et émergentes et pour ne rien faire qui pourrait entrer en conflit avec elles ou les violer. Nous devons ajouter des fonctionnalités supplémentaires, qui ne sont pas encore couvertes (comme la liaison de données), mais nous l'avons fait d'une manière conforme aux normes Web existantes et émergentes. Nous prévoyons de continuer de cette façon indéfiniment parce que nous voulons que les développeurs Aurelia soient de bons développeurs Web.


Je viens d'angulaire, pourquoi devrais-je utiliser aurelia et non angular 2? Mon avantage est que je connais déjà angular et qu'il y a une énorme communauté. Merci.

Tout d'abord, je pense qu'il est important de corriger l'hypothèse ici. L'hypothèse est que Angular 2 n'est qu'un changement incrémentiel ou évolutif de Angular 1. Ce n'est pas vrai. La seule chose qui est la même entre Angular 1 et Angular 2 sont les lettres A, N, GU, L, A et R. Ce sont deux cadres complètement différents, écrits dans différents langages de programmation, avec différentes architectures, différents concepts, différentes méthodologies de développement, différentes capacités, différentes communautés ... tout différent.

Je suis sur ma boîte à savon ici ... mais je pense qu'il était un peu trompeur d'appeler ce cadre Angular n'importe quoi. C'est une bibliothèque complètement nouvelle et différente, sans aucun lien avec l'ancienne. Il aurait fallu lui donner un nouveau nom. Cependant, ils lui ont donné le même nom pour exactement les raisons que vous mentionnez. Ils veulent que vous ne pensiez pas à adopter Angular 2 parce que vous pensez que c'est juste un changement progressif ou évolutif, pas quelque chose de complètement différent.

Le portage de Angular 1 vers Angular 2 est un travail énorme, même avec leurs outils de "migration", qui ne sont pas du tout des outils de migration. Ce sont des stratégies d'intégration. La migration demande en fait beaucoup de travail. Vous devez réécrire complètement et repenser comment écrire votre application. Certaines applications [Angular 1 ne seront pas réalisables dans Angular 2 en raison de la façon dont Angular 2 a verrouillé ou supprimé certaines capacités liées à la composition dynamique de l'interface utilisateur et observation d'expressions contraignantes.

Fait intéressant, il est en fait plus facile de porter une application Angular 1 vers Aurelia. Nous avons une tonne de gens dans la communauté qui l'ont fait et qui sont très satisfaits de l'expérience. Voici une courte liste des avantages d'Aurelia par rapport à Angular 2:

  • Aurelia est une bibliothèque beaucoup plus petite. Angular 2 est 750k minifié et n'inclut pas de routeur, d'animation ou de client http. Ce n'est pas quelque chose que quiconque devrait penser à aller en production avec jamais. Aurela est minifié à 350k et cela inclut un routeur, une animation et un client http. Si vous ciblez des navigateurs modernes et n'avez pas besoin de tous les polyfills que nous fournissons, vous pouvez même réduire cette taille jusqu'à 100 000 autres.
  • Dans le benchmark de rendu indépendant dbmonster re-Paint, Aurelia est aussi rapide ou plus rapide que Angular 2. Avec notre prochain plugin de virtualisation ui, il est presque 2x plus rapide que Angular 2.
  • Aurelia est conforme aux normes; Angular 2 ne l'est pas. Voir l'autre réponse AMA pour plus de détails.
  • Aurelia prend mieux en charge les modèles de présentation séparés tels que MVVM. MVC et MVP. Dans Aurelia, il y a une séparation nette entre les vues et les modèles de vues; toutes les responsabilités sont à leur place. Dans Angular 2, vous devez configurer votre modèle de vue avec les détails d'implémentation internes de la vue, rompant ainsi l'encapsulation et rendant difficile, voire impossible, la réutilisation des modèles de vue ou des vues. Cela augmente également considérablement les coûts de maintenance et rend plus difficile pour les équipes de développeurs de travailler en parallèle sur les composants.
  • Aurelia est très discrète. Pour la plupart, vous écrivez du code ES 2016 ou TypeScript ordinaire. Vous ne voyez pas le cadre beaucoup ou pas du tout dans votre code JavaScript. Il reste à l'écart. Ceci est extrêmement important pour la longévité et la maintenance de votre code, ainsi que pour l'apprentissage et la lisibilité. Angular 2, en revanche, doit être importé partout et ses métadonnées sont requises dans tout votre code. C'est une configuration très lourde, tout comme Angular 1, seule la configuration est différente.
  • Aurelia est plus interopérable avec d'autres bibliothèques que Angular 2 parce que nous n'utilisons pas de résumé ou d'abréger le DOM inutilement. Plus un cadre reste proche des normes et plus il reste éloigné, plus il sera interopérable.
  • Enfin, Aurelia est soutenue par Durandal Inc. Le seul objectif de l'entreprise est de construire Aurelia, son écosystème et de le soutenir. D'un autre côté, Angular 2 est l'un des six cadres d'interface utilisateur concurrents à l'intérieur de Google. Chacun désire se faire ressembler à la "pile bénie de Google", mais aucun ne le fait. En réalité, Google officiel ne soutient ni ne prend en charge aucune de ces bibliothèques. Ce sont des projets parallèles open source des différentes équipes qui les construisent. Dans le cas de Angular 2, il est construit par l'équipe de Green Tea, dont le vrai travail est de construire une application interne de type CRM.

Il existe de nombreuses autres raisons ... mais ce n'est que quelques-unes.

12
Marc Scheib