JavaScript 依赖管理: npm vs. bower vs. volo
JavaScript依赖管理:npm vs. bower vs. volo
在JavaScript开发中,依赖管理是一个重要的问题。而npm、bower和volo这三个工具,都是为了解决这个问题而出现的。它们似乎在解决同一个问题,但是针对的是不同的环境和场景。npm主要用于Node.js环境,而volo和bower则用于浏览器环境。
事实上,你也可以使用npm来管理浏览器中的JavaScript和CSS。没有什么阻止你这样做。从这个意义上说,对我来说,使用npm感觉更自然,而不是为了同一个目的而管理两个不同的工具。
据说bower有更多的包可用,至少对于更流行的包是这样。但是很快,jQuery将直接在npm中提供,而且可能其他所有的库也会遵循这个趋势。
我认为,既然有像browserify和webmake这样的工具存在,可以帮助在浏览器中使用Node模块,那么就不再真正需要bower或volo,除非它们为你提供了其他的功能(比如只存在于它们的注册表中的特定模块)。
volo和bower也是不错的工具,但在我看来,如果你已经在使用npm,最好还是坚持使用它。
请注意,即使不使用browserify或webmake,你也可以使用npm来管理客户端依赖。在我参与的大多数项目中,安装npm模块后,我会运行一个脚本将它们部署到客户端应用程序使用它们的位置。有时,我使用grunt将该文件与其他js文件合并,有时我直接从我的web应用程序的模板文件中引用它。无论如何,这是个人偏好。其他人可能会发现bower或volo更容易使用,因为它们更符合他们的工作流程。
对于同一个问题有竞争性的解决方案是件好事。你知道为什么yeoman项目选择推出一个新的包管理器,而我们已经有npm了吗?(它已经成熟、有名且功能丰富)这让我觉得我还是没有真正理解其中的要点。
实际上,不清楚。但正如你所说,有时重新发明轮子是有趣的,只是因为你可以这样做,而且有时在解决同一个问题的过程中也会有一些改进。除此之外,不清楚他们为什么选择推出一个新的工具,除了为了让前端开发人员更容易找到包。并不是所有的前端开发人员都有Node经验,我猜这可能是Bower等项目背后的主要原因。试图让非Node用户更容易使用,这只是我的猜测。
我猜他们想要在前端开发中分离npm的麻烦,追求前端的简单性。因此,才有了像bower这样的前端开发工具的出现。
JavaScript依赖管理:npm vs. bower vs. volo
在前端开发者中,Bower仍然非常受欢迎,尽管它的功能非常有限。每个前端包都在使用它。还有一个将Bower合并到npm的倡议。
Bower针对客户端进行了优化,仅支持扁平的依赖树,即每个库只能使用一次(因为将不同版本的同一库发送给客户端成本较高),并且依赖关系约束必须由用户解决。
你可以在Bower注册表中找到与前端相关的任何内容(bower search
至于volo,我多年来还没有使用它超过5分钟。不了解它,但从我看到的内容来看,它包含了一些构建工具,非常熟悉Grunt用户。
是的,npm代表Node Package Manager。但现在你可以将它用于任何事情;人们不再仅仅使用npm install来安装东西,并且期望它们仅在Node环境中工作。例如,有许多Twitter Bootstrap的npm包。
npm针对服务器端使用进行了优化,具有嵌套的依赖树。每个依赖关系都可以有自己的依赖关系,这些依赖关系也可以有自己的依赖关系,依此类推。这消除了依赖版本冲突,因为每个依赖关系都可以使用它们自己的版本,例如Underscore。然而,即将发布的npm版本3将会扁平化依赖树:
使用npm,你的node_modules目录将会更扁平化。所有的依赖项和大多数子依赖项(和(子)+依赖项)将会在顶层并列。只有在存在冲突时,模块才会安装在更深层次。这对Windows用户来说应该会更加容易。
我认为使用npm的一些优点包括:
- 所有其他包管理器(component、bower、volo、JSPM等)都使用它;
- 允许使用构建脚本;
- 提供了许多用于检查基于npm的包的工具。
npm是JavaScript的包管理器。
截至2013年2月,我的观点如下。请不要再考虑这个观点了。
在Node项目中,最好坚持使用npm,只有很少的项目也适用于浏览器...
Bower现在很受欢迎。他们在他们的库中有很多项目,并且项目维护者喜欢保持它们在bower注册表中的最新状态...
有时候它有点小bug。
我没有使用volo超过5分钟,所以我不了解它,但从我看到的内容来看,它似乎比bower更灵活。
volo的一个负面点是他们的项目非常过时。
npm上有成千上万个模块,它们只在浏览器中工作或者在Node和浏览器中都工作。它们中的大多数甚至具有ci徽章,告诉您它们在哪些浏览器中工作。bower等上的大部分内容可能已经在npm上了。
我不明白像ngBoilerplate这样的项目为什么需要使用bower,而它已经依赖于npm进行安装。
“pop guy”是什么意思?“pop”是“popular”的缩写吗?
在您的截图中,npm代表核电规划手册(nuclear planning manual);)
JavaScript依赖管理:npm vs. bower vs. volo
在JavaScript开发中,依赖管理是一个非常重要的问题。随着项目越来越复杂,依赖项也越来越多,需要一种有效的方式来管理和安装这些依赖项。npm、bower和volo是目前比较流行的JavaScript依赖管理工具。本文将探讨这些工具出现的原因以及解决方法。
npm是Node.js的默认包管理工具,用于管理JavaScript模块,也可以用于安装前端组件。然而,由于其名称中包含"node",使得很多人认为它只适用于后端开发。实际上,npm已经成为了一个非常通用的包管理系统,可以用于安装各种前端组件和模块。因此,这并不是npm和bower之间的区别。
与此相反,bower是专门用于管理前端组件的工具,例如CSS、HTML和JavaScript。它更加注重于前端开发,提供了更方便的安装和管理前端组件的方式。然而,npm同样也可以用于安装和管理前端组件,只是在命名上有所区别。
另外,还有一个名为volo的工具,它是一个快速、简单的前端项目构建工具,可以用于安装和管理前端依赖。与npm和bower相比,volo更加轻量级,适用于小型项目。它提供了一种简单的方式来安装、更新和卸载前端组件。
无论是npm、bower还是volo,它们都是用于管理JavaScript依赖的工具。它们之间的区别在于关注点和使用场景。npm适用于后端和前端开发,可以管理各种类型的依赖。bower更加专注于前端开发,提供了更方便的安装和管理前端组件的方式。volo则更适合于小型项目,提供了一个简单的前端项目构建工具。
因此,在选择依赖管理工具时,需要根据项目的具体需求和特点进行选择。如果需要管理复杂的依赖关系,可以考虑使用npm;如果更注重前端组件的安装和管理,可以选择bower;如果是小型项目或者需要快速构建前端项目,可以考虑使用volo。
JavaScript依赖管理是一个重要的问题,npm、bower和volo是目前比较流行的解决方案。根据项目需求选择合适的工具,可以有效地管理和安装JavaScript依赖项,提高开发效率。