我们可以在角度

时间:2016-07-31 16:10:31

标签: angularjs

我需要设计一个应用程序,其中我有1个父应用程序,在该应用程序下我还有5个以上的应用程序。

例如。

父 - 孩子1 - 孩子2 - child3

并且基于用户订阅,我必须仅启用用户订阅的那些应用程序。

每个子应用程序都有自己的UI / UX,基于用户选择(如主题图标,徽标等)。

1 个答案:

答案 0 :(得分:1)

Angular没有" app"的概念。或者"应用程序",因为一个好的(更好的)练习总是一次运行一个应用程序。引用docs

  

虽然每页可以引导多个AngularJS应用程序,但我们不会主动测试这种情况。您可能遇到问题,特别是对于复杂的应用程序,建议谨慎行事。

但这并不意味着您无法自定义您的应用,因为Angular通过其他不同的方式提供抽象。

这样做的一个好方法是将应用程序建模为多个模块,并使用方便的Depedency Injection模式。以您的场景为例,您有一个Parent模块,它是引导应用程序的整体管理模块,以及可注入的Child1Child2Child3模块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预处理器,SASSLESS都很好,您可以通过它来编写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

正如您所看到的,它实际上归结为您希望如何构建代码库,以及您希望在多大程度上灵活地让用户自定义应用程序。不要忘记服务器端配置(用户凭证,数据库连接字符串等)!这里没有正确或错误的答案,只有哪一个你更舒服:)