》》》》【问题】在使用gulp打包的项目中,引入了一些采用es6语法编写的js文件。致使在一些浏览器中识别不了出错,例如IE和搜狗。html
》》》》【解决】使用babel作了处理。node
一、 cd进入项目下,依次安装:es6
cnpm install gulp --save-dev cnpm install gulp-babel --save-dev cnpm install babel-preset-env --save-dev cnpm install babel-core --save-dev
二、 在gulpfile.js中引入并使用:npm
var gulp = require('gulp'); var babel = require('gulp-babel'); gulp.task('es6', function(){ return gulp.src('src/js/*.js') //将ES6代码转译为可执行的JS代码 .pipe(babel()) .pipe(gulp.dest('dist/static/scripts')) });
三、 新增文件.babelrc的内容以下:json
{ “presets”: [“env”] }
一、 cd进入项目下,而后安装包(语句与上步骤中语句类似,替换包名便可),gulpfile.json中gulp
"gulp": "^3.9.1", "gulp-babel": "^6.1.2", "babel-preset-es2015": "^6.5.0"
二、 而后进入gulpfile.js中使用:浏览器
var gulp = require('gulp'); var babel = require('gulp-babel'); gulp.task('es6', function(){ return gulp.src('src/js/*.js') .pipe(babel({ presets: ['es2015'] })) .pipe(gulp.dest('dist/static/scripts')) });
》》》》【问题】在使用上述方法后,仍然会有错误,显示识别不了Symbol对象。
》》》》【解决】使用babel-polyfillbabel
一、 cd进入项目目录,安装包:ui
cnpm install --save-dev babel-plugin-transform-runtime cnpm install --save-dev babel-polyfill
二、 在gulpfile.js任务中:code
require('babel-polyfill'); //放在第一行; var gulp = require('gulp'); var babel = require('gulp-babel'); gulp.task('es6', function(){ return gulp.src('src/js/*.js') .pipe(babel({ presets: ['es2015'], plugins: ['transform-runtime'] })) .pipe(gulp.dest('dist/static/scripts')) });
三、 可是到这一步我编译后并无任何做用,IE浏览器下一样仍是出现Symbol识别不了。因此在个人index.html主工程文件中须要使用去加载node_modules的babel-polyfill文件。
至此便可解决个人问题。