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分解url参数(面向对象-极简主义法应用)
Aug 09 Javascript
JS下拉框内容左右移动效果的具体实现
Jul 10 Javascript
不同Jquery版本引发的问题解决
Oct 14 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
Nov 22 Javascript
jquery仿百度经验滑动切换浏览效果
Apr 14 Javascript
Bootstrap的图片轮播示例代码
Aug 31 Javascript
Vue.js学习之过滤器详解
Jan 22 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
Apr 18 Javascript
angular4实现tab栏切换的方法示例
Oct 21 Javascript
node.js实现上传文件功能
Jul 15 Javascript
Vue组件模板及组件互相引用代码实例
Mar 11 Javascript
vue实现锚点定位功能
Jun 29 Vue.js
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
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
php中CI操作多个数据库的代码
2012/07/05 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
JavaScript获取当前页面上的指定对象示例代码
2014/02/28 Javascript
JavaScript中读取和保存文件实例
2014/05/08 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
详解A标签中href=""的几种用法
2017/08/20 Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
2017/11/11 jQuery
用jquery获取select标签中选中的option值及文本的示例
2018/01/25 jQuery
vue webpack实用技巧总结
2018/04/24 Javascript
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
Vue-CLI 3.X 部署项目至生产服务器的方法
2019/03/22 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
12 种使用Vue 的最佳做法
2020/03/30 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
2020/09/11 Javascript
python中去空格函数的用法
2014/08/21 Python
Python 探针的实现原理
2016/04/23 Python
详解使用python的logging模块在stdout输出的两种方法
2017/05/17 Python
Pycharm远程调试原理及具体配置详解
2019/08/08 Python
Python实现打印实心和空心菱形
2019/11/23 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
Python能做什么
2020/06/02 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
化工专业推荐信范文
2013/11/28 职场文书
微电影大赛策划方案
2014/06/05 职场文书
抄袭同学作业检讨书1000字
2014/11/20 职场文书
酒店员工辞职信范文
2015/02/28 职场文书
工地材料员岗位职责
2015/04/11 职场文书
python实现双向链表原理
2022/05/25 Python
python数字图像处理数据类型及颜色空间转换
2022/06/28 Python