Jam与Bower,它们之间有什么区别?

23

有两个客户端Javascript的包管理器,但它们之间有什么区别?有人能解释一下哪一个在哪些方面表现出色吗?


1
还有很多不止两个。例如 https://github.com/component/component 和 npm 等,也经常用于客户端包。简短的回答是,这仍然是一个未解决的领域。 - generalhenry
无论是好是坏,component的网站似乎缺乏信息。 - Evan Carroll
他写了一篇很好的博客文章,解释了背后的思考过程:http://tjholowaychuk.com/post/27984551477/components - generalhenry
@generalhenry,很多人在服务器端使用npm,在客户端使用bower,尽管npm可以用于两者。 - trysis
@chharvey 这个问题对于程序员来说非常不适合 - 它很快就会被投票否决并关闭,参见 http://meta.programmers.stackexchange.com/questions/6483/why-was-my-question-closed-or-down-voted/6490#6490 推荐阅读:**什么适合在Programmers.SE上讨论?Stack Overflow的指南** - gnat
2个回答

20

正如其他评论中提到的,除了Jam和Bower之外,在这个领域还有一些其他选择。

  • Component
  • Ender
  • Volo

这两种工具都旨在为客户端打包资源并管理它们之间的依赖关系。 Jam和Bower似乎都是在2012年首次亮相--分别是在9月和5月。

两者都可以通过node/npm获得,如果你只想解决应用程序中公共库(如backbone、underscore、jquery等)之间的依赖关系,那么任何一个解决方案都可以工作,并允许你控制版本、放置位置以及检查更新等基本选项。

至于区别--Bower比Jam更低级,这使得它更适合更广泛的受众。你可以为不仅仅是JavaScript库创建bower组件。Jam更专注于AMD风格的JavaScript库。在Jam中,你可以在package.json文件中指定你的依赖项,就像你使用npm组件一样,而Bower则按照约定选择了component.json。 Bower的限制在于它只获取你的依赖项,如果你想使用Require.js或其他解决方案,仍然需要构建系统,而Jam已经默认集成了这些功能。Bower得到了Twitter和其他几个项目(Ender、Yeoman)的支持。

如果我说错了,那么Jam的另一个限制是它不允许你创建自己的组件以在私有存储库中分发。这是Bower允许你在.bowerrc中配置为终端节点的东西,但我还没有找到一种在Jam中实现这一点的方法。也许我没有搜索得够好,但至少有一个私有-jam的分支。

其他阅读材料:


3
对于无意间看到这个问题的人,需要注意的是,Bower 正在从 component.json 转换为 bower.json 作为其配置文件。https://groups.google.com/forum/?fromgroups#!topic/twitter-bower/Dcq8G0en1WI - JP Richardson
1
使用 Jam,您可以托管自己的本地存储库 https://github.com/caolan/jam#running-your-own-private-repository-or-mirror - Vijayant Katyal

5
使用下面对一些流行的包管理器的分解,你可以决定在开发中使用什么。它比较了以下因素:
  • 管理器是否使用 package.json 或其他形式的描述文件
  • 支持哪些特性(脚手架、编译、拥有中央仓库)
  • 速度
  • 支持的包的形式(仅 js、js 和 css、js html 和 css)
  • 支持的模块类型
  • 当然也有基于个人观点的一些注释

https://github.com/wilmoore/frontend-packagers


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接