从 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 页面路由?最好的做法是啥?