web-dev-qa-db-fra.com

Rails passer à l'angle 2

Je souhaite mettre à niveau mes applications Rails et Angular 1.x existantes. Je suis ng-upgrade documentation et constate qu'il existe de nombreuses dépendances, notamment systemjs , TypeScript , tsd et quelques autres bibliothèques javascript. Idéalement, il y aurait un joyau angulaire-2 qui aurait toutes les dépendances, mais je ne suis pas capable de le trouver. Ensuite, j'ai cherché des gemmes pour chaque dépendance, mais il n'y en a pas pour tsd. 

Est-il judicieux de passer à une stratégie de génération personnalisée pour pouvoir utiliser npm dans la gestion de paquets javascript? J'ai lu cet article qui recommande gulp mais j'aime bien la commodité du portefeuille d'actifs. 

Quelqu'un peut-il m'indiquer des exemples d'utilisation réussie de ng-upgrade avec un projet Rails? Utilise-t-il une solution de construction personnalisée comme gulp ou utilise-t-il le pipeline d’actifs?

38
user2954587

Ma suggestion principale n’est pas encore de passer à Angular2, elle est toujours en développement et vous devrez faire face à beaucoup de problèmes tels que ne pas trouver un joyau pour Rails.

Quoi qu’il en soit, pour le moment, angular2 ne peut pas être compilé avec sprockets (le pipeline Rails par défaut), de sorte que vous voulez une solution personnalisée.

Ma suggestion principale est d'aller avec webpack, les autres options sont browserify ou gulp (et d'autres), c'est principalement une question de goût. Globalement, la configuration d'un pipeline pour angular2 est compliquée , vous devez prendre en charge les fichiers .d.ts via typings (qui est la version mise à jour de tsd qui est maintenant obsolète), vous devez transpiler votre TypeScript via tsc et éventuellement via babel aussi si vous voulez utiliser async/wait (qui sont vraiment cool). Vous perdrez la possibilité de faire référence à vos fichiers dans Rails tels que image_path et autres, à l'aide d'un pipeline personnalisé, vous devez donc en tenir compte également.

TypeScript est beaucoup plus complexe à compiler que de simples fichiers coffeescript, vous dépendez de tous les autres fichiers référencés, car il doit compiler une vérification, ne vous attendez pas à quelque chose de simple.

Cela dit, si vous voulez vraiment travailler avec Rails et Angular (2 ou non), la bonne façon de le gérer est d’avoir deux projets séparés , un avec uniquement l’application Rails et un avec le chemin AngularJS. De cette façon, vous séparez les préoccupations, vous pouvez avoir un pipeline personnalisé pour Angular2 sans affecter Rails et vous serez obligé de coder correctement votre application Angular2 en utilisant Rails comme une API JSON, comme vous le devriez.

10
Fire-Dragon-DoL

Ma solution était de le garder aussi simple que possible sans utiliser Webpack ou le pipeline d’actifs. J'ai placé les fichiers ts dans public et configuré Rails pour desservir les actifs npm via le pipeline. 

J'ai mis en place un projet de démarrage avec cette structure comme exemple: https://github.com/jonnysamps/Rails-ng2-starter

À bien des égards, il présente les avantages d'avoir des projets backend/frontend distincts, mais conserve tout le code ensemble.

0
jonnysamps