转译器(如 babel)何时将 ecmascript6 代码更改为 ecmascript5 代码?

When does a transpiler (like babel) changes ecmascript6 code into ecmascript5 code?

我正在使用 babel、maven、angular 1.5es6。遇到了转译器的概念,将 es6 中编写的代码在内部转换为 es5 代码以实现浏览器的向后兼容。 想知道转译器(如 babel)何时将 ecmascript6 代码更改为 ecmascript5 代码?

我不确定我是否理解你的问题。如果你像这样安装 babel:

npm install -g babel-cli

您可以通过 运行ning:

转译您的代码
babel script.js --out-file script-compiled.js

如果你像这样使用 gulp:

var gulp = require("gulp");
var babel = require("gulp-babel");

gulp.task("default", function () {
    return gulp.src("src/js/*.js")
        .pipe(babel())
        .pipe(gulp.dest("dist/js"));
});

它会转译您的代码并将其保存到 dist/js

如果您愿意,您还可以定义一个 gulp 监视,以便您的代码在保存后立即转译:

var paths = {
  babel: './somedir'
}
gulp.task('babel', function() {
  return gulp.src(paths.babel)
  .pipe(babel())
  .pipe(gulp.dest('./'))
})
gulp.task('watch', function() {
  gulp.watch(paths.babel, ['babel'])
})

如果您运行 gulp watch 任务,它会自动等待文件更改,然后立即转译它们。


编辑(问题澄清后):

一般来说,您应该在发送任何请求之前转译您的 javascript 文件。在每个 http 请求上转换代码当然是可能的,但那将是非常低效的。所以我肯定会建议只转译一次并保存转译后的文件,以便所有客户端都可以使用它们。

当您在服务器上编译代码时。它从 es6 转换为 es5。