zoukankan      html  css  js  c++  java
  • ES6 初体验 —— gulp+Babel 搭建ES6环境

      ES6已经火了好久了,我却一直没有在项目中尝试过使用ES6写代码,只是写过几个Demo,在大型项目中使用ES6这件事,我一直不太敢做。最近公司要求做一个小的H5活动专题,我想不如就在这个小项目中使用ES6,一方面积累一些经验为大型项目做准备。另一方面小型的活动专题不涉及后期维护,从成本上我并没有冒太大的风险。下面我简单介绍一下我搭建的ES6 环境。

      虽然移动平台是webkit大行其道,并且webkit对ES6支持的还不错,但是我并不打算webkit内核裸跑ES6。我选择了预编译的方案——babel ,我编写的是ES6的代码,但是页面上仍然是ES5的代码。在网上查阅了不少文章结合我现在的开发环境我打算使用gulp-babel这个插件。下面我们一起来看一下:

    需要哪些依赖?

      下面是我的package.json中的devDependencies 属性:

     1 "devDependencies": {
     2     "babel-preset-es2015": "^6.5.0",
     3     "gulp-load-plugins": "^1.1.0",
     4     "gulp-babel": "^6.1.2",
     5     "gulp-plumber": "^1.0.1",
     6     "gulp-rename": "^1.2.2",
     7     "gulp": "^3.9.1",
     8     "gulp-jshint": "^2.0.0",
     9     "gulp-concat": "^2.6.0",
    10     "gulp-uglify": "^1.4.1",
    11     "gulp-util": "^3.0.1"
    12   }

      npm install 后我们就可以看到我们的依赖都安装到了工程文件夹下面。

    怎么配置?

      然后是在gulp中做ES6的配置了gulpfile.js 。 我定义了一个名为“es6”的任务负责将目录src/es6js/   下面所有的js文件通过babel编译成ES5的文件并输出到dist/ztimages  文件夹下面

     1 var gulp = require('gulp'),
     2   concat = require('gulp-concat'),
     3   rename = require('gulp-rename'),
     4   jshint = require('gulp-jshint'),
     5   uglify = require('gulp-uglify');
     6 
     7 
     8 // Load plugins
     9 var $ = require('gulp-load-plugins')();
    10 
    11 /* es6 */
    12 gulp.task('es6', function() {
    13   
    14   return gulp.src('src/es6js/*.js')
    15     .pipe($.plumber())
    16     .pipe($.babel({
    17       presets: ['es2015']
    18     }))
    19     .pipe(gulp.dest('dist/ztimages/'));
    25 });

      我们有了任务,但是怎么执行任务呢? 在命令行工程目录下输入gulp es6 就可以执行这个任务了。但是我们不能每写一行代码就手动“执行”一下。这样也太麻烦了。我们可以配置一个监听任务。

    1 //监听文件修改
    2 gulp.task('watch', ['es6'], function() {
    3   gulp.watch(['src/js/earth.js'], ['es6']);
    4 });

      类似的我们也可以加入LESS的文件监听。

      在命令行工程目录下输入gulp watch就可以执行这个监听任务了。

    总结:

      这样一个简单的ES6环境就搭建好了。当然还有好多其他的方法,我仅仅先介绍一个比较容易上手的方法给大家。

      

      

  • 相关阅读:
    redis 内部数据结构 quicklist
    redis 七种内部数据结构
    魔漫相机
    情绪识别API
    AdressBook通讯录
    单例
    UI控件---UINavigationController导航栏控制器
    UI控件之UIScrollView
    UIScrollViewDelegate协议方法概述
    代理设计模式---传值
  • 原文地址:https://www.cnblogs.com/webARM/p/5305644.html
Copyright © 2011-2022 走看看