AngularJS 定义中的命名冲突

Posted

技术标签:

【中文标题】AngularJS 定义中的命名冲突【英文标题】:Naming collisions in AngularJS definitions 【发布时间】:2013-04-11 20:10:45 【问题描述】:

我目前正在尝试组织我的 Angular 应用程序,使其能够适当地扩展到企业级别。但是我发现似乎过度依赖框架内的命名约定,避免命名冲突是一个真正的问题。

例如,当定义任何constants/controllers/directives/factories/filters/providers/services 时,会提供一个名称以在依赖项注入期间隐式使用。

只需几个定义就可以很好地工作。然而,当这些定义可能有数百个(可能是数千个)时,尝试管理和防止重复似乎有点像维护噩梦!

另一个问题是指令的命名。由于似乎没有办法将任何上下文应用于指令,因此不可能有以下内容(即重用名称“按钮”):

<toolbar>
  <button></button>
</toolbar>

<customform>
  <button></button>
</customform>

因此,我们再次依赖于冗长的命名约定。如果你包含推荐的供应商前缀,你最终会得到这样的结果:

<company:toolbar>
  <company:toolbar-button></company:toolbar-button>
</company:toolbar>

<company:customform>
  <company:customform-button></company:customform-button>
</company:customform>

我承认这并不可怕,但它强调了对命名约定的依赖如何容易导致冲突。

Angular 路线图上是否有任何内容可以解决命名空间问题,当前 (1.0.6) 推荐的解决方案是什么?

【问题讨论】:

【参考方案1】:

我认为目前没有解决方案。当您的应用程序变得更大时,或者当您必须包含在开发时可能不知道的任意模块时,这绝对是一个问题。我建议使用 angular project 提交问题。

【讨论】:

以上是关于AngularJS 定义中的命名冲突的主要内容,如果未能解决你的问题,请参考以下文章

angular自定义指令命名的那个坑

AngularJS模块——理解小结

angular js 和 dajango 标签{{}} 冲突

命名空间内部错误中的定义 _bounces 存在冲突

AngularJS学习篇

AngularJs中的模块定义,一个页面加载多个ng-app