Babel主要用来将新版本的javascript(ES6,ES7)编译为ES5,目前它对于新标准的支持程度甚至高于Chrome浏览器。通过引入预设babel-preset-react,babel还能解析jsx语法结构。

其实,原本的babel什么都不会做,babel index.js只是将index.js里的内容输出到控制台。而babel index.js --out-file output.js 则产生一个新文件(如果没有提前创建的话),并把index.js的内容拷贝到output.js中;babel src --out-file dest,则是将src文件夹里的所有文件拷贝到dest下。

为了让babel具备解析功能,需要在工程文件下创建一个名为.babelrc的文件,其中可以指定多个参数,常用的有

{
"presets": ["es2015","react"],
"plugins": "transform-runtime"
}

presets是一组相关的plugins的集合,例如es2015就包含了es2015-arrow-functions/es2015-for-of等插件。

gulp是一个基于nodejs流的自动化构建工具,其API有:gulp.src(),返回所指文件的可读流,并且可以用pipe方法输入到插件进行处理;gulp.dest()返回一个可写流,将上一步的流写入指定文件;gulp.watch(glob,[tasks]),监视glob的内容,当发生变化时,执行[tasks]里的任务;gulp.task("taskname",fn),定义taskname任务,fn为相应的函数。Gulp的任务要放到gulpfile.js里。

gulp和babel一样的是,它本身不会完成什么复杂的事情,其主要功能依靠插件完成。gulp-less可以将less编译为css, gulp-minify-css可以把css压缩,gulp-minify-html压缩html,gulp-babel则可以将ES6的代码编译为ES5。以下是一个简单的将index.js编译为ES5的gulpfile.js:

var gulp = require("gulp")
var babel = require("gulp-babel")
gulp.task("default",function(){
gulp.src("./index.js").pipe(babel({presets:"es2015"})).pipe(gulp.dest("./output.js"))
})

所以babel和gulp的侧重点不同,babel着重于编译,在babel的环境下可以尝试新标准定义的语法;gulp是用来构建项目结构的,使用它的插件,能实现压缩、合并、热更新等。

何为babel / gulp的更多相关文章

  1. ES6项目构建(babel+gulp+webpack)

    (一)基础架构 (二)任务自动化(gulp) (三)编译工具(babel,webpack) (四)代码实现 一.基础构架 1.app : 放置前端代码 css : css文件 js : js文件 cl ...

  2. browserify babel gulp 没有编译import的文件

    1.遇到坑的gulp配置: var gulp = require('gulp'), watch = require('gulp-watch'), babel = require('gulp-babel ...

  3. ES6转换器之Babel

    ES6部分功能没有支持,所以想学习ES6,得先有个转换器,就是将ES6的代码转换为ES5. 我这里用的是Gulp + Bable的形式来将ES6转换为ES5的. 前提: (1).Gulp和Bable都 ...

  4. 使用babel编译es6

    起因:开发中慢慢的学习使用es6,但是JavaScript需要浏览器来解析,而不是所有浏览器都支持es6,所以为了兼容es6,需要第三方工具进行编译es6. 工具:node,gulp,gulp-bab ...

  5. gulp + gulp-better-rollup + rollup 构建 ES6 开发环境

    gulp + gulp-better-rollup + rollup 构建 ES6 开发环境 关于 Gulp 就不过多啰嗦了.常用的 js 模块打包工具主要有 webpack.rollup 和 bro ...

  6. 使用gulp+bebal实现前端自动化es6转es5的构建

    说明:es6语法已经越来越普及,但是一些低版本的浏览器不支持es6的语法特性,所以我们在开发完前端项目后,往往需要统一把前端es6的代码编译成es5的代码.本文介绍的就是如何手动和自动的把es6转成e ...

  7. gulp#4.0

    gitbook教程: https://dragon8github.gitbooks.io/gulp-webpack/content/an-zhuang-gulp-4-0.html gulpfile.j ...

  8. babel初学教程

    babel安装 安装前你需要安装node.js和npm以及gulp三个包. 然后执行以下命令 $ npm init 然后在安装 babel和babel-core两个包 $ npm install -- ...

  9. 《移动Web前端高效开发实战》笔记2——使用Gulp构建一个ECMAScript 6和Sass应用

    8.3.1 安装和配置 运行Gulp需要Node.js环境,请参看第二章内容搭建Node.js环境.使用NPM全局安装Gulp,命令如下: npm install gulp-cli –g 然后,在项目 ...

随机推荐

  1. Linux disk_partition_dev_马士兵_note

    一般装Linux会遇到的问题: 找不到硬件驱动 现在主流的一些硬件 不支持Linux驱动   尽量找主流的硬件,尽量找老一点的硬件   装系统: 1.记下 系统 ---->到时候要找驱动   2 ...

  2. 从jquery源码中看类型判断和数组的一些操作

    在深入看jquery源码中,大家会发现源码写的相当巧妙.那我今天也通过几个源码中用到的技巧来抛砖引玉,希望大家能共同研究源码之精华,不要囫囵吞枣. 1.将类数组转化成数组 我想大家首先想到的方法是fo ...

  3. FreeRadius服务器安装以及error while loading shared libraries问题

    服务器安装过程: 1.       Down from www.freeradius.org 我下载的版本是freeradius-server-2.1.8.tar.gz 2.       tar zx ...

  4. 【java】分页查询实体类

    package com.dmsd.itoo.tool.pageModel; import java.io.Serializable; import java.util.HashMap; import ...

  5. Error 2103 “Unhandled Error in Silverlight Application“ 解决办法

    当调试SilverLight项目时,如果出现如下错误: 当调试页面时出现如下错误: 解决办法为:打开工程属性,在Startup object:处选择相应的启动应用程序.

  6. Hibernate使用

    实现类: public class InfoDAOImpl extends BaseDao<Info> 1.List<Object[]> midlist=super.creat ...

  7. @override的意思

    @Override是Java5的元数据,自动加上去的一个标志,告诉你说下面这个方法是从父类/接口 继承过来的,需要你重写一次,这样就可以方便你阅读,也不怕会忘记 @Override是伪代码,表示重写( ...

  8. Hibernate注解使用以及Spring整合

    Hibernate注解使用以及Spring整合 原文转自:http://wanqiufeng.blog.51cto.com/409430/484739 (1) 简介: 在过去几年里,Hibernate ...

  9. powerdesigner逆向工程,从数据库导出PDM

    本文工具: powerdesigner 15, 数据源oracle 11g 第一步如图,新建一个模型 第二步:选中当前模型 testdb.  然后在菜单栏database->update mod ...

  10. Mybatis 新增修改一条SQL

    如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE:如果不会导致唯一值 ...