web-dev-qa-db-fra.com

AngularJS 2 - Quelle langue utiliser? (TypeScript, Javascript, Dart)

Avec AngularJS 2, la documentation suggère trois langues: TypeScript, Javascript et Dart.

Je suis seulement habitué à Javascript EcmaScript 5 et je me demande quelles sont les forces et les faiblesses de ces trois?

Au moment où cette question est posée, la documentation est plus développée sur TypeScript et assez mince sur les autres (même leur propre langage Dart):

  • TypeScript: 4 tutoriels, 16 guides du développeur, 4 guides de test
  • Javascript: 0 tutoriels, 4 guides de développement, 0 guides de test
  • Dart: 0 tutoriels, 14 guides de développement, 0 guides de test

Devrais-je changer mon habitude de développer en utilisant Javascript et suivre ce que Angular 2 suggère en utilisant TypeScript? Cela change-t-il vraiment les concepts de Javascript?

AngularJS 2.0 site officiel

42
Elfayer

Dart facilite le démarrage car tout ce dont vous avez besoin est fourni par l'écosystème Darts (langage, gestion des packages, construction, ...).

TypeScript

Pour TS, il y a le plus de ressources disponibles (documentation, ...) car il existe une base d'utilisateurs considérable.

Le Dart et La version JS de Angular est générée à partir de TS.
Il semble y avoir beaucoup de problèmes pour la mise en place d’un projet Angular + TS (voir la question Angular2 ici sous SO), mais il existe des projets de base où tout est déjà configuré. Je ne connais pas les détails car je n'utilise que Dart moi-même.

Pour TS, il existe maintenant Angular CLI , ce qui améliore considérablement l'expérience du développeur pour Angular2 avec TypeScript.

JavaScript, ES5, ES6

Si vous êtes un puriste du JS, cela pourrait être la bonne langue pour vous. Sinon (si vous étiez, vous ne poseriez probablement pas cette question), alors je suis tout à fait sûr que vous feriez mieux d'utiliser Dart ou TS. Angular utilise les annotations de type de plusieurs manières. Avec JS, il existe des "solutions de contournement" nécessaires, sinon une simple annotation de type suffit (principalement par injection de dépendance).

Dart

Dart est un langage sympa avec un ensemble d’outils qui fonctionnent bien ensemble. De nombreux problèmes liés à l'environnement JS/TS sont résolus avec élégance pour Dart.

Depuis environ 2016/05, Angular2 Dart est un projet indépendant et diffère beaucoup des versions TS et JS (à partir de 2016/10).

  • Le module routeur qui a été remplacé à plusieurs reprises dans TS pour le rendre compatible avec la compilation de modèles hors ligne, n'a pas été remplacé dans Dart car, dans Dart, le chargement différé fonctionne également avec le "vieux" routeur.

  • ... et aussi NgModule n'a pas été présenté à Dart pour la même raison.

  • Le nouveau module Forms construit pour TS n'a pas (encore) été porté vers Dart.

  • Dart avait une compilation de modèles hors ligne depuis le début, mais ne prend pas en charge la dynamique de plate-forme de navigation pour compiler les composants au moment de l’exécution.

  • Un nouveau module d'injection de dépendance semble être en cours de développement pour Dart basé sur Dagger2 (pas encore disponible) pour remplacer le système DI généré automatiquement à partir de code TypeScript.

  • Angular2 Dart met fortement l’accent sur la taille de la production et les performances d’exécution, mais AFAIK ne prend plus en charge la prise en charge multi-plateformes (comme le rendu côté serveur).

31
Günter Zöchbauer