7

Sto creando un'applicazione Ruby on Rails e vorrei usare AngularJS di front-end. Ho in programma di utilizzare la seguente struttura di file (da here) per il front-end:Qual è il modo più semplice per integrare Ruby on Rails con AngularJS?

angularapp/ 
----- shared/  // acts as reusable components or partials of our site 
---------- sidebar/ 
--------------- sidebarDirective.js 
--------------- sidebarView.html 
---------- article/ 
--------------- articleDirective.js 
--------------- articleView.html 
----- components/ // each component is treated as a mini Angular app 
---------- home/ 
--------------- homeController.js 
--------------- homeService.js 
--------------- homeView.html 
---------- blog/ 
--------------- blogController.js 
--------------- blogService.js 
--------------- blogView.html 
----- app.module.js 
----- app.routes.js 

Ho tre principali preoccupazioni:

1 - Vorrei tutta la mia app angolare di passare attraverso di asset caratteristica pipelining di Ruby on Rails

2 - non voglio rompere la struttura della mia app angolare e spostare suoi file nella cartella risorsa Rails corrispondente.

3 - Non voglio mettere la mia domanda angolare nella cartella attività/javascript in quanto non consiste di soli file javascript.

Qual è il modo più pulito di integrare questa struttura con la mia Ruby on Rails applicazione?

+0

Mi piace l'approccio seguito su questo link: https://www.angularonrails.com/getting -started-with-angular-and-rails/Nessuna gemma di frontend necessaria, niente hack, basta pulire le chiamate API tra le due tecnologie. – Donato

risposta

5

Ho fatto qualche ricerca. Scopre che il modo più semplice per integrare AngularJS con Ruby on Rails è in realtà non integrarli nel contesto di un'applicazione Ruby on Rails. Invece, è meglio tenerli completamente separati come suggerito da @Minhail.

Come Brad Carlton suggerisce in this article:

Uno svantaggio per avere il vostro intero progetto rimboccato ordinatamente in una delle quadri mostro di oggi come Rails, Django, o MVC, è che può essere molto difficile per uno sviluppatore frontend per lavorare sul progetto.

Mentre potrebbe essere semplice per un esperto di Ruby dev per l'installazione rvm, gemma installare tutte le dipendenze rubino, trattare con le estensioni native e problemi di cross-platform. Queste cose probabilmente non sono ciò per cui lo sviluppatore frontend è il più adatto.

Successivamente l'articolo che suggerisce che un'architettura migliore sarebbe tenere frontend e back-end completamente separati:

promuove anche facendo frontend un'applicazione reale prima classe e garantendo che è veramente robusto. Si spera, lo sviluppatore frontend ora è incoraggiato a codificare per lo scenario inevitabile quando il backend va giù.

Che una migliore esperienza utente per dire: “Ehi, stiamo avendo alcuni problemi con il server in questo momento, cerchiamo tornare più tardi” o meglio ancora “Il servizio di ricerca sembra avere problemi in questo momento, ma puoi ancora visualizzare il tuo profilo e i progetti attuali.”

Secondo un altro articolo here, singola applicazione pagina e Sviluppo Api Driven sono due tendenze di sviluppo web del 2015. Si tratta di un fatto che credo che incoraggia con forza l'idea di front-end e back-end di separazione.

un grande esempio di questo con step-by-step procedura dettagliata:

A Complete RESTful Rails-api

An AngularJS Front-End For The Api Above

+1

Mi piace l'approccio seguito su questo link: https://www.angularonrails.com/getting-started-with-angular-and-rails/ Non sono necessarie gemme frontend, niente hack, basta pulire le chiamate API tra le due tecnologie. – Donato

1

Ho un Ruby on Rails applicazione utilizzando AngularJS. Uso anche la struttura delle caratteristiche e tutti i miei file sono in /assets/javascript/. È necessario aggiungere tutti i file js e css in /config/environments/production.rb per precompilarli per la produzione. Esempio di production.rb:

config.assets.precompile += %w{ 
    topbar/topbar-controller.js 
    topbar/topbar-service.js 
    topbar/topbar-directives.js 
    topbar/topbar.css 
    # ... other features 
} 
+0

Anche questo è qualcosa che non voglio fare. Modificato la domanda. spiegato lì. –

+0

Sì, comprendo il tuo punto. Ho avuto il problema simile. La soluzione più pulita è quella di avere 2 diverse applicazioni - 1 rest api (la tua applicazione RoR) e una app node.js in cui puoi eseguire il rendering della tua applicazione AngularJS. –

+0

Buon punto! Ma sto cercando un modo per fare tutto in un'unica applicazione web Ruby on Rails. –

Problemi correlati