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 相关文章推荐
jquery的trigger和triggerHandler的区别示例介绍
Apr 20 Javascript
AngularJS基础学习笔记之简单介绍
May 10 Javascript
Javascript中的getUTCDay()方法使用详解
Jun 10 Javascript
基于Jquery easyui 选中特定的tab
Nov 17 Javascript
js操作cookie保存浏览记录的方法
Dec 25 Javascript
javascript闭包功能与用法实例分析
Apr 06 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
Aug 28 Javascript
vue 里面使用axios 和封装的示例代码
Sep 01 Javascript
基于JavaScript实现报警器提示音效果
Oct 27 Javascript
Vue官方文档梳理之全局配置
Nov 22 Javascript
layui前端框架之table表数据的刷新方法
Aug 17 Javascript
如何基于jQuery实现五角星评分
Sep 02 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
图书管理程序(二)
2006/10/09 PHP
PHP中实现中文字符进制转换原理分析
2011/12/06 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
2015/11/27 PHP
PHP统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
jquery attr 设定src中含有&(宏)符号问题的解决方法
2011/07/26 Javascript
使用原生javascript创建通用表单验证——更锋利的使用dom对象
2011/09/13 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
深入了解javascript中的prototype与继承
2013/04/14 Javascript
JS Date函数整理方便使用
2013/10/23 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
在Vue中使用highCharts绘制3d饼图的方法
2018/02/08 Javascript
浅谈Vue的响应式原理
2019/05/30 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
[04:03]辉夜杯主赛事 12月25日RECAP精彩回顾
2015/12/26 DOTA
Python判断文本中消息重复次数的方法
2016/04/27 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
django js实现部分页面刷新的示例代码
2018/05/28 Python
python实现五子棋小游戏
2020/03/25 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
Python2 与Python3的版本区别实例分析
2020/03/30 Python
Matplotlib自定义坐标轴刻度的实现示例
2020/06/18 Python
HTML5进度条特效
2014/12/18 HTML / CSS
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
static关键字的用法
2013/10/07 面试题
银行个人求职自荐信范文
2013/12/16 职场文书
企业后勤岗位职责
2014/02/28 职场文书
服务标语口号
2014/07/01 职场文书
2014年外联部工作总结
2014/11/17 职场文书
2016年员工政治思想表现评语
2015/12/02 职场文书
MySQL Server层四个日志的实现
2022/03/31 MySQL