今天在学ES6,学到ES不定参数和默认参数,发现很好用,完全可以抛弃arguments对象了,arguments是一个类数组对象,虽然有length,而且可以用索引访问各个元素,但是绝大多数开发者也许需要将参数转化成数组,于是一百度,有很多将参数转化成数组的解决方案,但是ES6,直接不定参数就是一个数组。非常好用。突然想起了为什么有了箭头函数,原来是开发者总是绑定this到当前对象,然而箭头函数解决这一个问题。明白了语言和世界的发展是相似的,不过是在原来的基础上解决了一些矛盾,变得更省事省时一些吧。
因此想到,以后多用ES6写东西啊,但是看到了这样一句话:
在服务器端,现在你可以在io.js中使用ES6(在Node中你需要使用--harmony这个命令行选项)。
在浏览器端,到目前为止只有Firefox 27+和Chrome 39+支持了ES6生成器。如果要在web端使用生成器,你需要使用Babel或Traceur来将你的ES6代码转译为Web友好的ES5。
生成器支持的程度都这样了,所以想到用工具将ES6编译成ES5。前一段学了gulp,于是百度了一下用gulp搭建ES6编译成ES5的环境。
第一步:
init 生成package.json文件,一般选择MIT协议。
第二步:
将devDependencies复制一下
"devDependencies": {npm install 安装以上插件
"babel-preset-es2015": "^6.5.0",
"gulp": "^3.9.1",
"gulp-babel": "^6.1.2",
"gulp-concat": "^2.6.0",
"gulp-jshint": "^2.0.2",
"gulp-load-plugins": "^1.1.0",
"gulp-plumber": "^1.0.1",
"gulp-rename": "^1.2.2",
"gulp-uglify": "^1.4.1",
"gulp-util": "^3.0.1",
"jshint": "^2.9.4"
}
第三步:
新建一个gulpfile.js文件
var gulp = require('gulp'),编辑文件,然后执行gulp es6即可完成编译。
concat = require('gulp-concat'),
rename = require('gulp-rename'),
jshint = require('gulp-jshint'),
uglify = require('gulp-uglify');
// Load plugins
var $ = require('gulp-load-plugins')();
/* es6 */
gulp.task('es6', function() {
return gulp.src('src/es6js/*.js')
.pipe($.plumber())
.pipe($.babel({
presets: ['es2015']
}))
.pipe(gulp.dest('dist/'));
});
一个非常简单的ES6环境就搭建好了。
问题描述:
当我gulp es6的时候,提示Cannot find module 'jshint/src/cli
问题原因:
百度之后发现gulp更新了,插件安装不完全,新版本gulp做了一些调整
解决方案:
使用npm install --save-dev jshint gulp-jshint
而不是npm install --save-dev gulp-jshint