为什么ng-app不是ng-module

Why ng-app not ng-module?

本文关键字:ng-module 不是 ng-app 为什么      更新时间:2023-09-26

我知道ng-app在AngularJS中初始化一个模块,如下所示:

var app = angular.module('myApp', []);
<html ng-app="myApp">

但是当我向刚接触 AngularJS 的人教这个或观看视频时,教师不可避免地会摸索应用程序和模块之间术语的不一致。 AngularJS作为一个框架经过深思熟虑,我很惊讶它没有改变为:

var app = angular.app('myApp', []);
<html ng-app="myApp">

var app = angular.module('myModule', []);
<html ng-module="myModule">

有没有人关注这个项目足够长的时间,以了解框架这一部分的历史?

我不认为克雷格在问ng-app做什么或它是如何工作的。

我想他是在问为什么创造棱角分明的人会ng-app该指令。他们为什么不把它命名为ng-module. ng-module会更容易理解。

例如,ng-controller应该命名一个控制器,ng-module应该命名一个模块。创建它们的angular方法被命名为module()controller(),没有称为"app"的方法或实体。

我倾向于同意克雷格的观点。也就是说,如果我去推测他们为什么命名它ng-app我会认为这是因为您的 HTML 中只允许有一个 ng-app 指令。如果您希望将多个模块与HTML页面相关联,则可以以编程方式执行此操作。

因此,ng-app更像是使用模块引导HTML的实用程序,它不是将模块与HTML相关联的通用方法。

如果您查看文档,这就是它的建议:

使用此指令自动引导 AngularJS 应用程序。这 ngApp 指令指定应用程序的根元素,并且 通常放置在页面的根元素附近 - 例如,在 或标记。

每个 HTML 只能自动引导一个 AngularJS 应用程序 公文。在文档中找到的第一个 ngApp 将用于定义 要作为应用程序自动引导的根元素。运行多个 HTML 文档中的应用程序,您必须手动引导它们 改用 angular.bootstrap。AngularJS 应用程序不能 相互嵌套。

http://docs.angularjs.org/api/ng/directive/ngApp

综上所述,如果你想要一个ng-module指令,你总是可以编写自己的指令来包装angular.bootstrap()函数。你可以在我写的一篇关于它的博客文章中找到有关如何执行此操作的更多详细信息和代码:AngularJS:使用 ngModule 绕过 ngApp 限制

ng-app的意思是:该页面包含Angular!

ng-app="module"的意思是:该页面包含 Angular,并且该模块中定义了必要的控件/服务/等。

>ng-app定义应用程序的mainbootstrap模块,该模块应执行应用程序的初始化任务。在某些情况下,您可能希望在运行时决定哪个应该是应用程序的主模块。就像在java中一样,你有很多方法和类,但你定义一个main方法作为起点。同样,在 angular 中,您有许多模块,但是,您将一个模块定义为应用程序的起点。