2016-01-19 23 views
13

Sto cercando di decidere cosa fare questo scenario:App SaaS con angularjs e nodejs, come posso organizzare diversi client?

Voglio creare un prodotto che voglio vendere in un modello di business SaaS, ho già il backend più o meno pensato e un po 'di codice in posto in nodejs. Gestisce oAuth, sessioni e controlla i ruoli degli utenti durante l'accesso a un determinato endpoint.

Il dubbio è nell'architettura frontend: Ogni client condividerà la stessa funzionalità, ma il design della loro pagina sarà completamente diverso l'uno dall'altro. Voglio mettere la maggior parte della logica delle app che posso nei servizi, quindi posso riutilizzarla, la mia idea è di cambiare solo controller/template/direttive dal client al client, va bene?

Devo avere cartelle diverse e servire i file statici per ogni client da nodejs? ex: in nodejs vorrei sapere l'url per client1 è stato chiamato così vorrei servire client1-index.html?

devo inserire ciascun client nel proprio server nodejs e nel proprio host?

quali altri modi ci sono?

Mi piacerebbe poter riutilizzare facilmente i servizi poiché introdurrò modifiche alle funzionalità o aggiungere altro, e voglio fare facilmente gli aggiornamenti.

Ci sarà anche un pannello di amministrazione che sarà esattamente lo stesso per tutti, la parte che cambierà è quella che vedono gli utenti del mio cliente.

Pensate che abbia molti clienti e dia ad ognuno un negozio, in modo che possano vendere le loro cose. Vogliono una pagina di amministrazione e una pagina pubblica. La pagina di amministrazione sarà la stessa per tutti, ma la pagina pubblica deve cambiare.

Quindi, e l'app che condivide la stessa funzionalità tra gli utenti ma sembra completamente diversa per ognuno di essi, come faresti?

+0

Sebbene tu abbia avuto l'idea giusta, il [Programmer's Stack Exchange] (http://programmers.stackexchange.com/) probabilmente ti darà una risposta più approfondita. Chiedere domande di logica generale e architettura appartiene più di qui, che è principalmente un posto dove chiedere errori e sintassi. Per risolvere la tua domanda, consulta la documentazione su [API/programmazione RESTful] (http://stackoverflow.com/questions/671118/what-exactly-is-restful-programming). Avere "hook" astratti per la tua vista è popolare e fa parte di un'API RESTful, consentendo la portabilità e diversi look. – MikeJannino

risposta

1

Poiché sembra che tu stia utilizzando Angular, hai pensato di utilizzare il servizio di routing? Vedere di più Qui: https://docs.angularjs.org/api/ngRoute/provider/ $ routeProvider

Fondamentalmente quello che fa è basato sull'URL carica una pagina html e un controller (file JS). Ad esempio se il tuo utente si sposterebbe su url.com/client1 e angular caricherà client1.html e client1CTRL.

una struttura semplice sarebbe il seguente:

  • riferimenti Index.Html- a eventuali dipendenze, e nel corpo solo un tag ng-view
  • modelli (i modelli HTML per ciascuna delle gli utenti)
    • Entra
    • Admin
    • client 1 ecc ...
  • script (JS) Script
    • esterni (jQuery, ETC angolare)
    • Index.js (Questo è dove si dovrebbe avere tutti i vostri js controllori per ogni pagina)
  • Stylesheets
    • file CSS andare qui

Esempio angolare 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' 
     }); 
    }]); 

Spero che funzioni per quello che stai cercando di fare.

-1

Immagino che la tua domanda riguardi l'architettura. Se dovessi fare lo stesso back-end e diversi front-end avrei implementato la struttura virtuale dei template.

Permessi

avrei dovuto:

  1. un super user che dispone dei diritti di impostare più negozi.
  2. un utente amministratore in grado di gestire un negozio particolare

gestione dei modelli Super User.

  1. avrei modelli di base in/admin/template e quando creo un nuovo negozio li avrei copiare e incollarle nel database di
  2. Vorrei creare un menu con tutti i modelli sul lato sinistro e avere editor WYSIWYG che mi permette di modificare quelle modello per la particolare cliente e caricare ulteriori attività (immagini, PDF, ecc)
  3. template sosterrebbe sintassi sorso
  4. vorrei creare un percorso di server/get/tempalte /: id e dinamicamente analizzare quei modelli sul server utilizzando il motore di swig

Spero che questo aiuti. La chiave qui è di essere in grado di aggiornare i modelli tramite browser e distribuirli a nuovi negozi/clienti tramite il pannello web.