我知道ng-app在AngularJS中初始化模块如下:
var app = angular.module('myApp', []);
<html ng-app="myApp">
但是,当我向刚接触AngularJS的人教导或观看视频时,教师不可避免地会因应用程序和模块之间的术语不一致而摸索。 AngularJS被认为是一个框架,我很惊讶它没有变成:
var app = angular.app('myApp', []);
<html ng-app="myApp">
OR
var app = angular.module('myModule', []);
<html ng-module="myModule">
有没有人一直关注这个项目,知道这个框架的历史?
答案 0 :(得分:13)
我不认为克雷格会问ng-app
做什么或者它是如何运作的。
我认为他在问为什么那些创造了角度名称的人ng-app
。为什么他们没有命名ng-module
。 ng-module
会更容易理解。
例如ng-controller
应该命名一个控制器,ng-module
应该命名一个模块。创建它们的angular
方法名为module()
和controller()
,没有名为&#34; app&#34;的方法或实体。
我倾向于同意克雷格。这就是说如果我去猜测他们为什么命名它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: Getting around ngApp limitations with ngModule
答案 1 :(得分:7)
ng-app
表示:该页面中包含Angular!
ng-app="module"
表示:该页面中包含Angular,并且该模块中定义了必要的控件/服务/等。
答案 2 :(得分:4)
ng-app
定义应用程序的main
或bootstrap
模块,该模块应执行应用程序的初始化任务。在某些情况下,您可能希望确定应用程序的主要模块应该是什么。就像在java中一样,你有很多方法和类,但你定义了一个main
方法作为起点。类似地,在角度上你有很多模块,但是,你定义一个模块作为应用的起点。