当前位置: 首页 > 知识库问答 >
问题:

AngularJS支持AMD吗?

韦阳辉
2023-03-14

在本回购协议中,AngularJS与AMD的RequireJS一起实施。

在本回购协议中,AngularJS团队与AMD共同发起了一个不包括RequireJS的AngularJS项目。

  • 我是不是想错了——也就是说,他们在解决不同的问题吗?
  • AngularJS库现在支持AMD吗?
  • 是否不再需要使用AngularJS项目的要求?

共有3个答案

别宏盛
2023-03-14

您可以使用提供程序延迟加载ngular.js组件。从文章中:

提供者本质上是用于创建和配置AngularJS人工制品实例的对象。因此,为了注册惰性控制器,您将使用$controllerProvider。。。

总之,您应该首先定义应用程序模块以保留相关提供商的实例。然后,您将定义您的惰性工件,以便使用提供者而不是模块API来注册它们自己。然后使用在路由定义中返回promise的“resolve”函数,加载所有惰性工件,并在加载后解析promise。这确保在渲染相关路由之前,所有惰性人工制品都可用。另外,不要忘记在$rootScope中解析promise$如果解析发生在AngularJS之外,则应用。然后,您将创建一个“引导”脚本,该脚本在引导应用程序之前首先加载应用程序模块。最后,您将从“索引”链接到引导脚本。“html”文件。

http://ify.io/lazy-loading-in-angularjs/

李辉
2023-03-14

是的,您可以将RequireJS与angular一起使用。你需要做一些额外的工作,使它的功能,如在你包括的链接,但这是可能的。

一般来说,虽然,我还没有发现任何需要AMD的角度。AMD的整体思想是,它允许您声明性地指定脚本之间的依赖关系,而不必担心在页面上包含它们的顺序。然而,Angular通过其依赖注入机制为您解决了这一问题,因此,在这一点上使用AMD并不会带来任何好处。

我还没有找到一个令人信服的理由将AMD与ngular.js.

宋高寒
2023-03-14

将RequireJS与AngularJS结合使用是有意义的,但前提是您了解它们各自在依赖项注入方面的工作原理,因为尽管它们都注入依赖项,但它们注入的内容却截然不同。

AngularJS有自己的依赖系统,可以将AngularJS模块注入到新创建的模块中,以便重用实现。假设您创建了一个实现AngularJS过滤器“greet”的“first”模块:

angular
  .module('first', [])
  .filter('greet', function() {
    return function(name) {
      return 'Hello, ' + name + '!';
    }
  });

现在假设您想在另一个名为“second”的模块中使用“greet”过滤器,该模块实现了“再见”过滤器。您可以将“第一”模块注入“第二”模块:

angular
  .module('second', ['first'])
  .filter('goodbye', function() {
    return function(name) {
      return 'Good bye, ' + name + '!';
    }
  });

问题是,为了在没有RequireJS的情况下正确工作,您必须确保在创建“第二个”AngularJS模块之前在页面上加载“第一个”AngularJS模块。引用文件:

依赖于模块意味着需要的模块需要在加载需要的模块之前加载。

从这个意义上说,这里是RequireJS可以帮助您的地方,因为RequireJS提供了一种干净的方法,可以将脚本注入页面,帮助您组织彼此之间的脚本依赖关系。

回到"第一个"和"第二个"AngularJS模块,下面是您如何使用要求JS将不同文件上的模块分开来利用脚本依赖项加载:

// firstModule.js file
define(['angular'], function(angular) {
  angular
    .module('first', [])
    .filter('greet', function() {
      return function(name) {
        return 'Hello, ' + name + '!';
      }
    });
});
// secondModule.js file
define(['angular', 'firstModule'], function(angular) {
  angular
    .module('second', ['first'])
    .filter('goodbye', function() {
      return function(name) {
        return 'Good bye, ' + name + '!';
      }
    });
});

您可以看到,在执行RequireJS回调的内容之前,我们需要注入“firstModule”文件,这需要加载“first”AngularJS模块来创建“second”AngularJS模块。

