2016-01-19 1 views
13

Я пытаюсь решить, что делать I такой сценарий:Приложение SaaS с angularjs и nodejs, как мне организовать разные клиенты?

Я хочу, чтобы создать продукт, который я хочу продать в бизнес-модели SaaS, у меня уже есть бэкенд более или менее продумано и некоторый код в место в узлах. Он обрабатывает oAuth, сеансы и контролирует роли пользователей при доступе к определенной конечной точке.

Уверенность в архитектуре интерфейса: Каждый клиент будет обладать одинаковой функциональностью, но дизайн их страницы будет полностью отличаться друг от друга. Я хочу поместить столько логики приложения, что я могу в сервисах, поэтому я могу его повторно использовать, моя идея состоит только в том, чтобы изменять контроллеры/шаблоны/директивы от клиента к клиенту, это нормально?

Должен ли я иметь разные папки и обслуживать статические файлы для каждого клиента от nodejs? ex: in nodejs Я бы знал, что URL-адрес для client1 был вызван так, чтобы я обслуживал client1-index.html?

Должен ли я помещать каждый клиент в свой собственный nodejs-сервер и свой собственный хост?

Какие еще существуют способы?

Я хотел был бы иметь возможность легко повторно использовать сервисы, поскольку я буду вводить изменения в функции или добавлять больше, и я хочу сделать это легко.

Будет также панель администратора, которая будет одинаковой для всех, часть, которая будет меняться, будет видна пользователям моего клиента.

Подумайте об этом, имея много клиентов и предоставляя каждому из них магазин, чтобы они могли продавать свои вещи. Им нужна страница администратора и открытая страница. Страница администратора будет одинаковой для всех, но общедоступная страница должна измениться.

Итак, и приложение, которое имеет одинаковую функциональность для пользователей, но выглядит совершенно по-другому для каждого из них, как бы вы это сделали?

+0

Несмотря на то, что у вас была правильная идея, [Обмен программаторами] (http://programmers.stackexchange.com/), вероятно, даст вам более подробный ответ. Задавать общие вопросы логики и архитектуры принадлежит там больше, чем здесь, что в основном является местом, где можно задать вопрос об ошибках и синтаксисе. Чтобы ответить на ваш вопрос, ознакомьтесь с литературой по [API/программированию RESTful] (http://stackoverflow.com/questions/671118/what-exactly-is-restful-programming). Наличие абстрактных «крючков» для вашего просмотра является популярным и частью RESTful API, позволяющим переносить и различать внешний вид. – MikeJannino

ответ

1

Поскольку вы, кажется, используете Angular, подумали ли вы об использовании услуги маршрутизации? Узнать больше об этом здесь: https://docs.angularjs.org/api/ngRoute/provider/ $ routeProvider

В основном, он основан на URL-адресе, загружает страницу html и контроллер (файл JS). Например, если ваш пользователь просто перейдет на url.com/client1, а угловой будет загружать client1.html и client1CTRL.

простая структура будет следующей:

  • Index.Html- Ссылка на любые зависимости, и в теле лишь нг вид тегов
  • Шаблоны (HTML, шаблоны для каждого из пользователи)
    • Вход
    • Администратор
    • Client 1 и т.д. ...
  • скрипты (JS)
    • Внешние скрипты (Jquery, Угловое ETC)
    • Index.JS (Это где вы бы все ваши JS контроллеров для каждой страницы)
  • Stylesheets
    • CSS FILES GO HERE

Пример Угловой маршрутизация: 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' 
     }); 
    }]); 

Надеюсь, это работает на то, что вы пытаетесь сделать.

-1

Я думаю, ваш вопрос об архитектуре. Если бы я выполнял те же внутренние и разные интерфейсы, я бы реализовал виртуальную структуру шаблона.

Права доступа

я бы:

  1. супер пользователь, который имеет права на установки нескольких магазинов.
  2. пользователь с правами администратора, который может управлять конкретным магазин

управлением шаблоном Super User.

  1. Я бы базовые шаблоны в/администратор/шаблонов и когда я создаю новый магазин я бы скопировать их и вставить их в базу данных
  2. Я хотел бы создать меню со всеми шаблонами на левой стороне и есть WYSIWYG редактор, который позволяет мне изменить эти шаблоны для конкретного клиента и загрузить дополнительные ресурсы (изображения, PDF-файлы и т.д.)
  3. шаблон будет поддерживать Swig синтаксис
  4. Я хотел бы создать маршрут сервера/получить/tempalte /: идентификатор и динамически анализировать эти шаблоны на сервере с использованием swig engine

Надеюсь, это поможет. Ключевым моментом здесь является возможность обновления шаблонов через браузер и распространения их на новые магазины/клиенты через веб-панель.

Смежные вопросы