从 app.js 主模块中隐藏组件内的插件

Posted

技术标签:

【中文标题】从 app.js 主模块中隐藏组件内的插件【英文标题】:Hide from app.js main module a plug-in inside a component 【发布时间】:2018-04-08 00:24:26 【问题描述】:

这可能是一个,但无论如何我想有很多前端开发人员有智慧。

我正在尝试在我的应用程序的主模块中声明一个插件。

假设我有以下模块化:

子组件模块

(function () 
'use strict';

         angular.module('app.modules.table.detail', []);

)();

组件模块

(function () 
'use strict';

         angular.module('app.modules.table', [
                  'app.modules.table.detail'
         ]);

)();

主应用模块

(function() 
'use strict';

     angular.module('app.modules', 
        [ 'app.modules.table' <----// inside here is the table.detail 
         ,'app.modules.other.component'
        ]);


     angular.module('app', ['app.modules',

                             'smoothScroll']) 

那么,使用这种结构,我可以将 smoothScroll 第三方隐藏在 app 模块数组之外吗?我只想声明 app.modules 应用程序就是这样。

我尝试将它作为依赖项包含在组件数组中,但没有成功。我一直在阅读,我想它必须在应用程序上才能让 $injector 知道他的 $provider。

有人解决了吗?

【问题讨论】:

$injector 用于服务,而不是模块。你考虑过延迟加载吗? ocLazyLoad 可能是一个选项 如果不显示smoothScroll,我会看看。 我可以看到ocLazyLoad 将是应用程序上的另一个模块。我想知道是否可以在没有任何附加组件的情况下做到这一点。我之前提到过$injector,因为也许,也许,我可以将smoothScroll 声明为服务并注入它的$provider 那么你的问题就变得很哲学了。可以注入differently,也可以隐藏在nested modules中 我想是的,它是哲学的。还有存在主义,all 的起点和终点在哪里。 【参考方案1】:

我会回答自己,因为这比我想象的要容易。

我没有在子组件/组件模块中声明第三方

CHILD 模块组件

(function () 
'use strict';
angular.module('app.modules.table.detail', ['smoothScroll']); <-- HERE!
)();

父模块组件

(function () 
'use strict';

angular.module('app.modules.table', ['app.modules.table.detail', 'smoothScroll' <--- ALSO HERE
]);
)();

所以现在我可以引导应用程序,而无需在主模块上声明第三方。因此它在 主应用模块 文件中隐藏

【讨论】:

以上是关于从 app.js 主模块中隐藏组件内的插件的主要内容,如果未能解决你的问题,请参考以下文章

隐藏 Safari 组件时如何使用 jQuery Mobile 从错误加载页面中恢复?

如何在 React 中重构我的 App.js 页面路由?最好的做法是啥?

Flex 4 Spark 组件面板 - 隐藏标题栏

有状态 LSTM - 批次之间和批次内的隐藏状态转移 (Keras)

Angular:从控制器中隐藏组件[重复]

隐藏iPhone上的Safari用户界面组件