2017-08-01 404 views
-2

我試圖理解這個,所以如果有人可以請給我解釋,我會非常感激。Angular 4懶加載

我的理解是,我們不能在沒有node.js的情況下在角度上進行延遲加載。真的嗎?如果沒有,請您指點我可以瞭解如何在沒有node.js的情況下進行操作的地方?

請和謝謝。

+1

你真的用Google嗎? – Milad

+0

https://namitamalik.github.io/Lazy-Loading-with-Angular2-Routing/ – Milad

+1

有一百萬篇關於這方面的文章,wtf – Milad

回答

1

這是不正確的。雖然兩者都是使用Javascript,但Angular和Node.js是兩個獨立的技術,有兩個獨立的關注點。 Node.js是一個後端架構,用於處理和傳遞數據,而Angular是一種前端技術,主要關注如何爲用戶提供一個網關來與通過GUI提供數據的服務進行交互。

在Angular懶加載模塊通過路由器as documented here完成。基本上你不導入你要延遲加載,直到該模塊的路徑已被激活的模塊,例如:

export const routes: Routes = [ 
    { path: '', redirectTo: 'contact', pathMatch: 'full'}, 
    { path: 'crisis', loadChildren: 'app/crisis/crisis.module#CrisisModule' }, 
    { path: 'heroes', loadChildren: 'app/hero/hero.module#HeroModule' } 
]; 

要小心,並閱讀角文檔仔細,因爲有不少「陷阱「與延遲加載。我能想到的一些:

  1. 您只需要在路由中加載模塊。嘗試將其導入父模塊將會否定模塊的「懶惰」,並且在某些情況下會導致錯誤。

  2. 延遲加載模塊導致依賴注入樹被拆分。換句話說,如果您在父模塊和子模塊中調用相同的服務,它們將處於不同的上下文中,因此它們不一定會彼此知曉,除非您聲明服務爲forRoot(), more on that here.

總的來說,這樣做很簡單。只需按照文檔。

+0

感謝您的迴應。我都知道這一點。有一點我有它實現,它工作正常。爲什麼我認爲它沒有node.js是行不通的,它在我的開發機器上工作得很好,但是一旦我將它發佈到我的託管站點(沒有node.js),應用程序就停止工作全部一起。我發佈應用程序時是否缺少我需要的東西? – Samkan

0

在我看來你需要使用角CLI來建立你的角度應用:ng build --prod --env=prod 然後在src文件夾角CLI會生成此文件夾dist文件夾中的應用程序準備上傳到服務器。