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 相关文章推荐
Prototype最新版(1.5 rc2)使用指南(1)
Jan 10 Javascript
javascript 限制输入和粘贴(IE,firefox测试通过)
Nov 14 Javascript
无阻塞加载脚本分析[全]
Jan 20 Javascript
再次分享18个非常棒的jQuery表格插件
Apr 10 Javascript
JavaScript?Apple设备检测示例代码
Nov 15 Javascript
JS Replace 全部替换字符的用法小结
Dec 24 Javascript
jQuery实现下拉框左右选择的简单实例
Feb 22 Javascript
javascript模拟post提交隐藏地址栏的参数
Sep 03 Javascript
jQuery实现底部浮动窗口效果
Sep 07 Javascript
简单几步实现返回顶部效果
Dec 05 Javascript
Vue插件从封装到发布的完整步骤记录
Feb 28 Javascript
Node.js API详解之 dgram模块用法实例分析
Jun 05 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 身份验证方面的函数
2009/10/11 PHP
CI框架中zip类应用示例
2014/06/17 PHP
PHP实现的AES双向加密解密功能示例【128位】
2018/09/03 PHP
PHP实现单例模式建立数据库连接的方法分析
2020/02/11 PHP
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
移动端手指放大缩小插件与js源码
2017/05/22 Javascript
Angular排序实例详解
2017/06/28 Javascript
关于Vue实现组件信息的缓存问题
2017/08/23 Javascript
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
vue+vue-router转场动画的实例代码
2018/09/01 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
python常规方法实现数组的全排列
2015/03/17 Python
python文件操作相关知识点总结整理
2016/02/22 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
Python heapq使用详解及实例代码
2017/01/25 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
2017/09/20 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
python类的实例化问题解决
2019/08/31 Python
pycharm运行scrapy过程图解
2019/11/22 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
在pytorch中实现只让指定变量向后传播梯度
2020/02/29 Python
终于搞懂了Keras中multiloss的对应关系介绍
2020/06/22 Python
python Scrapy框架原理解析
2021/01/04 Python
英国领先的隐形眼镜在线供应商:Lenstore.co.uk
2019/11/24 全球购物
中学自我评价
2014/01/31 职场文书
汽车装潢店创业计划书范文
2014/02/05 职场文书
车队司机个人自我鉴定
2014/04/17 职场文书
一年级小学生评语
2014/04/22 职场文书
三八妇女节趣味活动方案
2014/08/23 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书
小学大队长竞选稿
2015/11/20 职场文书
汉语拼音教学反思
2016/02/22 职场文书
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL
PostgreSQL怎么创建分区表详解
2022/06/25 PostgreSQL