bower、browserify、requirejs和webpack之间的区别是什么?

28

我习惯于简单和小型的JS项目,其中JS依赖项会被连接并压缩为构建过程的一部分,使用gulp之类的工具,而HTML中的script标签包含了指向那个压缩后的JS文件的硬编码路径。这并不优雅,可能有几个缺点,但从概念上讲,这是一种简单的方法。

但对于更大的项目,我了解到应该考虑像bower、browserify、requirejs、webpack等打包系统。与我所熟悉的方式相比,使用它们有什么好处呢?它们如何帮助开发过程?

我提到的这些技术是彼此竞争的,还是有些技术实现不同的目的,可以一起使用?它们之间有什么区别?

另外,我查看了webpack,有些地方描述它好像是gulp的替代品。我认为gulp是一个构建系统,与这些打包工具不同?

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

1个回答

20
Browserify、RequireJS和WebPack都是模块加载器。AMD和CommonJs都是模块的类型。许多(大多数)JavaScript库,如JQuery,都可以作为模块加载。Require已经存在一段时间了,它的IP归DOJO基金会所有。由于服务器端JS(node)也可以在客户端使用,因此Browerify越来越受欢迎。
在slant.co上比较客户端JavaScript模块加载器
Bower是一个软件包管理器,主要用于安装Git仓库,也可以链接到GULP或Grunt等前端构建工具,即它们使用requireJS优化器进行缩小等操作。
你可以比较这三个模块加载器,但Bower不可比较,因为一旦为您复制了软件包,那就基本上完成了。

webpack不仅是模块加载器,还具有其他功能,例如打包器和转译器。 - Sai Ram
赛拉姆,正如您所看到的,我说了require、can minify等,没有说“只有”模块加载器,但它们的主要目的是使您的应用程序模块化。 - fuzzybear

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