Yug*_*dle 160 javascript node.js npm bower volojs
你怎么比较npm
,bower
和volo
?
这三个都可用于为UI项目安装JavaScript依赖项.我理解npm
更多节点特定.
那么,何时使用什么?
npm
依然屹立遥远,但bower
并volo
似乎正好解决同样的问题,虽然我不是能画之间的线路npm
和bower-volo
.
str*_*ops 104
最能描述npm和bower之间差异的描述是:npm管理称为包的JavaScript模块,Bower管理称为组件的前端组件(即css,html和JavaScript).npm也用于安装凉亭.这是一篇关于npm和bower的广泛文章(不包括volo),它有很多细节.
gus*_*nke 72
它仍然在前端开发人员中非常受欢迎,尽管它的功能很少.每个前端包都在使用它.还有一项倡议将bower合并到npm.
Bower针对客户端进行了优化,仅支持平面依赖树,即每个库必须只使用一次(因为将相同库的不同版本发送到客户端的成本很高),并且依赖性约束必须由用户解决.
您可以期待在凉亭注册表中找到与前端相关的任何内容(bower search <some keyword>
) - 在我看来,这是凉亭相对于其他包管理器的最大优势.
多年来我还没有使用它超过5分钟.不知道它,但从我可以看到它确实包括一些构建工具,这是Grunt用户非常熟悉的.
是的,npm代表Node Package Manager.但是现在你可以把它用于一切; 人们不再只是在npm install
做事情,并期望他们只在Node环境中工作.例如,Twitter Bootstrap有许多npm包.
Npm针对服务器端使用进行了优化,具有嵌套的依赖关系树.每个依赖项都可以有自己的依赖项,可以有自己的依赖项,依此类推.这消除了依赖版本冲突,因为每个依赖项可以使用它们自己的版本,例如Underscore.但是,即将推出的npm版本3将使依赖树变平:
使用npm @ 3,您的node_modules目录将更加平坦.所有依赖项和大多数子依赖项(以及(子)+依赖项)将在顶层彼此相邻.只有在存在冲突时才会在更深层次安装模块.这应该使Windows用户更容易.
我在使用npm时看到的一些优点:
npm是JavaScript的包管理器.
截至2013年2月,我的意见如下.请不要再考虑它了.
当你使用Node项目时,最好坚持使用它,浏览器可用的项目也很少......
鲍尔现在是流行音乐人.他们有很多项目,项目维护人员喜欢在凉亭注册表中保持最新状态......
很遗憾他有时候会有点小马车.
从那以后我没有尝试超过5分钟的volo,但从我所能看到它看起来比bower更灵活.
volo的一个负面观点是他们的项目非常过时.
roy*_*jas 24
他们似乎正在解决同样的问题,但针对不同的环境/世界.用于nodejs的NPM和用于浏览器的volo,bower.
事实是,您也可以使用NPM来管理浏览器的javascript和css.没有什么能阻止你这样做.从这个意义上讲,使用NPM对我来说比为同一目的管理两种不同的工具更自然.
看起来凉亭有更多的包可用,至少对于更受欢迎的包.但很快jQuery也将直接在NPM中提供,并且可能所有其他库都将遵循相同的趋势.
在我看来,因为有一样的工具browserify和webmake在那里,在浏览器的帮助使用节点模块,没有了一个真正的需要凉亭或VOLO,除非他们提供的东西给你(一个特定的模块只存在于他们的注册表).
无论瓦罗和鲍尔也很好,但是从我的角度来看,如果你已经在使用NPM,它可能会更好地坚持下去.
请注意,即使不使用browserify或webmake,您也可以使用NPM来管理客户端依赖项.在我正在处理的大多数项目中,在安装npm模块之后,我运行一个脚本将它们部署到我的客户端应用程序使用它们的位置.有时我使用grunt将该文件与其他js文件连接起来,有时我会直接从我的web应用程序的模板文件中引用它.无论如何,这是个人偏好.其他人可以更容易地使用Bower或Volo,因为它们在工作流程中更自然.
whe*_*hys 15
Bower比NPM更大的优势在于它的依赖关系管理强制使用单个版本的组件(而NPM通过将不同的副本/版本作为不同模块的子依赖性来工作).这是非常好的事情,因为它可以防止您的客户端javascript因需要在不同版本中包含组件的多个副本而变得臃肿.包含模块的多个副本是NPM依赖管理如何工作的核心,因此NPM完全不适合客户端包管理.
上述结果是,bower软件包维护者和消费者必须更加注意维护其依赖版本号以避免冲突,但这是值得付出的代价.我发现NPM模块在发布主要版本,次要版本和修补程序版本时往往很草率,因此NPM依赖关系管理也不是一缕玫瑰花.
我知道这不在问题的范围内,但也有另一种选择.Jam JS - http://jamjs.org/有趣的是它在jam中具有强大的功能:
jam compile output.js
Run Code Online (Sandbox Code Playgroud)
有人应该再做一个包经理并命名它:yapm :)
归档时间: |
|
查看次数: |
50520 次 |
最近记录: |