7

Ich erstelle eine Ruby on Rails-Anwendung und möchte AngularJS im Frontend verwenden. Ich plane, die folgende Dateistruktur (von here) für das Front-End zu verwenden:Was ist der sauberste Weg, Ruby on Rails mit AngularJS zu integrieren?

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 

Ich habe drei Hauptanliegen:

1 - Ich würde meinen ganzen Winkel App gefällt durch Asset gehen Pipelining-Funktion von Ruby on Rails

2 - Ich möchte nicht die Struktur meiner eckigen App brechen und seine Dateien in den entsprechenden Rails Asset-Ordner verschieben.

3 - Ich möchte meine eckige Anwendung nicht in den Ordner "assets/javascripts" stellen, da sie nicht nur aus Javascript-Dateien besteht.

Was ist der sauberste Weg, diese Struktur in meine Ruby on Rails-Anwendung zu integrieren?

+0

Ich mag der Ansatz auf diesem Link gefolgt: https://www.angularonrails.com/getting -Started-with-eckig-und-Schienen/Keine Frontend-Edelsteine ​​benötigt, keine Hacks, nur API-Aufrufe zwischen den beiden Technologien reinigen. – Donato

Antwort

5

Ich habe etwas Forschung. Es stellt sich heraus, dass die sauberste Art, AngularJS mit Ruby on Rails zu integrieren, darin besteht, sie nicht in den Kontext einer Ruby on Rails-Anwendung zu integrieren. Stattdessen ist es am besten, sie vollständig getrennt zu halten, wie @Minhail vorgeschlagen hat.

Als Brad Carlton schlägt in this article:

Ein Nachteil des gesamten Projekts fein säuberlich in einem der heutigen versteckt Monster-Frameworks wie Rails, Django oder MVC zu haben, ist, dass es für sehr schwierig sein kann, ein Frontend-Entwickler, der an dem Projekt arbeitet.

Während es für einen erfahrenen Ruby-Entwickler Setup rvm einfach sein, gem alle der Ruby-Abhängigkeiten installieren, beschäftigen sich mit nativen Erweiterungen und Cross-Plattform-Fragen. Diese Dinge sind wahrscheinlich nicht das, was Ihr Frontend-Entwickler am besten geeignet ist.

Später im Artikel schlägt er vor, dass eine bessere Architektur Frontend zu halten wäre und Back-End vollständig getrennt:

Es fördert auch das Frontend eine echte First-Class-Anwendung machen und sicherzustellen, dass es wirklich robust ist. Hoffentlich wird der Frontend Entwickler jetzt ermutigt, für das unvermeidliche Szenario zu codieren, wenn das Backend ausfällt.

Was für eine bessere Benutzererfahrung zu sagen: „Hey, wir einige Probleme mit dem Server jetzt gerade haben, versuchen Sie später wieder“ oder noch besser „Die Suche Dienst erscheint Probleme im Moment sein zu müssen, aber Sie können immer noch Ihr Profil und aktuelle Projekte anzeigen.“

Gemäß einem anderen Artikel here, Single-Seiten-Anwendung und Api Getriebene Entwicklung sind zwei Web-Entwicklung Trends 2015. Dies ist eine Tatsache, die ich denke, stark die Idee des Front-End fördert und Back-End-Trennung.

Ein gutes Beispiel hierfür mit Schritt-für-Schritt-Anleitung:

A Complete RESTful Rails-api

An AngularJS Front-End For The Api Above

+1

Ich mag die Vorgehensweise auf diesem Link: https://www.angularonrails.com/getting-started-with-angular-and-rails/ Keine Frontend-Edelsteine ​​benötigt, keine Hacks, nur sauber API-Aufrufe zwischen den beiden Technologien. – Donato

1

Ich habe eine Ruby on Rails-Anwendung mit AngularJS. Ich benutze auch Feature-Struktur und alle meine Dateien sind in /assets/javascript/. Sie sollten alle js- und CSS-Dateien in /config/environments/production.rb hinzufügen, um sie für die Produktion vorzukompilieren. Beispiel für production.rb:

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

Das möchte ich auch nicht machen. Bearbeitete die Frage. erklärte dort. –

+0

Ja, ich verstehe Ihren Standpunkt. Ich hatte das ähnliche Problem. Die sauberste Lösung besteht aus 2 verschiedenen Anwendungen - 1 Rest-API (Ihre RoR-Anwendung) und einer node.js-App, in der Sie Ihre AngularJS-Anwendung rendern können. –

+0

Guter Punkt! Aber ich suche nach einer Möglichkeit, alles in einer Ruby on Rails Webanwendung zu machen. –

Verwandte Themen