gpt4 book ai didi

javascript - AngularJS 是否像 RequireJS 一样支持 AMD?

转载 作者:行者123 更新时间:2023-12-02 22:41:37 25 4
gpt4 key购买 nike

this repo AngularJS 是通过 AMD 的 RequireJS 实现的。

this repo AngularJS 团队与 AMD 合作开发了一个 AngularJS 项目,该项目包含 RequireJS。

  • 我是否以错误的方式思考这个问题 - I.E.他们正在解决不同的问题吗?
  • AngularJS 库现在是否支持 AMD(以前不支持)?
  • AngularJS 项目不再需要使用 RequireJS 了吗?

最佳答案

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

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

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

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

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

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

Depending on a module implies that required module needs to be loaded before the requiring module is loaded.

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

回到“第一个”和“第二个”AngularJS 模块,以下是如何使用 RequireJS 分离不同文件上的模块以利用脚本依赖项加载:

// 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 + '!';
}
});
});

您可以看到,我们依赖于要注入(inject)的“firstModule”文件,然后才能执行 RequireJS 回调的内容,这需要加载“第一个”AngularJS 模块来创建“第二个”AngularJS 模块。

旁注:为了在 RequireJS 回调函数中使用 AngularJS,需要在“firstModule”和“secondModule”文件上注入(inject)“Angular”作为依赖项,并且必须在 RequireJS 配置上进行配置,以将“Angular”映射到库代码。您也可以以传统方式(脚本标签)将 AngularJS 加载到页面,尽管这违背了 RequireJS 的优点。

有关 AngularJS 核心从 2.0 版本开始获得 RequireJS 支持的更多详细信息,请参阅我的博客文章。

根据我的博客文章“通过 AngularJS 了解 RequireJS”,这里是 link .

关于javascript - AngularJS 是否像 RequireJS 一样支持 AMD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16108207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com