登录 / 注册
IT168技术开发频道
IT168首页 > 技术开发 > 技术开发评论 > 正文

多角度看构建工具Gulp和Grunt的区别

2017-02-06 09:11    it168网站原创  作者: 田晓旭编译 编辑: 田晓旭

  【IT168 评论】随着前端开发的不断发展,用于构建前端的框架也是层出不穷。到目前为止,广受好评的JavaScript前端框架有两个,分别是Grunt和Gulp,很多人都认为这是两个非常类似的框架,但其实它们的应用程序是有很大区别的。

  作为开发人员,在选择使用平台的时候可能都会有些纠结,尤其是当你不完全熟悉每个应用程序的适用场景和优劣势时。如果你是在Grunt和Gulp之间徘徊不定,那么是完全没必要的,因为它们之间有个两个非常主要的区别:

多角度看构建工具Gulp和Grunt的区别

  1.Grunt专注于配置,而Gulp专注于代码

  2. Grunt是基于内置、常用任务的JavaScript 项目命令行构建工具,而Gulp并不是真的要强制执行任何东西,它主要用于规定社区开发的任务如何相互连接。

  值得注意的是,这并不是说Grunt不能支持社区扩展,恰恰相反,Grunt从一开始就支持创建自定义插件,而且支持几乎所有情况下的插件。但是,它操作任务的性质可能不适合每个程序员,所以尽管它是一个流行的应用程序,但还是有许多程序员不习惯经常使用它。

  Code vs Stream

多角度看构建工具Gulp和Grunt的区别

  刚才也提到了尽管Grunt是个流行应用程序,但是并未俘获程序员的芳心,尤其是追求代码简洁的程序员。这是为什么呢?因为Grunt总是有办法让简单的任务复杂化,Grunt执行的每个任务都是各种插件配置的集合,这些配置都是彼此独立,按序执行的。例如:

多角度看构建工具Gulp和Grunt的区别

  在上面的例子中,'clean'和'concat'必须在“build”任务注册之前配置,这意味着任务中的每一个任务都是彼此独立的。 当涉及到输入输出时,例如文件,每个任务都有对文件的单独访问的权限,并且每个任务都能够独立地打开,编辑和关闭文件。

  每个任务在执行之前必须清楚地说明其来源和目的地,这对于开发人员来说是非常麻烦的,而且在实际运行时,Grunt也会比Gulp慢。

  Gulp是一个基于流的自动化构建工具,通过代码优于配置的策略,Gulp 让简单的任务简单,复杂的任务可管理。利用 Node.js 流的威力,可以快速构建项目并减少频繁的 IO 操作。以上面文件的例子来说,Gulp无需打开、编辑或关闭文件,甚至它在每次使用的时候都会创建中间文件。

多角度看构建工具Gulp和Grunt的区别

  从上面的代码中我们可以看出Gulp是没有前期配置的,尤其是在涉及到源和目的地的时候,一个处理器连接到另一个的方式也非常容易理解,每个插件完美地适合下一个。这主要要归功于插件交换的对象格式Vinyl,Vinyl是一个用来描述文件的简单元数据对象。当你想要使用一个文件时,首先映入脑海的是文件的两个属性:路径和内容。这两个属性就是一个Vinyl对象的主要属性。这里的文件并不一定是指你的文件系统里的文件。你在S3、FTP、Dropbox、Box、CloudThingly.io或者其他服务上的文件,一样可以使用Vinyl来描述。

  流在Gulp中非常重要,因为它们是插件的开发方式。Gulp的插件理念与UNIX相同,它们都是专注于做好一件事,如果你尝试用一个插件做很多事情,它很容易会分割成各种较小的插件。尽量使用多的插件,这样可以把所有复杂的任务都保留在业务编排内,而不是在插件中。

  Developing Extensions

多角度看构建工具Gulp和Grunt的区别

  Gulp和Grunt都有自己独特的扩展方法,为了保证每个构建系统都可以被利用,他们会牺牲一些代码的美观。

  与Gulp相比,Grunt的插件更为丰富,根据社区的结果显示,共计3439个插件,其中49个官方插件,而且除了现成的Grunt插件,还有很多第三方插件,如:CoffeeScript,Handlebars,Jade,JsHint,Less,RequireJS,Sass,Styles。

  而Glup的每个插件都是一个node.js流模块,所以它可以在其它node.js流代码中直接使用。但是需要注意的是,尽管Glup插件很有吸引力,但是如果使用插件实现多任务无疑会增加配置的数量,同时也违背了Glup“专注于做好一件事”的初衷。

  Glup的文件操作基本是异步的,形象的说就是文件内容像是水流,从一个文件流入另一个文件,所以一个Glup任务不一定必须包含一个流水线,它可以组合完成任务。举个例子:

多角度看构建工具Gulp和Grunt的区别

  总的来说,Grunt和Glup各有千秋,Glup易于使用、构建快速、插件高质、易于使用,特别受基于JS构建系统的开发人员的欢迎,目前已经被应用于很多项目中。而Grunt生态系统非常庞大,拥有数量庞大的插件可供选择,因此,你可以利用Grunt自动完成任何事,并且花费最少的代价。如果找不到你所需的插件还可以自己DIY一个。所以在选择时,要结合你的平台需求和工具的优劣势。

标签: 工具
相关文章
  • IT168企业级IT168企业级
  • IT168文库IT168文库

扫码送文库金币

实时热点
编辑推荐
系统架构师大会
系统架构师大会
点击或扫描关注
IT168企业级微信关注送礼
IT168企业级微信关注送礼
扫描关注
首页 评论 返回顶部