【问题标题】:How do I load AMD modules when using Angular JS?使用 Angular JS 时如何加载 AMD 模块?
【发布时间】:2013-04-24 12:01:31
【问题描述】:

出于某种奇怪的原因Angular JS has its own module system that is neither AMD nor CommonJS

我有许多 AMD 格式的现有模块。我想在 Angular 应用程序中使用它们。

我想避免重写任何 AMD 模块。如果可能的话,我也想避免使用 Angular 自己的模块系统。

在使用 Angular 时是否可以使用 AMD 模块?是否可以避免 Angular 的自定义模块系统?

【问题讨论】:

  • 我不知道“避免”是否是正确的想法。我认为您只是在问如何使用您的 AMD 模块。什么是使用旧 AMD 模块的最佳方式是这里的真正问题。我不确定答案。我以稍微不同的方式来回答这个问题。但我真的不建议避免使用 Angular 的模式。但是我很好奇使用其他项目中制造的 AMD 模块的最佳方法,等等。其他答案很有趣,但我觉得他们并没有真正解决这个问题。

标签: module angularjs amd commonjs


【解决方案1】:

您确实需要以“Angular 方式”定义 Angular 组件(例如 angular.module('yourApp').directive('someDirective', ...)),但您当然可以同时使用 AMD 来包装 Angular组件并用于将非 Angular 组件拉入 Angular。查看this seed project

【讨论】:

    【解决方案2】:

    您不能用 AMD 定义替换 Angular 的模块定义。您现在必须将 Angular 代码包装在 AMD 定义中。

    另外需要注意的是,目前还没有真正的“延迟加载”模块的方法。您最终必须在主 Angular 模块定义中要求您将在应用程序中使用的所有 Angular 模块,因此目前使用 AMD 的好处是有限的。

    开发团队表示他们将在未来某个时候支持延迟加载,这是现在在 AMD 中打包文件的唯一原因。

    【讨论】:

    • 谢谢。我的团队还在各种应用程序中使用 AMD 作为标准,因此能够加载这些模块而无需将它们转换为另一种不太常见的格式是很重要的。
    • Angular 开发人员现在的最佳做法是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2012-03-09
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    相关资源
    最近更新 更多