gulp与webpack的区别

常有人拿gulp与webpack来比较,知道这两个构建工具功能上有重叠的地方,可单用,也可一起用,但本质的区别就没有那么清晰。

gulp

gulp强调的是前端开发的工作流程,我们可以通过配置一系列的task,定义task处理的事务(例如文件压缩合并、雪碧图、启动server、版本控制等),然后定义执行顺序,来让gulp执行这些task,从而构建项目的整个前端开发流程。

PS:简单说就一个Task Runner

webpack

webpack是一个前端模块化方案,更侧重模块打包,我们可以把开发中的所有资源(图片、js文件、css文件等)都看成模块,通过loader(加载器)和plugins(插件)对资源进行处理,打包成符合生产环境部署的前端资源。

PS:webpack is a module bundle

相同功能

gulp与webpack可以实现一些相同功能,如下(列举部分):

功能 gulp webpack
文件合并与压缩(css) 使用gulp-minify-css模块

gulp.task(‘sass‘,function(){

gulp.src(cssFiles)

.pipe(sass().on(‘error‘,sass.logError))

.pipe(require(‘gulp-minify-css‘)())

.pipe(gulp.dest(distFolder));

});

样式合并一般用到extract-text-webpack-plugin插件,

压缩则使用webpack.optimize.UglifyJsPlugin。

文件合并与压缩(js) 使用gulp-uglify和gulp-concat两个模块 js合并在模块化开始就已经做,

压缩则使用webpack.optimize.UglifyJsPlugin

sass/less预编译 使用gulp-sass/gulp-less 模块 sass-loader/less-loader 进行预处理
启动server 使用gulp-webserver模块

var webserver =require(‘gulp-webserver‘);

gulp.task(‘webserver‘,function(){

gulp.src(‘./‘)

.pipe(webserver({

host:‘localhost‘,

port:8080,

livereload:true, //自动刷新

directoryListing:{

enable: true,

path:‘./‘

},

}));

});

使用webpack-dev-server模块

module.exports = {

......

devServer: {

contentBase: "build/",

port:8080,

inline: true //实时刷新

}

}

版本控制 使用gulp-rev和gulp-rev-collector两个模块 将生成文件加上hash值

