带有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筑。 如果我要做同样的后端和不同的前端,我会实现虚拟模板结构。
权限
我会:
- 一个有权设置多个商店的超级用户。
- 可以pipe理特定商店的pipe理员用户
超级用户模板pipe理。
- 我将在/ admin /模板中有基本模板,当我创build一个新的商店时,我会复制它们并将它们粘在数据库中
- 我会在左边创build一个包含所有模板的菜单,并使用wysiwyg编辑器来修改特定客户的模板,并上传其他资源(图像,pdf等)
- 模板将支持swig语法
- 我会创build一个服务器路由/ get / tempalte /:id和dynamic分析服务器上的这些模板使用swig引擎
我希望这有帮助。 这里的关键是能够通过浏览器更新模板,并通过Web面板将其分发给新的商店/客户。