带有angularjs和nodejs的SaaS应用程序,我如何组织不同的客户端?

Tod*_*ddy 13 code-reuse saas reusability node.js angularjs

我正在尝试决定该做什么我这个场景:

我想创建一个我想在SaaS商业模式中销售的产品,我已经或多或少地想到了后端,并且在nodejs中有一些代码.它处理oAuth,会话,并在访问某个端点时控制用户的角色.

怀疑是在前端架构中:每个客户端将共享相同的功能,但他们的页面设计将完全不同.我想在服务中加入尽可能多的app逻辑,所以我可以重用它,我的想法是只将控制器/模板/指令从客户端更改为客户端,这样可以吗?

我应该有不同的文件夹,并为nodejs中的每个客户端提供静态文件吗?例如:在nodejs中我会知道client1的url被调用所以我会提供client1-index.html吗?

我应该将每个客户端放在他们自己的nodejs服务器和他们自己的主机中吗?

有什么其他方式?

我希望能够轻松地重用这些服务,因为我将引入功能的更改或添加更多,我想轻松地进行此升级.

还将有一个管理面板,对于所有这些面板将完全相同,将更改的部分是我的客户的用户看到的部分.

可以把它想象成拥有许多客户并给他们每个人一个商店,这样他们就可以卖掉他们的东西.他们想要一个管理页面和一个公共页面.管理页面对所有人都是相同的,但公共页面必须更改.

那么,并且应用程序在用户之间共享相同的功能,但对于每个用户而言看起来完全不同,您将如何做到这一点?

The*_*ght 1

既然你似乎在使用Angular,你有没有想过使用路由服务?在这里查看更多相关信息:https://docs.angularjs.org/api/ngRoute/provider/$routeProvider

基本上它的作用是根据 url 加载 html 页面和控制器(JS 文件)。例如,如果您的用户只是移动到 url.com/client1 并且 Angular 将加载 client1.html 和 client1CTRL。

一个简单的结构如下:

  • Index.Html-对任何依赖项的引用,并且在正文中只有一个 ng-view 标签
  • 模板(每个用户的 Html 模板)
  • 登录
  • 行政
  • 客户端 1 等...
  • 脚本(JS)
    • 外部脚本(Jquery、Angular ETC)
    • Index.js(这是每个页面的所有 js 控制器的地方)
  • 样式表
    • CSS 文件位于此处

角度路由示例:教程

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'
      });
  }]);
Run Code Online (Sandbox Code Playgroud)

希望这对您想做的事情有用。