module.exports = {

......

output: {

......

filename: "[name].[hash:8].js"

},

plugins:[

......

new ExtractTextPlugin(style.[hash].css")

]

}

两者区别

虽然都是前端自动化构建工具,但看他们的定位就知道不是对等的。

gulp严格上讲,模块化不是他强调的东西,他旨在规范前端开发流程。

webpack更是明显强调模块化开发,而那些文件压缩合并、预处理等功能,不过是他附带的功能。

总结

gulp应该与grunt比较,而webpack应该与browserify(网上太多资料就这么说,这么说是没有错,不过单单这样一句话并不能让人清晰明了)。

gulp与webpack上是互补的,还是可替换的,取决于你项目的需求。如果只是个vue或react的单页应用,webpack也就够用;如果webpack某些功能使用起来麻烦甚至没有(雪碧图就没有),那就可以结合gulp一起用。

本文为原创文章,转载请保留原出处,方便溯源,如有错误地方,谢谢指正。

本文地址 :http://www.cnblogs.com/lovesong/p/6413546.html      

时间: 2024-11-04 23:23:13

gulp与webpack的区别的相关文章

【简单理解】gulp和webpack的区别

Gulp和Webpack的基本区别: gulp可以进行js,html,css,img的压缩打包,是自动化构建工具,可以将多个js文件或是css压缩成一个文件,并且可以压缩为一行,以此来减少文件体积,加快请求速度和减少请求次数:并且gulp有task定义处理事务,从而构建整体流程,它是基于流的自动化构建工具. Webpack是前端构建工具,实现了模块化开发和文件处理.他的思想就是“万物皆为模块”,它能够将各个模块进行按需加载,不会导致加载了无用或冗余的代码.所以他还有个名字叫前端模块化打包工具.

gulp和webpack的区别,是一种工具吗?

背景: 最近收到很多童鞋的问题:gulp和webpack 什么关系,是一种东西吗?可以只用gulp,不用webpack吗 或者反过来? 基于此问: 我简单归结了一下区别和概念,让需要的同学阅读理解,从而不把时间浪费到这种模糊不清的选择问题上! --------------------------------------------------------------------------------------------------------------------------------

Gulp和Webpack对比

在现在的前端开发中,前后端分离.模块化开发.版本控制.文件合并与压缩.mock数据等等一些原本后端的思想开始逐渐渗透到“大前端”的开发中.前端开发过程越来越繁琐,当今越来越多的网站已经从网页模式进化到了 Webapp 模式.它们运行在现代的高级浏览器里,使用 HTML5. CSS3. ES6 等更新的技术来开发丰富的功能,网页已经不仅仅是完成浏览的基本需求,并且Webapp通常是一个单页面应用(SPA),每一个视图通过异步的方式加载,这导致页面初始化和使用过程中会加载越来越多的 JavaScri

gulp、webpack学习笔记

前言:这两天天学了gulp和webpack的基本使用方法,其实对于这些工具,了解基本的用法.熟悉一些常用配置和方法就足够日常使用了.更复杂的等到需要时才再查相关文档就可以了. gulp和webpack虽然有相似的功能,比如压缩.合并文件,但应该算是两种类型的工具. gulp作为自动化构建工具主要的功能就是自动压缩.css转换.合并资源文件,减少http请求,这些功能对于一般的前端项目而言已经足够使用了.而且使用起来也更加方便, 在gulpfile.js引入组件并创建任务便可以很方便的使用. 而w

[转]基于gulp和webpack的前端工程化

本文样例代码 :https://github.com/demohi/learning-gulp 本文主要简单介绍一下基于gulp和webpack的前端工程化. 技术栈 React.js reFlux Node.js 我们的需求 基于CommonJS模块化开发 基于React.js的组件化开发(JSX) 为保证组件的复用,css需要打包到js中 有国际化需求,静态文件需要部署在CDN上面 工程化工具的选择 gulp(基于stream的构建工具,与grunt相比,速度快且可编程) webpack(前

JavaScript自动化构建工具入门----grunt、gulp、webpack

蛮荒时代的程序员: 做项目的时候,会有大量的js 大量的css   需要合并压缩,大量时间需要用到合并压缩 在前端开发中会出现很多重复性无意义的劳动 自动化时代的程序员: 希望一切都可以自动完成 安装 常用插件.压缩插件.合并插件等.  用插件实现 功能无限扩展 简单介绍三种工具 grunt 是js任务管理工具(自动化构建工具)    -- Grunt官网 戳这里 优势:出来早 社区成熟  插件全 缺点:配置复杂   效率低 (cpu占用率高) -------------------------

前端开发自动化工作流工具:JavaScript自动化构建工具grunt、gulp、webpack介绍

前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为庞大和复杂,代码维护.打包.发布等流程也变得极为繁琐,同时浪费的时间和精力也越来越多,当然人为的错误也随着流程的增加而增加了更多的出错率.致使每一个团队都希望有一种工具,能帮助整个团队在开发中能精简流程.提高效率.减少错误率.随之讨论自动化部署也越来越多,并且国内很多大型团队也都有自己成熟的自动化部

Gulp和Webpack工具的区别

引用知乎的回答:https://www.zhihu.com/question/37020798 怎么解释呢?因为 Gulp 和 browserify / webpack 不是一回事 Gulp应该和Grunt比较,他们的区别我就不说了,说说用处吧.Gulp / Grunt 是一种工具,能够优化前端工作流程.比如自动刷新页面.combo.压缩css.js.编译less等等.简单来说,就是使用Gulp/Grunt,然后配置你需要的插件,就可以把以前需要手工做的事情让它帮你做了. 说到 browseri

对webpack和gulp的理解和区别

webpack是前端构建工具,称为模块打包机,webpack支持模块化:构建前端开发过程中常用的文件,如:js,css,html,img等:使用简单方便,自动化构建.webpack是通过loader(加载器)和plugins(插件)对资源进行处理的. Glup侧重于前端开发的整个过程的控制管理,我们可以通过给glup配置不同的task来让glup实现不同的功能,从而构建整个前端开发流程.(通过gulp中的gulp.task()方法配置,比如server.sass/less预编译.文件的合并压缩等