Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度2:为什么使用NPM管理器而不是CDN引用?_Javascript_Node.js_Angular - Fatal编程技术网

Javascript 角度2:为什么使用NPM管理器而不是CDN引用?

Javascript 角度2:为什么使用NPM管理器而不是CDN引用?,javascript,node.js,angular,Javascript,Node.js,Angular,Angular 2看起来比Angular更好更简单,但是,我在使用NPM时遇到了一个问题-我的工作中不允许使用NPM。但我有一个更大的问题,那就是为什么我们需要NPM? 我在CDN版本中使用了Angular,这一直被认为比本地版本(更好的缓存)更好。那么,使用NPM manager与CDN引用(如果有的话)相比有什么优势呢?为什么要扩大项目的本地规模 今天,我看到WEB开发到处都在使用NPM。 我想了解为什么突然之间WEB开发开始转向本地资源而不是普通的在线资源。 我正在寻找令人信服的解释,好的

Angular 2看起来比Angular更好更简单,但是,我在使用NPM时遇到了一个问题-我的工作中不允许使用NPM。但我有一个更大的问题,那就是为什么我们需要NPM? 我在CDN版本中使用了Angular,这一直被认为比本地版本(更好的缓存)更好。那么,使用NPM manager与CDN引用(如果有的话)相比有什么优势呢?为什么要扩大项目的本地规模

今天,我看到WEB开发到处都在使用NPM。 我想了解为什么突然之间WEB开发开始转向本地资源而不是普通的在线资源。
我正在寻找令人信服的解释,好的文章/博客,指出为什么选择一个或另一个

主要是因为现代web应用程序将使用某种依赖项或模块加载器,如requireJS或(在Angular2的情况下)SystemJS或commonJS,而CDN源使其更加复杂,因为它需要新的资源http连接来获取源资产,并且来自不同的域(跨服务器脚本问题)

Angular的好处之一是框架的结构允许您根据特定的应用程序需求定制应用程序包

从CDN下载一刀切的iife是不可能的

如果您查看Angular npm包,您将看到它们由许多较小的模块组成,这些模块构成了框架

使用一种称为“树抖动”的技术,您的绑定器可以对代码依赖项运行静态分析,并创建一个只包含引用模块的绑定。这可以大大减少捆绑包的大小

以下是有关树木摇晃的更多信息:


不允许使用NPM是荒谬的。还有很多博客解释了为什么js CDN库并不总是像他们所说的那样有好处。不幸的是,我们公司有一些严格的隐私政策,到目前为止,我们不能使用NPM,因为他们的一些EULA条款。我有树状图等,但为什么同样的事情不能在线处理模块呢?为什么它们必须驻留在我的本地服务器上?如果我做了5个相似的项目,我将有他们的模块的个人副本乘以5。如果我使用CDN或使用在线版本,所有5个项目都将指向同一在线源,并且有0个本地脚本。文件必须存储在本地,以便您能够在“构建”时创建优化的捆绑包。CDN(代表内容交付网络)不是可以交付相同的内容,但是在线的吗?我不明白为什么这些模块应该是本地的,而不是对在线资源的引用。但是,当与“垫片”依赖项一起使用时,不允许使用requireJS优化器进行构建,因为它不能保证CDN资源将在构建之前加载。即使配置支持CDN,如果您的所有第三方库都在CDN中,网络连接也会降低您的应用程序加载速度。