web-dev-qa-db-de.com

Schienen werden auf Winkel 2 umgerüstet

Ich möchte meine vorhandenen Rails- und Angular 1.x-Anwendungen aktualisieren. Ich folge dem ng-upgrade documentation und sehe, dass es viele Abhängigkeiten gibt, darunter systemjs , TypeScript , tsd und einige andere Javascript - Bibliotheken. Im Idealfall würde es einen eckigen Edelstein geben, der alle Abhängigkeiten hat, aber ich kann das nicht finden. Als nächstes suchte ich nach Edelsteinen für jede Abhängigkeit, aber es gibt keinen für Tsd. 

Ist es sinnvoll, zu einer benutzerdefinierten Build-Strategie überzugehen, damit ich npm für die Paketverwaltung von Javascript verwenden kann? Ich habe this article gelesen, in dem gulp empfohlen wird, aber ich mag die Bequemlichkeit der Asset-Pipeline. 

Kann mich jemand auf Beispiele für die erfolgreiche Verwendung von ng-upgrade in einem Rails-Projekt verweisen? Verwendet es eine benutzerdefinierte Build-Lösung wie gulp oder verwendet es die Asset-Pipeline?

38
user2954587

Mein Hauptvorschlag ist, dass Sie noch nicht auf Angular2 upgegradet haben. Es befindet sich noch in der Entwicklung und Sie werden mit vielen dieser Probleme konfrontiert, wie zum Beispiel, dass Sie kein Juwel für Rails finden.

Derzeit kann angle2 jedoch nicht mit Kettenrädern (der Standard-Rails-Pipeline) kompiliert werden, sodass Sie wirklich eine benutzerdefinierte Lösung wollen _ haben.

Mein hauptsächlicher Vorschlag ist, mit Webpack zu gehen, andere Optionen sind browserify oder schluck (und andere), das ist hauptsächlich eine Geschmackssache. Insgesamt ist das Konfigurieren einer Pipeline für angle2 kompliziert, Sie müssen sich um .d.ts-Dateien über typings kümmern (dies ist die aktualisierte Version von tsd, die jetzt veraltet ist), und Sie müssen sich bewegen Ihr TypeScript über tsc und möglicherweise auch durch babel, wenn Sie async/await verwenden möchten (was wirklich cool ist). Sie können nicht mehr auf Ihre Dateien in Rails wie image_path und dergleichen zugreifen, indem Sie eine benutzerdefinierte Pipeline verwenden. Daher möchten Sie dies auch berücksichtigen.

Die Kompilierung von TypeScript ist viel komplexer als bei einfachen Kaffeescript-Dateien. Sie sind auf jede andere Datei angewiesen, auf die sie verweist, da sie kompiliert werden muss, um etwas dagegen zu tun. Erwarten Sie nichts Unkompliziertes.

Wenn Sie jedoch wirklich mit Rails und Angular (2 oder nicht) arbeiten möchten, müssen Sie zwei separate Projekte haben, eines mit nur der Rails-App und eines mit der AngularJS-Pfad. Auf diese Weise können Sie die Angelegenheit voneinander trennen. Sie können eine benutzerdefinierte Pipeline für Angular2 einrichten, ohne Rails zu beeinträchtigen, und Sie müssen Ihre Angular2-App mithilfe von Rails als JSON-API ordnungsgemäß programmieren, wie Sie sollten.

10
Fire-Dragon-DoL

Meine Lösung bestand darin, es so einfach wie möglich zu halten, ohne Webpack oder die Asset-Pipeline zu verwenden. Ich habe die ts-Dateien in public eingefügt und Rails so konfiguriert, dass die npm-Assets durch die Pipeline bereitgestellt werden. 

Ich habe ein Starterprojekt mit dieser Struktur als Beispiel erstellt: https://github.com/jonnysamps/Rails-ng2-starter

In vielerlei Hinsicht hat es die Vorteile separater Backend-/Frontend-Projekte, hält aber den gesamten Code zusammen.

0
jonnysamps