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脚本 Node.js 使用入门
Mar 07 Javascript
js获取url中"?"后面的字串方法
May 15 Javascript
js比较日期大小的方法
May 12 Javascript
通过JS获取Request.QueryString()参数的值实现方法
Sep 27 Javascript
使用BootStrap实现悬浮窗口的效果
Dec 13 Javascript
原生JS轮播图插件
Feb 09 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
Feb 13 Javascript
js实现数组内数据的上移和下移的实例
Nov 14 Javascript
JS实现图片旋转动画效果封装与使用示例
Jul 09 Javascript
微信小程序实现弹出菜单
Jul 19 Javascript
微信小程序遍历Echarts图表实现多个饼图
Apr 25 Javascript
layUI实现前端分页和后端分页
Jul 27 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经典的给图片加水印程序
2006/12/06 PHP
php下实现折线图效果的代码
2007/04/28 PHP
php用header函数实现301跳转代码实例
2013/11/25 PHP
zf框架db类的分页示例分享
2014/03/14 PHP
JavaScript 题型问答有答案参考
2010/02/17 Javascript
jQuery温习篇 强大的JQuery选择器
2010/04/24 Javascript
js清理Word格式示例代码
2014/02/13 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
JavaScript将数字转换成大写中文的方法
2015/03/23 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
2015/08/06 Javascript
Bootstrap源码学习笔记之bootstrap进度条
2016/12/24 Javascript
微信小程序 按钮滑动的实现方法
2017/09/27 Javascript
bootstrap Table的一些小操作
2017/11/01 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
js中split()方法得到的数组长度问题
2018/07/19 Javascript
小程序开发踩坑:页面窗口定位(相对于浏览器定位)(推荐)
2019/04/25 Javascript
在vue中阻止浏览器后退的实例
2019/11/06 Javascript
python采用getopt解析命令行输入参数实例
2014/09/30 Python
python字典键值对的添加和遍历方法
2016/09/11 Python
使用Python的Scrapy框架十分钟爬取美女图
2016/12/26 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
2018/12/15 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
python and or用法详解
2019/06/26 Python
python挖矿算力测试程序详解
2019/07/03 Python
纯CSS3实现的阴影效果
2014/12/24 HTML / CSS
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
瑰珀翠美国官网:Crabtree & Evelyn美国
2016/11/29 全球购物
Born鞋子官网:Born Shoes
2017/04/06 全球购物
财务出纳员岗位职责
2013/11/26 职场文书
男方父母婚礼答谢词
2014/01/25 职场文书
《十六年前的回忆》教学反思
2014/02/14 职场文书
四风自我剖析材料
2014/09/30 职场文书
车辆年检委托书范本
2014/10/14 职场文书
优秀小学生事迹材料
2014/12/26 职场文书
离婚上诉状范文
2015/05/23 职场文书
党组织结对共建协议书
2016/03/23 职场文书