2015-12-30 65 views
38

Vorrei aggiornare la mia applicazione Rails e Angular 1.x esistente. Sto seguendo il ng-upgrade documentation e vedo che ci sono molte dipendenze tra cui systemjs, typescript, tsd e alcune altre librerie javascript. Idealmente ci sarebbe una gemma angolare-2 che avrebbe tutte le dipendenze ma non sono in grado di trovarla. Successivamente ho cercato gemme per ogni dipendenza, ma non ce n'è una per tsd.Rails upgrade a angular 2

Ha senso passare a una strategia di compilazione personalizzata in modo da poter utilizzare npm per la gestione dei pacchetti javascript? Ho letto l'articolo this che consiglia gulp ma mi piace la convenienza della pipeline di asset.

Qualcuno può indicarmi esempi di utilizzo corretto di ng-upgrade con un progetto di rotaie? Usa una soluzione di build personalizzata come gulp o usa la pipeline di asset?

+0

Perché non gestire angolare e le sue dipendenze con gulp? https://viget.com/extend/gulp-rails-asset-pipeline – bbozo

risposta

-1

uso angularjs gemma

gem 'angularjs-rails', '~> 1.4', '>= 1.4.8' 

inserto in application.js

//= require angular 
+0

non esiste un pacchetto 'ngUpgrade' nella gemma angular-rails. C'è un'opzione instabile ma è solo angular-2 https://github.com/hiravgandhi/angularjs-rails/tree/master/vendor/assets/javascripts – user2954587

-1

È possibile utilizzare http://bower.io/#install-bower ed è possibile aggiungere due file al vostro rotaie app .bowerrc e bower.json che è come GemFile

+0

Angular2 non supporta bower. – thedanotto

+0

@thedanotto: Angular2 supporta Bower. Vedi https://libraries.io/bower/angular2. – Suriyaa

+1

Il tuo link, quando segui le istruzioni, installa AngularJS, non Angular2. È possibile installare Angular2 con bower utilizzando questo comando 'bower install angular2-build' https://groups.google.com/forum/#!topic/angular/vDQBKuf5HKY – thedanotto

10

Il mio suggerimento principale non è ancora l'aggiornamento ad Angular2, è ancora in fase di sviluppo e affronterete molti di questi problemi come non trovare una gemma per i binari.

In ogni caso, attualmente, angular2 non può essere compilato con pignoni (rotaie di default di canalizzazione), in modo da realmente desidera una soluzione personalizzata.

Il mio suggerimento principale è andare con il webpack, altre opzioni sono browserify o gulp (e altri), che è principalmente una questione di gusti. Nel complesso, la configurazione di un cantiere per angular2 è complicato, si deve prendere cura di .d.ts file tramite typings (che è la versione aggiornata di tsd che ora è deprecato), è necessario transpile tuo dattiloscritto attraverso tsc e, eventualmente, attraverso babel anche se vuoi usare async/await (che sono davvero fantastici). Perderai la possibilità di fare riferimento ai tuoi file su rotaie come image_path e così via usando una pipeline personalizzata, quindi devi tenerne conto anche tu.

Il dattiloscritto è molto più complesso da compilare rispetto ai semplici file di coffeescript, dipende da ogni altro file a cui fa riferimento, dal momento che ha bisogno di confrontarlo, non aspettarsi qualcosa di semplice.

Detto questo, se si vuole veramente lavorare con Rails e angolare (2 o meno), il modo giusto di gestire la cosa è di avere due progetti separati, uno con solo l'applicazione Rails e uno con le AngularJS sentiero. In questo modo si separa la preoccupazione, si può avere una pipeline personalizzata per Angular2 senza impatto su Rails e sarete costretti a codificare correttamente la vostra app Angular2 usando Rails come API JSON, come dovreste.

0

La mia soluzione era di mantenerlo il più semplice possibile senza usare webpack o la pipeline di asset. Inserisco i file ts in public e i binari configurati per servire gli asset npm attraverso la pipeline.

ho messo su un progetto di avviamento con questa struttura come un esempio: https://github.com/jonnysamps/rails-ng2-starter

In molti modi ha i vantaggi di avere progetti backend/frontend separati, ma mantiene tutto il codice insieme.