在 javascript 中我应该在哪些情况下使用转译器?

In which situations should I use a transpiler in javascript?

根据维基百科:

A source-to-source compiler, transcompiler or transpiler is a type of compiler that takes the source code of a program written in one programming language as its input and produces the equivalent source code in another programming language.

但是在哪些情况下软件开发团队应该在构建工作流程中使用转译器?

提前致谢。

当您想使用尚未在所有浏览器中支持的功能时。即:承诺、解构、生成器等

使用 JavaScript 构建应用程序时,您需要两次转译代码的主要原因有两个。

1。您使用的语言不是 JavaScript 但要编译成 Javascript

CoffeeScript or TypeScript 就是这种情况。这些不能在任何平台上直接执行,因此您的代码必须先编译为纯 JavaScript.

至于为什么要使用这些语言。主要是因为它们提供了比 JavaScript 更多的功能,例如类型系统、大量语法糖等

2。您使用的是普通 JavaScript,但使用的是目标平台上不可用的现代语言功能。

例如,假设您想使用 ES6 功能编写代码,但您希望您的客户能够在 IE11 上使用该应用程序。在那种情况下,您将需要一个转译器以行为相同的方式将您的代码转换为纯 ES5。

第二点也与 polyfill 密切相关。但这些不在问题范围内。

回答你的问题:取决于你想做什么,取决于你的团队,我们的项目,你的老板,你的愿景。

对我来说,问题不是“我为什么要使用转译器”,而是“关于我的技能和团队技能,我想使用的最佳技术是什么”。例如,如果你有一个 Ruby 程序,使用 CoffeeScript 更容易(我不太了解 Ruby 世界),如果你有一个巨大的 Java 背景,你应该考虑 GWT or Vaadin

Javascript 是网络“通用语”。如果您想应用 Java 脚本中出现的概念以外的其他概念,或者您想使用另一种语法或范例,您应该使用转换器。

例如:Cappuccino with Objective-J, Google with GWT、CoffeeScript(javascript 的 Rubish 语法)、ES7 类型的 Typescript、Eml(具有 Haskell 语法的函数式编程)、转译的 Babel ES7 到 ES5 等等。

还有隐藏的转译器。 Vue.js,例如 React 或 Flow(Angular 4 使用不隐藏的转译器)。

用一个好的 JIT 编译器编写一个好的解释器比编写一个设计不佳的语言转译器到 Java脚本要困难得多,而且要花费更多的时间,而脚本的性能总是比你的好。 Vala 就是这种情况,它在 C 中进行编译并让 GCC gobject 做最好的工作。

此外,更重要的是会有标准问题。如果您是 Forth 爱好者,您可以在 Forth 中编写您的应用程序,然后将其转换为 ES3 以与地球上所有(普通)浏览器兼容,而无需安装不需要的插件。