JavaScript依赖管理:npm vs. bower vs. volo

你如何比较npmbowervolo

所有这三个都可以用来为UI项目安装JavaScript依赖关系。 我知道npm更具节点特定性。

那么,什么时候用什么?

虽然我无法在npmbower-volo之间划出volo ,但npm仍然遥远,但是bowervolo似乎解决了完全相同的问题。


最好描述npm和bower之间区别的描述是:npm管理称为包的JavaScript模块,Bower管理称为组件的前端组件(即css,html和JavaScript)。 npm也用于安装凉亭。 这是一篇关于npm和bower的文章(不包括volo),它涉及到大量的细节。


亭子

尽管它的功能很少,但它仍然在前端开发人员中很受欢迎。 每个前端软件包都在使用它。 还有一个将bower合并到npm的计划。

Bower针对客户端进行了优化,并且仅支持平面依赖树,即每个库只能使用一次(因为向客户端发布不同版本的相同库代价昂贵),并且依赖性约束必须由用户解决。

您可以期望在bower注册表中找到与前端相关的任何内容( bower search <some keyword> ) - 在我看来,这是与其他软件包管理者相比最大的优势。

VOLO

多年来我还没有使用它超过5分钟。 不知道它,但从我可以看到它包含一些构建工具,这是Grunt用户非常熟悉。

NPM

是的,npm代表节点包管理器。 但是现在你可以把它用于一切; 人们不再只是npm install东西,并期望它们只能在Node环境中工作。 例如,Twitter Bootstrap有很多npm包。

Npm针对服务器端使用进行了优化,并带有嵌套的依赖关系树。 每个依赖关系都可以有自己的依赖关系,可以拥有自己的依赖关系,依此类推。 这消除了依赖版本冲突,因为每个依赖可以使用它们自己的版本,例如Underscore。 然而,即将到来的npm版本3将使依赖关系树扁平化:

使用npm @ 3时,您的node_modules目录将更加平坦。 所有的依赖关系和大部分子依赖关系(和(子)+依赖关系)将在顶层彼此相邻。 只有在发生冲突时才会将模块安装在更深层次。 这对于Windows用户来说应该更容易一些。

我看到使用npm的一些优点:

  • 它被所有其他包管理器(组件,bower,volo,JSPM等)使用;
  • 允许使用构建脚本;
  • 许多工具可用于自省基于npm的包
  • npm是JavaScript的包管理器。

    npmjs.com截图


    截至2013年2月,我的观点如下。 请不要再考虑它了。

    NPM

    当您使用Node项目时,坚持使用它会更好,浏览器中也只有很少的项目可供使用......

    亭子

    鲍尔现在是流行音乐人。 他们有很多项目,项目维护人员喜欢将它们保持在注册表中的最新状态......

    可惜他有时候是一辆小马车。

    VOLO

    从那以后,我还没有尝试过超过5分钟的体育比赛,但从我所能看到的看起来,这比篮球更柔韧。

    volo的一个负面点是他们的项目非常过时。


    他们似乎正在解决同样的问题,但对于不同的环境/世界。 用于nodejs和volo的NPM,用于浏览器的bower。

    事实是你可以使用NPM来管理浏览器的javascript和css。 没有什么能阻止你这样做。 从这个意义上讲,使用NPM对我来说比对于同一目的管理两种不同的工具更自然。

    看起来凉亭有更多的包装,至少对于更受欢迎的包装来说。 但很快jQuery也将直接在NPM中可用,并且可能所有其他库都将遵循相同的趋势。

    在我看来,因为有像browserify工具和webmake在那里,在浏览器的帮助使用节点模块,也不再为凉亭VOLO的实际需要,除非他们提供的东西给你(一个特定的模块只存在于他们的注册管理机构)。

    VoloBower都很好,但从我的观点来看,如果您已经使用NPM,那么坚持下去可能会更好。

    请注意, 即使不使用browserify或webmake您也可以使用NPM来管理您的客户端依赖项 。 在我正在开发的大多数项目中,在安装了npm模块之后,我运行脚本将它们部署到我的客户端应用程序使用它们的位置。 有时我使用grunt将该文件与其他js文件连接起来,有时我会直接从我的web应用程序的模板文件中引用它。 无论如何,这是个人偏好。 其他人可以发现Bower或Volo更易于使用,因为它们在工作流程中更加自然。

    链接地址: http://www.djcxy.com/p/18047.html

    上一篇: JavaScript dependency management: npm vs. bower vs. volo

    下一篇: Super in Backbone