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 相关文章推荐
js 浏览本地文件夹系统示例代码
Oct 24 Javascript
JS复制到剪贴板示例代码
Oct 30 Javascript
Javascript学习指南
Dec 01 Javascript
js实现商品抛物线加入购物车特效
Nov 18 Javascript
jquery获取复选框checkbox的值实现方法
May 30 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
Jun 02 Javascript
AngularJS入门教程之控制器详解
Jul 27 Javascript
使用node.js搭建服务器
May 20 Javascript
vue实现留言板todolist功能
Aug 16 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
Jan 21 Javascript
教你完全理解ReentrantLock重入锁
Jun 03 Javascript
JS数组reduce()方法原理及使用技巧解析
Jul 14 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 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
PHPThumb图片处理实例
2014/05/03 PHP
深入理解PHP中的global
2014/08/19 PHP
PHP身份证校验码计算方法
2016/08/10 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
一个tab标签切换效果代码
2009/03/27 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
初步认识JavaScript函数库jQuery
2015/06/18 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
node.js版本管理工具n无效的原理和解决方法
2016/11/24 Javascript
Avalonjs双向数据绑定与监听的实例代码
2017/06/23 Javascript
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
2017/12/14 Javascript
nodejs连接mysql数据库及基本知识点详解
2018/03/20 NodeJs
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
vue中 this.$set的用法详解
2019/09/06 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
JavaScript交换变量常用4种方法解析
2020/09/02 Javascript
[01:20:47]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第一场 1月19日
2021/03/11 DOTA
一步步教你用Python实现2048小游戏
2017/01/19 Python
Python 文件操作的详解及实例
2017/09/18 Python
Python时间和字符串转换操作实例分析
2019/03/16 Python
python儿童学游戏编程知识点总结
2019/06/03 Python
pyqt5 键盘监听按下enter 就登陆的实例
2019/06/25 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
python实现数字炸弹游戏程序
2020/07/17 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
中国跨境海淘网站:考拉海购
2016/08/01 全球购物
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
酒店管理毕业生自荐信
2013/10/24 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
安全施工标语
2014/06/07 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
浅谈redis五大数据结构和使用场景
2021/04/12 Redis