2017-01-17 66 views
20

我想使用angular-cli構建綁定我的應用程序代碼的應用程序,但不包括捆綁代碼中的Angular2框架或其他大型外部JavaScript庫。我想在加載頁面時從CDN加載這些庫。有沒有辦法做到這一點?使用angular-cli從CDN加載外部庫

此外,有沒有辦法做到這一點,同時保留本地構建的好處,其中只有我使用的Angular2框架的部分被加載?

我看到了這個問題,但它是SystemJS,我不認爲它適用於角CLI:How to load angular2 using CDN and SystemJS

+0

嗨克里斯 - 我想知道下面的答案是否幫助你?如果是的話,您可以將其標記爲已接受的答案並獎勵賞金。這將使您獲得回購積分並在未來幫助他人。 –

+3

這真讓人傷心,2017年,我們正在討論如何將CDN用於最着名的谷歌JavaScript框架。 而我們甚至沒有答案。 這只是傷心。 – Milad

+0

@BenCameron:賞金來自我。我將它授予最能回答實際問題的答案。其他答案也很棒,但不是很重要,從CDN加載*外部庫* –

回答

7

您只需將指向CDN的相應<script src="">標記添加到index.html文件即可。 請記住從angular-cli.json中刪除.js文件,以免它們與應用程序捆綁在一起。

目前,您無法爲Angular 2 js文件本身做到這一點,它們會自動與您的應用程序捆綁在一起。雖然最新的更新使Web服務器和瀏覽器能夠緩存供應商文件,但是它們不會在每個訪問者的紅色下載到您的應用程序,而只是在散列更改時纔會被載入。

+0

有沒有辦法保存類型信息?我在devDependencies中有例如jQuery類型,但是我找不到一個「導入」它的方法,並且仍然有ng(用aot)停止抱怨。我錯過了什麼? :) –

4

我想你的整個應用程序添加到一個CDN如Akamai。例如(取決於您的應用程序的結構),你可以緩存文件,例如在下面的列表中的...

  • 的index.html
  • 列表項
  • application.css
  • 應用.js文件
  • templates.js
  • vendors.css
  • vendors.js

這比只緩存CDN上的Angular框架文件的性能會更好。

3

使用Angular創建應用程序時,版本2或更高版本使用的構建系統僅包含您使用的Angular平臺的各個部分。模板可以在構建時編譯,允許構建過程從捆綁的有效載荷中移除模板編譯器。最後,構建過程在代碼的靜態分析的幫助下進行抖動,這進一步從有效載荷包中除去未使用的平臺部分。

如果您從CDN提供Angular,它將需要成爲廚房水槽,整個平臺。這將是巨大的,並損害您的應用程序。

讓角度cli捆綁您需要的平臺部分會更好。隨着WebPack treehaking插件的改進,您的包裹大小會變得更小。