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

我试图决定怎么做我这种情况下:

我想创build一个我想要以SaaS商业模式销售的产品,我已经有了后端或多或less的想法,并且在nodejs中有一些代码。 它处理oAuth,会话,并在访问某个端点时控制用户的angular色。

疑问是在前端架构:每个客户端将共享相同的function,但他们的页面devise将是完全不同的。 我想把尽可能多的应用程序逻辑放在服务中,所以我可以重用它,我的想法是只将控制器/模板/指令从客户端更改为客户端,这可以吗?

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

我应该把每个客户端放在自己的nodejs服务器和自己的主机上吗?

还有什么其他的方式?

我希望能够轻松地重用服务,因为我将介绍对function的更改或添加更多内容,并且我想要轻松升级。

还会有一个pipe理面板,对于他们来说都是一样的,改变的部分就是我的客户的用户看到的那个部分。

把它看成有许多客户,给他们每个人一个商店,所以他们可以出售他们的东西。 他们想要一个pipe理页面和一个公共页面。 pipe理页面对于所有人来说都是一样的,但是公共页面必须改变。

所以,应用程序共享用户相同的function,但看起来完全不同的每个人,你会怎么做呢?

既然你似乎在使用Angular,你有没有想过使用路由服务? 查看更多关于它的地方: https ://docs.angularjs.org/api/ngRoute/provider/ $ routeProvider

基本上它是基于url加载一个html页面和一个控制器(JS文件)。 例如,如果你的用户只是移动到url.com/client1,angular会加载client1.html和client1CTRL。

一个简单的结构将是以下内容:

  • Index.Html-引用任何依赖关系,并且在主体中只有一个ng-view标签
  • 模板(每个用户的Html模板)
    • login
    • pipe理员
    • 客户端1等
  • 脚本(JS)
    • 外部脚本(JQuery,Angular ETC)
    • Index.js(这是你所有的js控制器的每个页面)
  • 样式表
    • CSS文件到这里

示例angular路由: 教程

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

希望这适用于你正在做的事情。

我想你的问题是关于build筑。 如果我要做同样的后端和不同的前端,我会实现虚拟模板结构。

权限

我会:

  1. 一个有权设置多个商店的超级用户。
  2. 可以pipe理特定商店的pipe理员用户

超级用户模板pipe理。

  1. 我将在/ admin /模板中有基本模板,当我创build一个新的商店时,我会复制它们并将它们粘在数据库中
  2. 我会在左边创build一个包含所有模板的菜单,并使用wysiwyg编辑器来修改特定客户的模板,并上传其他资源(图像,pdf等)
  3. 模板将支持swig语法
  4. 我会创build一个服务器路由/ get / tempalte /:id和dynamic分析服务器上的这些模板使用swig引擎

我希望这有帮助。 这里的关键是能够通过浏览器更新模板,并通过Web面板将其分发给新的商店/客户。