Javascript 使用angular cli从CDN加载外部库

Javascript 使用angular cli从CDN加载外部库,javascript,angular,angular-cli,Javascript,Angular,Angular Cli,我想使用angular cli构建一个捆绑了我的应用程序代码的应用程序,但在捆绑的代码中不包括Angular2框架或其他大型外部JavaScript库。我想在页面加载时从CDN加载这些库。有办法做到这一点吗 另外,有没有一种方法可以做到这一点,同时保留本地构建的好处,在本地构建中,只有我正在使用的Angular2框架的部分被加载 我看到了这个问题,但它是针对SystemJS的,我不认为它适用于Angular cli:我会将您的整个应用程序添加到CDN中,例如。例如(取决于应用程序的结构),您可以

我想使用angular cli构建一个捆绑了我的应用程序代码的应用程序,但在捆绑的代码中不包括Angular2框架或其他大型外部JavaScript库。我想在页面加载时从CDN加载这些库。有办法做到这一点吗

另外,有没有一种方法可以做到这一点,同时保留本地构建的好处,在本地构建中,只有我正在使用的Angular2框架的部分被加载


我看到了这个问题,但它是针对SystemJS的,我不认为它适用于Angular cli:

我会将您的整个应用程序添加到CDN中,例如。例如(取决于应用程序的结构),您可以缓存以下列表中的文件

  • index.html
  • 列表项
  • application.css
  • application.js
  • templates.js
  • vendors.css
  • vendors.js

这将提供比在CDN上缓存Angular framework文件更好的性能

您只需将指向CDN的适当的
标记添加到
index.html
文件中即可。 记住从
angular cli.json
中删除.js文件,这样它们就不会与应用捆绑在一起


目前,Angular 2 js文件本身无法做到这一点,它们会自动与应用程序捆绑在一起。尽管最新的更新使web服务器和浏览器能够缓存供应商文件,因此它们不会在每次访问应用程序时重新下载,而只是在散列更改时重新下载。

当创建具有Angular、版本2或更高版本的应用程序时,使用只包含您使用的Angular平台部分的构建系统。模板可以在构建时编译,从而允许构建过程从绑定的负载中删除模板编译器。最后,构建过程在代码静态分析的帮助下进行树抖动,这将进一步从平台的有效负载包中删除未使用的部分

如果从CDN提供角度,则需要厨房水槽,整个平台。这将是巨大的,对您的应用程序不利


您最好允许将您需要的平台部分打包。随着WebPack treeshaking插件的改进,您的包大小将变小

嗨,克里斯-我想知道下面的答案是否对你有帮助?如果是这样,请您将其标记为已接受的答案,并授予奖金。这将为您赢得回购积分,并在未来帮助他人。这太令人伤心了,在2017年,我们将讨论如何将CDN用于最著名的google javascript框架。我们甚至没有答案。“这太可悲了!”本卡梅隆:赏金是我给的。我把它授予了最能回答实际问题的答案。其他答案也很好,但还不至于从中加载外部库CDN@Milad看起来在2017年,我们不再需要包含所有库/框架。相反,我们的工具自动提取我们自己的自定义子集。对我来说,这似乎不仅仅是悲伤,还有什么方法可以保存类型信息吗?例如,我在devdependences中有jQuery类型,但我找不到“导入”它的方法,并且仍然有ng build(使用aot)来停止抱怨。我错过了什么?:)您可能应该
将它声明为TS文件中的一个全局变量,以便能够使用它而无需编译器抱怨。这不适用于
ng serve
dude,因为NG Service不使用你的索引文件.HTML文件,这是最有用的答案,因为它解释了为什么你找不到并且不应该寻找角2 +优秀点的CDNs,但不明确。许多网络交易的最大成本是连接本身,而不是下载速度。如果你有10个不同的Angular应用程序,并且你可以在访问一个应用程序后更快地加载它们——即使是以下载整个Angular运行时为代价——那么这仍然是值得的。如果你使用的是公共CDN版本,比如在cdnjs.com上,你甚至可以从你的用户访问过其他使用它的网站中获益——就像整个互联网共享的谷歌字体服务器加快了网页字体加载一样。