附带说明:在“第一模块”和“第二模块”文件上注入“角”作为依赖性是必需的,以便在要求JS回调函数中使用AngularJS,并且它必须在要求JS配置上配置以将“角”映射到库代码。您也可以用传统的方式(脚本标记)将AngularJS加载到页面,尽管这会削弱要求JS的优势。

更多关于AngularJS core从2.0版获得RequireJS支持的详细信息,请参阅我的博客文章。

根据我的博客文章“用AngularJS理解RequireJS”,这里是链接。

 类似资料:
  • 问题内容: 在 此回购中, AngularJS与AMD的RequireJS隐含在一起。 在 此仓库中 ,AngularJS团队向AMD播种了一个 不 包含RequireJS 的AngularJS项目。 我是否在想这是错误的方式-IE正在解决不同的问题? AngularJS库现在是否支持以前从未有过的AMD? 在AngularJS项目中不再需要使用RequireJS吗? 问题答案: 是的,您可以将R

  • 问题内容: 我目前正在管理AngularJS开发项目。有传言说我们至少需要从当前的1.2升级到AngularJS 1.5。我提出的一项要求是,我必须提供1.5终止支持的证据,但是在有角度的网站上进行了多个小时的搜索和多次Google搜索后却找不到任何终止支持的信息。 关于何时不再为Angular v1.x开发安全补丁和错误修复程序,是否有官方评论? 问题答案: 根据Angular开发团队的说法,当

  • 问题内容: 我想在我的项目中使用AngularJS UI Bootstrap Tabs,但是我需要它来支持路由。 例如: 据我从源代码可以看出,current 和指令不支持路由。 添加路由的最佳方法是什么? 问题答案: 要添加路由,通常使用ng- view指令。我不确定修改角度UI以支持您要查找的内容是否足够容易,但这是一个大致显示我认为您要查找的内容(这不一定是最好的方式- 希望有人可以提供为您

  • AMD

    在浏览器中编写模块化Javascript的格式 AMD (异步模块定义Asynchronous Module Definition)格式的最终目的是提供一个当前开发者能使用的模块化Javascript方案。它出自于Dojo用XHR+eval的实践经验,这种格式的支持者想在以后的项目中避免忍受过去的这些弱点。 AMD模块格式本身是模块定义的一个建议,通过它模块本身和模块之间的引用可以被异步的加载。它

  • 本文向大家介绍AngularJS在IE8的不支持的解决方法,包括了AngularJS在IE8的不支持的解决方法的使用技巧和注意事项,需要的朋友参考一下 AngularJS一般不会选择IE8支持, 因为很多特性在IE8下效果很差, 性能也不好, 但是由于项目的需要, 客户的机器有些是XP, 只能够装IE8, 所以为了解决这个, 我查阅了相关的资料,发现GITHUT有一些对AngularJS的改进,我

  • 问题内容: 我一直在将自定义指令升级到新的组件体系结构。我读过,组件不支持观察者。这样对吗?如果是这样,您如何检测对象的变化?对于一个基本示例,我有一个自定义组件,该组件具有一个子组件游戏,并带有对游戏的绑定。如果游戏组件中有找零游戏,如何在myBox中显示警告消息?我知道有rxJS方法可以纯粹在角度上做到这一点吗?我的JSFiddle JavaScript HTML 问题答案: 在没有观察者的情

  • 对于Requests,如果你有问题或者建议,可以通过下面几种方法得到支持: StackOverflow 如果你的问题不包含敏感或私有信息,或者你能将这些信息匿名化,那你就可以在 StackOverflow 上使用 python-requests 标签提问。 发送推文 如果你的问题在140个字符内描述,欢迎在 twitter 上发送推文至 @kennethreitz, @sigmavirus24,

  • This page talks about the design forces and use of the Asynchronous Module Definition (AMD) API for JavaScript modules, the module API supported by RequireJS. There is a different page that talks abou