0

tl;博士:

有没有办法限制/lint Angular JS 依赖注入到只存在于模块中的组件?

我继承了一个 Angular JS 代码库,它显然是意大利面条代码。此外,即使应用程序很大,大多数应用程序功能也会在三个或四个模块之间共享。

由于 Angular 没有在模块级别限制命名空间,因此团队实际上忽略了模块边界。这本身不是问题(Angular 允许)。问题是应用程序只有基本结构,组件很少可重用,难以扩展,我什至不会考虑替换模块。

现在,客户要求我们将应用程序扩展到可以轻松替换某些模块的地步,我需要开发一个解决方案。

我想知道策略,我想通过引入基本上实现外观模式接口模式的模块到模块接口来重构应用程序。

换句话说,我想要对外界隐藏模块实现的服务,以便模块不知道数据的去向和来自哪里。同时我想使用接口模式来确保传递给模块的数据满足一定的期望。

我想让过渡过程更容易,并确保每个人都遵守规则。Angular 无法强制执行依赖注入的任何规则,并且eslint 的 Angular 插件不包含这些方面的任何内容。有没有人试过这个?我用谷歌搜索但什么也没找到。

4

1 回答 1

0

一个开始的地方(我不是说这是一个好地方)是_invokeQueue在运行时从你的模块中查看。你可以通过angular.module('myModuleName')._invokeQueue

这个数组包含你的模块自己定义的所有东西。您可以尝试将它与单元测试一起集成$injector.annotate()(请参阅https://docs.angularjs.org/api/auto/service/$injector#annotate)以检查所需的依赖项是否在您想要的模块中定义。

我希望你明白这一点?

于 2016-04-12T13:59:54.663 回答