我需要设计一个应用程序,其中我有1个父应用程序,在该应用程序下我还有5个以上的应用程序。
例如。
父 - 孩子1 - 孩子2 - child3
并且基于用户订阅,我必须仅启用用户订阅的那些应用程序。
每个子应用程序都有自己的UI / UX,基于用户选择(如主题图标,徽标等)。
答案 0 :(得分:1)
Angular没有" app"的概念。或者"应用程序",因为一个好的(更好的)练习总是一次运行一个应用程序。引用docs:
虽然每页可以引导多个AngularJS应用程序,但我们不会主动测试这种情况。您可能遇到问题,特别是对于复杂的应用程序,建议谨慎行事。
但这并不意味着您无法自定义您的应用,因为Angular通过其他不同的方式提供抽象。
这样做的一个好方法是将应用程序建模为多个模块,并使用方便的Depedency Injection模式。以您的场景为例,您有一个Parent
模块,它是引导应用程序的整体管理模块,以及可注入的Child1
,Child2
和Child3
模块Parent
模块基于用户配置。像这样:
(function() {
//declare the child modules:
angular.module('child1', []);
angular.module('child2', []);
angular.module('child3', []);
//User Settings, set by server configuartion .
var userSettings = {
"userId": 1,
"modules": ['child1', 'child3']
};
//bootstrapping the Parent module, where only child1 and child3 module is injected
angular.module('Parent',[userSettings.modules])
})();
对于上述方法,您需要一个非常好的架构结构来跟踪注入的内容和不注意的内容,这样您的开发工作就可以轻松完成并且不会继续运行{{1错误。
进行配置设置的另一个好方法是...... $injector:unpr
阶段。在config
阶段 - 您注入所有config
,您可以完全拥有所有自由意志来配置"你的应用。唯一困难的部分是您必须以可配置的方式编写模块和提供程序。许多第三方Angular模块提供了这种灵活性。 UI Bootstrap就是其中之一。比如说,我让用户可以灵活地显示周"在ui.bootstrap的日历中,或隐藏它。我本可以编写如下代码:
providers
哦,您提到过UI / UX更改?
对我来说,我真的想在CSS中做到这一点而不是角度,除非真的有必要。使用CSS预处理器,SASS或LESS都很好,您可以通过它来编写CSS。您可以编写可自定义的.scss或.less文件,然后只需调用@import就可以了。当然,您可以结合前处理器和Angular //User Settings, set by server configuartion .
var userSettings = {
"userId": 1,
"modules": ['child1', 'child3'],
"showWeeks": false
};
angular.module('Parent')
.config(['datepickerConfig', function(datepickerConfig) {
datepickerConfig.showWeeks = userSettings.showWeeks;
}]);
阶段的强大功能。 Angular Material例如,您可以通过提供商功能选择托盘颜色:
config
正如您所看到的,它实际上归结为您希望如何构建代码库,以及您希望在多大程度上灵活地让用户自定义应用程序。不要忘记服务器端配置(用户凭证,数据库连接字符串等)!这里没有正确或错误的答案,只有哪一个你更舒服:)