2016-12-27 60 views
4

我完全新的Angular2(之前沒有體驗版) - 有人會這麼好心解釋爲NgModulebootstrap的製作方法的屬性bootstrap之間的區別?Angular2 - 引導屬性VS方法

例如,在英雄的Angular2 旅遊教程,app.module.ts包括以下內容:

@NgModule({ 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    AppRoutingModule 
    ], 
    declarations: [ 
    AppComponent, 
    DashboardComponent, 
    HeroDetailComponent, 
    HeroesComponent 
    ], 
    providers: [ HeroService ], 
    bootstrap: [ AppComponent ] 
}) 

在其他例子中,我看到的東西,如:

let phoenixChannelsProvider = provide(PhoenixChannels, { useFactory:() => { 
    return new PhoenixChannels("ws://localhost:4000/socket"); 
} });  
bootstrap(AppComponent, [phoenixChannelsProvider]); 

,如果有人能夠甚至模糊地概述了在這裏應用「bootstrapping」這個概念的區別,這將是非常值得讚賞的。

回答

4

你需要他們兩個:

在第一位的,這是一個模塊,基本上是你的根模塊

bootstrap: [ AppComponent ] 

這是說,在該模塊中,根組件,我米將要開始我的應用程序是AppComponent,然後從那裏採取。

是說這個模塊是引導AppComponent,如果你注意到它是一個數組,這意味着你可以有多個應用程序作爲根模塊的一部分引導,這並不常見。

但是第二個,這在這樣的最新版本棱角分明的:

platformBrowserDynamic().bootstrapModule(AppModule) 

實際上是自舉/啓動angular2應用。

Angular2框架需要一個起點嗎?這是瞭解您的應用和所有內容的起點。

如果您來自Java背景,這是您的主要函數。

換句話說,應用程序需要從一個地方開始,這是一個起點(實際上不止於此)。

如果您發現,該方法platformBrowserDynamic,是某種自我解釋,它是在談論瀏覽器的平臺,這意味着你可以創建自己的平臺,並引導你的應用程序根模塊(其中自舉你appComponent)。

如果您搜索更多,您將意識到對於NativeScript或Angular2Universal或其他人,主要區別在於引導功能(platformBrowserDynamic)。

例如,在通用,我們有:

platformUniversalDynamic().bootstrapModule(AppModule) 

或者當你想使用網絡工作者,你會看到:

bootstrapWorkerApp(AppModule, []); 
+0

「實際上是引導整個angular2應用程序。」線條有點寬泛。也許只引導那個模塊及其依賴關係?因爲可能有懶加載的模塊和東西:/ 1 tho – echonax

3
bootstrap(AppComponent, [phoenixChannelsProvider]); 

是從舊版本Angular2 < = RC.5不再有效

BTW:Angular2的飛鏢版本沒有NgModule,仍然採用bootstrap(...)方法。

+0

好吧清楚,是真正有用的就知道了,謝謝您。 – skwidbreth