2016-01-19 12 views
13

Ich versuche zu entscheiden, was ich in diesem Szenario tun soll:SaaS-App mit angularjs und nodejs, wie organisiere ich verschiedene Clients?

Ich möchte ein Produkt erstellen, das ich in einem SaaS-Geschäftsmodell verkaufen möchte, habe ich bereits das Backend mehr oder weniger durchdacht und einige Code in Platziere in Nodejs. Es behandelt oAuth, Sitzungen und steuert die Rollen der Benutzer beim Zugriff auf einen bestimmten Endpunkt.

Der Zweifel ist in der Frontend-Architektur: Jeder Client wird die gleiche Funktionalität teilen, aber das Design ihrer Seite wird völlig unterschiedlich sein. Ich möchte so viel von der App-Logik, dass ich in Diensten, so dass ich es wiederverwenden kann, meine Idee ist nur Controller/Templates/Direktiven von Client zu Client ändern, ist das ok?

Sollte ich verschiedene Ordner haben und die statischen Dateien für jeden Client von Nodejs dienen? ex: in Nodejs Ich würde die URL für Client1 genannt, also würde ich client1-index.html dienen?

sollte ich jeden Client in ihren eigenen Nodejs-Server und ihren eigenen Host?

Welche anderen Möglichkeiten gibt es?

ich die Dienste leicht in der Lage sein möchte wieder verwenden, wie ich zu den Features Änderungen Einführung werde oder mehr geben, und ich möchte, dies zu tun Upgrades leicht.

Es wird auch eine Admin-Panel, die genau das gleiche für alle von ihnen sein wird, der Teil, der meine Kunden wird sich ändern ist derjenige Benutzer sehen.

Betrachten Sie es so viele Kunden haben und jeder von ihnen einen Laden geben, damit sie ihre Sachen verkaufen können. Sie möchten eine Admin-Seite und eine öffentliche Seite. Die Adminseite wird für alle gleich sein, aber die öffentliche Seite muss sich ändern.

So, und App, die die gleiche Funktionalität für Benutzer teilt, sondern für jeden von ihnen völlig anders aussieht, wie würden Sie es tun?

+0

Obwohl Sie die richtige Idee hatten, wird Ihnen der [Stack-Austausch von Programmierern] (http://programmers.stackexchange.com/) wahrscheinlich eine tiefere Antwort geben. Die Frage nach allgemeinen Logik- und Architekturfragen gehört dort mehr als hier, wo vor allem nach Fehlern und Syntax gefragt wird. Um Ihre Frage zu beantworten, werfen Sie einen Blick auf einige Literatur zu [RESTful API/Programmierung] (http://stackoverflow.com/questions/671118/what-exactly-is-restful-programming). Die Verwendung von abstrakten "Hooks" für Ihre Ansicht ist beliebt und Teil einer RESTful-API, die Portabilität und verschiedene Looks ermöglicht. – MikeJannino

Antwort

1

Da Sie angular scheinen, haben Sie gedacht, den Routing-Service zu verwenden? Sehen Sie mehr darüber Hier: https://docs.angularjs.org/api/ngRoute/provider/ $ routeProvider

Grundsätzlich was es tut ist es basiert auf der URL lädt eine HTML-Seite und einen Controller (JS-Datei). Zum Beispiel, wenn Ihr Benutzer nur zu url.com/client1 bewegt würde und angular würde client1.html und client1CTRL laden.

eine einfache Struktur wäre die folgende:

  • Index.Html- Verweise auf alle Abhängigkeiten und im Körper nur ng-view-Tag
  • Vorlagen (die HTML-Templates für jede die Benutzer)
    • Anmeldung
    • Admin
    • Client 1 etc ...
  • Scripts (JS)
    • Externe Scripts (JQuery, Angular ETC)
    • Index.js (Hier können Sie alle Ihre js-Controller für jede Seite haben würde)
  • Sheets
    • CSS-Dateien GO HERE

Beispiel Angular Routing: Tutorial

var App = angular.module('saasApp', []); 

App.config(['$routeProvider', 
    function($routeProvider) { 
    $routeProvider. 
     when('/admin', { 
     templateUrl: 'templates/admin.html', 
     controller: 'AdminController' 
     }). 
     when('/client1', { 
     templateUrl: 'templates/client1.html', 
     controller: 'client1Controller' 
     }). 
     when('/login', { 
     templateUrl: 'templates/login.html', 
     controller: 'loginController' 
     }). 
     otherwise({ 
     redirectTo: '/login' 
     }); 
    }]); 

Hoffe, das funktioniert für das, was Sie versuchen zu tun.

-1

Ich denke, Ihre Frage betrifft Architektur. Wenn ich dasselbe Backend und verschiedene Frontends machen würde, hätte ich eine virtuelle Templatestruktur implementiert.

Berechtigungen

Ich hätte:

  1. Superuser, die Rechte an Setup mehrere Speicher hat.
  2. ein Admin-Benutzer, die ein bestimmtes Geschäft

Super User Template-Management verwalten.

  1. Ich würde Basis-Vorlagen in/admin/templates haben, und wenn ich einen neuen Shop erstellen würde ich kopieren Sie sie und halten sie in der Datenbank
  2. ich ein Menü mit allen Vorlagen auf der linken Seite schaffen würde und wYSIWYG-Editor haben, die mir diese Vorlage für bestimmte Kunden und laden zusätzliche Vermögenswerte (Bilder, pDF-Dateien usw.)
  3. Vorlage unterstützen würde swig Syntax
  4. ich schaffen würde einen Server Route/get/tempalte/ändern können: id und dynamisch analysieren Diese Vorlagen auf dem Server mit Swig-Engine

Ich hoffe, das hilft. Der Schlüssel hierbei ist, Vorlagen über den Browser aktualisieren zu können und über das Web-Panel an neue Shops/Kunden zu verteilen.