2017-06-28 133 views
0

可能我只需要解釋(沒有回答我的問題,它可能在某些解釋情況下無效)。學習角度我發現如何使用angular-cli創建新模塊。 ...但我不知道如何使用,如果從主模塊。爲了接近角度我嘗試了下一個實驗。有角度。模塊構造

我已經生成的模塊:

$ ng generate module myTestModule 
installing module 
    create src/app/my-test-module/my-test-module.module.ts 

$ ng generate module myTestModule2 
installing module 
    create src/app/my-test-module2/my-test-module2.module.ts 

1. 我有通常的文件描述了主模塊app.module.ts。我可以在my-test-module.module.tsapp.module.tsmy-test-module2.module.ts中註冊模塊my-test-module.module.ts。它如何使我的應用程序更好?

2. 我在許多模塊上的紅色分割應用程序提供了更好的性能。但我對此感到困惑。如果我使用一些數據加載功能來加載數據,我導航到URI2module1被取消激活,但module2加載數據。如果我回溯module1將再次保持活動狀態並第二次加載相同的數據!我錯過了什麼角?

3. 如何從angular模塊結構中獲益?

+1

我有一個關於模塊的視頻,包括將它們分開的好處,在這裏:https://www.youtube.com/watch?v=ntJ-P-Cvo70 – DeborahK

回答

1

喜談論好處,你有:

  • 模塊都是獨立的,可移動或多個側面使用,這樣就避免了在這裏https://angular.io/guide/styleguide#application-structure-and-angular-modules重複代碼的詳細信息。
  • 另一個優點是能夠使用延遲加載。更多信息https://angular.io/guide/ngmodule#lazy-loading-modules-with-the-router這會讓你根據路由器導入你認爲需要的東西。例如主屏幕只需要加載一個組件,它應該儘可能快。
  • 智能導入,導入庫時我們通常會犯錯誤,我們不需要整個導入一個例子。

    import { Observable } from 'rxjs/Observable'; 
    import * from "rxjs"; 
    
    在這個例子中

    我們只使用可觀測,不需要導入全庫,因爲這將使我們的集束大小笨重。在模塊中分割我們的代碼將允許像這個例子那樣進行智能導入。

    import { MdToolbarModule} from '@angular/material'; 
    // import { MaterialModule } from '@angular/material'; 
    imports: [ 
        // MaterialModule.forRoot(), 
        MdToolbarModule, 
    ], 
    

    我們可以引進整個庫,但因爲這是一個簡單的組件,我們只需要很短的模塊。

1

關於#2 - 您能否提供更多細節? module1module2是否執行相同的請求,並且您想要共享結果?如果是這樣,那麼你必須創建Service並放入core.module,該模塊必須每個應用只導入一次。 angular.io有文檔頁面Style Guide,請閱讀它,關於項目結構(特別是coreshared模塊的概念)幾乎沒有非常重要和有用的註釋。

如果module1module2執行不同的要求,你想有一個請求緩存(即不執行第二次,當導航回module1) - 你必須「緩存」的數據手動(只是將結果保存到變量service)。根據我的理解,當你有多模塊結構時,你可以: - do Lazy Load(或者根本不允許加載,例如,如果用戶沒有權限) - 文件(js/html)將只加載當用戶請求它們或主頁面加載後(緩衝加載)。它增加啓動時間 - 在一般情況下,當模塊/組件從頁面卸載,所有觀察員/守望者/其他區-NG的東西是有點「垃圾回收」,這減少內存使用