引导在angularJS中是什么意思?
我是Angular JS的初学者。 我正在通过下面的链接。 http://docs.angularjs.org/tutorial/step_00
什么是引导文件? 他们在哪里?
什么是引导的自动引导和手动初始化? 我从链接http://docs.angularjs.org/guide/bootstrap读下面的手动初始化的缺点
任何人都可以解释到底什么是劣势?
虽然上面的每个人都回答完美,我发现我在找什么,但仍然是一个工作的例子似乎失踪。
在下面的示例中了解有关自动/手动引导在AngularJS中的帮助很多:
AngularJS:自动启动:
Angular在DOMContentLoaded事件时自动初始化/自动引导,或者当angular.js脚本被下载到浏览器并且document.readyState被设置为完成。 此时AngularJS查找ng-app指令。 当ng-app指令被find时,Angular会:
-
加载与指令相关的模块。
-
创build应用程序注入器。
-
编译从ng-app根元素开始的DOM。
这个过程被称为自动引导。
<html> <body ng-app="myApp"> <div ng-controller="Ctrl">Hello {{msg}}!</div> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script> <script> var app = angular.module('myApp', []); app.controller('Ctrl', function($scope) { $scope.msg = 'Nik'; }); </script> </body> </html>
JSFiddle: http : //jsfiddle.net/nikdtu/ohrjjqws/
AngularJS – 手动引导:
您可以使用angular.bootstrap()函数手动初始化angular度应用程序。 该函数将模块作为参数,并应在angular.element(document).ready()函数中调用。 当DOM准备好进行操作时,会激发angular.element(document).ready()函数。
<html> <body> <div ng-controller="Ctrl">Hello {{msg}}!</div> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script> <script> var app = angular.module('myApp', []); app.controller('Ctrl', function($scope) { $scope.msg = 'Nik'; }); //manual bootstrap process angular.element(document).ready(function () { angular.bootstrap(document, ['myApp']); }); </script> </body> </html>
JSFiddle: http : //jsfiddle.net/nikdtu/umcq4wq7/
注意 :
-
手动引导应用程序时,不应使用ng-app指令。
-
你不应该混淆自动和手动引导你的应用程序的方式。
-
定义模块,控制器,服务等手动引导您的应用程序之前定义在上面的示例中。
参考: http : //www.dotnettricks.com/books/angularjs/interview
Bootstrapping相当于初始化或启动Angular应用程序。 主要有两种方法。
第一个是通过将ng-app
添加到HTML中的元素来自动引导,如下所示:
<html ng-app="myApp"> ... </html>
第二个是通过angular.module("myApp", []);
创build应用程序之后,从JavaScript引导,就像这样angular.module("myApp", []);
angular.bootstrap(document, ['myApp']);
加上Dave Swersky的回答(我是Angular的新手,所以如果我错了,请纠正我):
以下图片取自angularjs.org bootstrap教程 。 解释什么Dave阐明。
在ng-app指令元素中的HTML由AngularJS编译。 例如:
<body> <div> {{ 1 + 2 }} </div> </body>
会呈现为这样的:
{{ 1 + 2 }}
但是,添加ng-app指令:
<body ng-app="module"> <div> {{ 1 + 2 }} </div> </body>
呈现如下:
3
这是因为ng-app“引导”了body标签,并告诉Angular创build内容的“内部表示”。 内部表示当然是3
。 从教程:
“如果find了ng-app指令,那么Angular会编译处理ng-app指令的DOM作为编译的根,这样你就可以告诉它只把DOM的一部分作为Angular应用程序。
Angular也加载与ng-app指令相关的模块(Angular tutorial中的“module”),并创build一个应用程序注入器(用于dependency injection)。
ng-app
指令指示页面的哪一部分(全部或部分,由您决定)是Angular应用程序的根。 Angular读取该根内的HTML并将其编译为内部表示。 这个阅读和编译是自举过程。
手动引导是当你编写代码来执行引导过程而不是使用ng-app
指令时。
Angular JS自动引导过程
AngularInit()是第一个通过jqLite ready函数调用自动引导绑定的Angular API。
- ready()调用DOM准备好了
- angularInit()从ready()中调用
- Angular Init使用element.querySelectorAll()从DOM中提取ng-app元素,其格式为'ng:app','ng-app','x-ng-app','data-ng-app'。
<body ng-app=ngAppDemo> <div ng-controller="ngAppDemoController" > I can add: {{a}} + {{b}} = {{ a+b }} </div> </body>
ng-app="ngAppDemo" will be extracted.
- 使用正则expression式模块被提取,例如。 module =“ngAppDemo”
- 最后bootstrap(..)被调用,从而创build全局注入器和rootcope,并引导angular度的应用程序。
从Angular NgModules页面:
import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { AppComponent } from './app.component'; @NgModule({ imports: [ BrowserModule ], declarations: [ AppComponent ], bootstrap: [ AppComponent ] }) export class AppModule { }
最后,@ NgModule.bootstrap属性将这个AppComponent标识为引导组件。 当Angular启动应用程序时,它将AppComponent的HTML呈现放置在DOM中,位于index.html的元素标记内。
在main.ts中引导
通过在main.ts文件中引导AppModule启动应用程序。
Angular提供了针对多个平台的各种引导选项。 本页面描述了两个选项,都针对浏览器。