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 getElementsByClassName函数
Apr 01 Javascript
js中判断控件是否存在
Aug 25 Javascript
jquery获得keycode的示例代码
Dec 30 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
Oct 11 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
Sep 07 Javascript
JS随机洗牌算法之数组随机排序
Mar 23 Javascript
javascript运算符——位运算符全面介绍
Jul 14 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
Nov 09 Javascript
让微信小程序支持ES6中Promise特性的方法详解
Jun 13 Javascript
微信小程序 监听手势滑动切换页面实例详解
Jun 15 Javascript
JavaScript如何获取一个元素的样式信息
Jul 29 Javascript
jquery实现弹窗(系统提示框)效果
Dec 10 jQuery
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
重置版战役片段
2020/04/09 魔兽争霸
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
php 计算两个时间戳相隔的时间的函数(小时)
2009/12/18 PHP
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
jQuery textarea的长度进行验证
2009/05/06 Javascript
JQuery 确定css方框模型(盒模型Box Model)
2010/01/22 Javascript
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
validationEngine 表单验证插件使用实例代码
2017/06/15 Javascript
vue better scroll 无法滚动的解决方法
2018/06/07 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
python 多线程实现检测服务器在线情况
2015/11/25 Python
python3.4 将16进制转成字符串的实例
2019/06/12 Python
pandas.DataFrame的pivot()和unstack()实现行转列
2019/07/06 Python
Python3常用内置方法代码实例
2019/11/18 Python
HTML5各种头部meta标签的功能(推荐)
2017/03/13 HTML / CSS
html5 http的轮询和Websocket原理
2018/10/19 HTML / CSS
Expedia马来西亚旅游网站:廉价酒店,度假村和航班预订
2016/07/26 全球购物
Java文件和目录(IO)操作
2014/08/26 面试题
摄影专业毕业生求职信
2014/03/13 职场文书
帮一个朋友写的求职信
2014/08/09 职场文书
资源环境与城乡规划管理专业自荐书
2014/09/26 职场文书
学院党的群众路线教育实践活动整改方案
2014/10/04 职场文书
预备党员群众路线教育实践活动思想汇报2014
2014/10/25 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书
打架检讨书
2015/01/27 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
python3读取文件指定行的三种方法
2021/05/24 Python
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android
Java版 简易五子棋小游戏
2022/05/04 Java/Android