node.js中grunt和gulp的区别详解


Posted in Javascript onJuly 17, 2017

node.js中grunt和gulp的区别详解

自nodeJS登上前端舞台,自动化构建变得越来越流行。目前最流行的当属grunt和gulp,这两个光看名字挺像,功能也差不多,不过gulp能在grunt这位大哥如日中天的境况下开辟出自己的一片天地,有着她独到的优点。

  1. 易用 Gulp相比Grunt更简洁,而且遵循代码优于配置策略,维护Gulp更像是写代码。
  2. 高效 Gulp相比Grunt更有设计感,核心设计基于Unix流的概念,通过管道连接,不需要写中间文件。
  3. 高质量 Gulp的每个插件只完成一个功能,这也是Unix的设计原则之一,各个功能通过流进行整合并完成复杂的任务。例如:Grunt的imagemin插件不仅压缩图片,同时还包括缓存功能。他表示,在Gulp中,缓存是另一个插件,可以被别的插件使用,这样就促进了插件的可重用性。目前官方列出的有673个插件。
  4. 易学 Gulp的核心API只有5个,掌握了5个API就学会了Gulp,之后便可以通过管道流组合自己想要的任务。
  5. 使用Grunt的I/O过程中会产生一些中间态的临时文件,一些任务生成临时文件,其它任务可能会基于临时文件再做处理并生成最终的构建后文件。而使用Gulp的优势就是利用流的方式进行文件的处理,通过管道将多个任务和操作连接起来,因此只有一次I/O的过程,流程更清晰,更纯粹。
  6. 代码优于配置 维护Gulp更像是写代码,而且Gulp遵循CommonJS规范,因此跟写Node程序没有差别。

一个简单的Gulpfile.js配置格式

var gulp = require('gulp');
  var jshint = require('gulp-jshint');
  var concat = require('gulp-concat');
  var rename = require('gulp-rename');
  var uglify = require('gulp-uglify');

  // Lint JS
  gulp.task('lint', function() {
  return gulp.src('src/*.js')
    .pipe(jshint())
    .pipe(jshint.reporter('default'));
  });

  // Concat & Minify JS
  gulp.task('minify', function(){
    return gulp.src('src/*.js')
    .pipe(concat('all.js'))
    .pipe(gulp.dest('dist'))
    .pipe(rename('all.min.js'))
    .pipe(uglify())
    .pipe(gulp.dest('dist'));
  });

  // Watch Our Files
  gulp.task('watch', function() {
    gulp.watch('src/*.js', ['lint', 'minify']);
  });

  // Default
  gulp.task('default', ['lint', 'minify', 'watch']);

以上就是node.js中grunt和gulp的区别的讲解,如果大家有疑问请留言或者到本站社区进行讨论交流,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
javascript 贪吃蛇实现代码
Nov 22 Javascript
用tip解决Ext列宽度不够的问题
Dec 13 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
Sep 22 Javascript
JavaScript中利用各种循环进行遍历的方式总结
Nov 10 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
Nov 30 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
Oct 01 Javascript
JavaScript中利用for循环遍历数组
Jan 15 Javascript
JS二叉树的简单实现方法示例
Apr 05 Javascript
小程序日历控件使用方法详解
Dec 29 Javascript
微信小程序mpvue点击按钮获取button值的方法
May 29 Javascript
vue + elementUI实现省市县三级联动的方法示例
Oct 29 Javascript
JS 图片压缩原理与实现方法详解
Apr 29 Javascript
js实现多张图片延迟加载效果
Jul 17 #Javascript
js指定步长实现单方向匀速运动
Jul 17 #Javascript
webpack构建vue项目的详细教程(配置篇)
Jul 17 #Javascript
javascript 跨域问题以及解决办法
Jul 17 #Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
Jul 17 #Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
Jul 17 #Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
Jul 17 #Javascript
You might like
PHP与已存在的Java应用程序集成
2006/10/09 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
自己做的模拟模态对话框实现代码
2012/05/23 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
分享Javascript实用方法二
2015/12/13 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
jQuery实现的超链接提示效果示例【附demo源码下载】
2016/09/09 Javascript
分享javascript、jquery实用代码段
2016/10/20 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
浅谈react前后端同构渲染
2017/09/20 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
Angular4学习笔记router的简单使用
2018/03/30 Javascript
详解如何在vue-cli中使用vuex
2018/08/07 Javascript
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
React性能优化系列之减少props改变的实现方法
2019/01/17 Javascript
使用Python神器对付12306变态验证码
2016/01/05 Python
Python通过命令开启http.server服务器的方法
2017/11/04 Python
python正则实现提取电话功能
2018/02/24 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
python实现UDP协议下的文件传输
2020/03/20 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
10张动图学会python循环与递归问题
2021/02/06 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
vivo智能手机官方商城:vivo
2016/09/22 全球购物
中职生自荐信
2013/10/13 职场文书
采购助理岗位职责
2014/02/16 职场文书
夜不归宿检讨书
2014/02/25 职场文书
法院授权委托书范文
2014/08/02 职场文书
离职证明标准格式
2014/09/15 职场文书
迎国庆横幅标语
2014/10/08 职场文书
泰坦尼克号观后感
2015/06/04 职场文书
水知道答案观后感
2015/06/08 职场文书
如何将numpy二维数组中的np.nan值替换为指定的值
2021/05/14 Python
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript