Bower、browserify、requirejs、webpack 之间的区别?

Difference between bower, browserify, requirejs, webpack?

我习惯于使用类似 gulp 的东西将 JS 依赖项连接并缩小为构建过程的一部分的简单和小型 JS 项目,并且 html 中的脚本标记包含该缩小的 JS 文件的硬编码路径。它并不优雅,可能有几个缺点,但从概念上讲它是一种简单的方法。

但是对于更大的项目,我知道看看 bower、browserify、requirejs、webpack 等打包系统是很好的。与我习惯的方式相比,使用它们有什么好处?它帮助开发过程的主要方式是什么?

我提到的这些技术是否相互竞争,或者它们中的一些实现不同的目的并且可以一起使用?它们有什么区别?

我还研究了 webpack,在某些地方描述它好像是 gulp 的替代品。我以为 gulp 是一个构建系统,与这些打包工具不同?

编辑:这些概念与 AMD 或 CommonJS 有什么关系?

Browserify、RequireJS、WebPack 都是模块加载器。 AMD 和 CommonJs 都是模块类型。许多(大多数)javascript 库,例如 JQuery 可以作为模块加载。 Require 已经存在了一段时间,它的 IP 在 DOJO 的基础上。 Browerify 越来越受欢迎主要是因为服务器端 JS(节点)也适用于客户端。

Client side javascript module loaders slant.co。

Bower 是一个包管理器,主要用于安装 Git repos,它也可以 link 到 GULP 或 Grunt 这些前端构建工具,即它们使用 requireJS 优化器来缩小等

你可以比较这三个模块加载器,Bower 不能比较,因为它为你复制的包就差不多了。