2016-01-19 36 views
13

Próbuję zdecydować, co mam zrobić Ten scenariusz:Aplikacja SaaS z angularjs i nodejs, w jaki sposób mogę organizować różnych klientów?

Chcę stworzyć produkt, który chcę sprzedać w modelu biznesowym SaaS, mam już mniej lub bardziej przemyślany backend i trochę kodu miejsce w nodejs. Obsługuje OAuth, sesje i kontroluje role użytkowników podczas uzyskiwania dostępu do określonego punktu końcowego.

Wątpliwości znajdują się w architekturze frontendu: Każdy klient ma tę samą funkcjonalność, ale projekt strony będzie całkowicie inny. Chcę umieścić jak najwięcej logiki aplikacji w usługach, więc mogę je ponownie wykorzystać, moim pomysłem jest tylko zmiana kontrolerów/szablonów/dyrektyw od klienta do klienta, czy to w porządku?

Czy powinienem mieć różne foldery i dostarczać statyczne pliki dla każdego klienta od nodejs? ex: w nodejs Chciałbym wiedzieć, że adres URL dla klienta1 został wywołany, więc będę obsługiwać client1-index.html?

Czy powinienem umieścić każdego klienta na swoim serwerze nodejs i na własnym hoście?

jakie są inne sposoby?

Chciałbym móc w łatwy sposób ponownie korzystać z usług, ponieważ będę wprowadzać zmiany w funkcjach lub dodawać więcej, i chcę to zrobić z łatwością.

Pojawi się również panel administracyjny, który będzie dokładnie taki sam dla wszystkich, część, która ulegnie zmianie, będzie widoczna dla użytkowników mojego klienta.

Pomyśl o tym, że ma wielu klientów i daje każdemu z nich sklep, dzięki czemu mogą sprzedawać swoje rzeczy. Chcą strony administratora i strony publicznej. Strona administratora będzie taka sama dla wszystkich, ale strona publiczna musi się zmienić.

A więc, i aplikacja, która ma takie same funkcje dla różnych użytkowników, ale dla każdego z nich wygląda zupełnie inaczej, jak by to zrobić?

+0

Chociaż miałeś dobry pomysł, [Programmer's Stack Exchange] (http://programmers.stackexchange.com/) prawdopodobnie dostarczy ci bardziej dogłębnej odpowiedzi. Zadawanie pytań o ogólną logikę i architekturę należy do nich nie tylko tutaj, ale przede wszystkim do pytania o błędy i składnię. Aby odpowiedzieć na twoje pytanie, sprawdź literaturę na temat [RESTful API/programming] (http://stackoverflow.com/questions/671118/what-exactly-is-restful-programming). Posiadanie abstrakcyjnych "haczyków" dla twojego widoku jest popularne i częścią RESTful API, pozwalając na przenośność i inny wygląd. – MikeJannino

Odpowiedz

1

Ponieważ wydaje się, że używasz Angular, czy myślałeś o korzystaniu z usługi routingu? Zobacz więcej informacji tutaj: https://docs.angularjs.org/api/ngRoute/provider/ $ routeProvider

Zasadniczo to, co robi jest oparte na url ładuje strony html i kontroler (plik JS). Na przykład, jeśli użytkownik byłby po prostu przeniesiony na stronę url.com/client1, a kątowa załadowałaby client1.html i client1CTRL.

prosta struktura będzie następujący:

  • Index.Html- Odniesienia do jakichkolwiek zależności, oraz w ciele tylko znacznik ng widok
  • szablony (html szablony dla każdego użytkownicy)
    • Zaloguj
    • Admin
    • Client 1 itd ...
  • skrypty (JS) Skrypty
    • zewnętrzne (jQuery, kątowe ETC)
    • indeksu.js (To gdzie masz wszystkie js Kontrolery każdej strony)
  • Arkusze stylów
    • plików CSS iść tutaj

Przykład kątowa routingu: 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' 
     }); 
    }]); 

Mam nadzieję, że to działa dla tego, co próbujesz zrobić.

-1

Zgaduję, że twoje pytanie dotyczy architektury. Gdybym miał zrobić ten sam back-end i różne interfejsy, wprowadziłbym wirtualną strukturę szablonów.

Uprawnienia

musiałbym:

  1. super użytkownika, który ma uprawnienia do konfiguracji wielu sklepach.
  2. użytkownik administracyjny, który może zarządzać konkretnego sklepu

Super User Management szablonu.

  1. musiałbym szablony bazy w/admin/szablonów i gdy tworzę nowy sklep bym je kopiować i trzymać je w bazie
  2. Chciałbym utworzyć menu ze wszystkimi szablonami na lewym skrzydle i mieć edytor WYSIWYG, który pozwala mi modyfikować szablon dla konkretnego klienta i przesyłać dodatkowe zasoby (obrazy, pliki pdf itp.)
  3. Szablon obsługiwałby składnię swigową
  4. Chciałbym utworzyć trasę serwera/get/tempalte /: id i dynamicznie analizować te szablony na serwerze za pomocą mechanizmu pingu

Mam nadzieję, że to pomoże. Kluczem jest tutaj możliwość aktualizacji szablonów za pomocą przeglądarki i dystrybucji ich do nowych sklepów/klientów za pośrednictwem panelu WWW.