我应该使用ES6传输我的节点js代码吗?

问题描述:

我只使用nodejs作为服务器端微服务,我想使用ES6,我已经读过Babel用于将代码转换为ES5以提供对浏览器的支持。所以我需要知道,如果我不是为客户端编写此代码,我是否仍需要将其编译为在V8引擎上运行它?或者它只是一个额外的层,这将不需要在服务器端?我应该使用ES6传输我的节点js代码吗?

+0

没有使用ES7可能是要走的路。如果两个人都能说英语,你为什么会和邻居说西班牙语? –

+0

如果您使用的是ES模块(即ES6),则仍然需要进行转储。另外,你调用'ES6'的东西可能包含由Babel自然转换但不受Node/V8支持的功能。 – estus

如果您的服务器在新版本的Node.js上工作,并且它支持ES6功能,则不需要传输代码。如果代码托管在一个地方,您的代码只能在同一个地方工作。

使用转译器时,当您的代码使用新版本编写时,可能会有使用旧版本Javascript的浏览器的用户。所以浏览器需要从宿主位置获取JS代码并在本地运行,这可能会导致错误。在这种情况下,你需要使用编译器。

+0

因此,如果我纯粹为服务器端代码使用nodejs,我不需要传输它,我只需要它,如果它在客户端服务的权利?像一个Angular js代码来提供一个UI。 – TGW

+0

是的,你抓住它。简单的JS代码和客户端框架必须经过转换(如果它们不是默认的),因为它们适用于每个用户。每个用户在他/她的浏览器中运行它 –

+0

为什么你在谈论获取JS代码的浏览器?这个问题表明他们不是。 – Quentin

如果您仅将代码作为微服务使用,则不需要进行转发。所有最新版本的Node.js默认支持es6。您可以参考这里的目的ES6特征的详细信息目前由节点

Node.js es6 documentation

你需要使用一个transpiler如果你运行时不支持您所使用的语言功能的支持。

最新版本的Node.js有almost complete support for ES6

如果您使用的功能不受您使用的任何版本的Node.js支持,您将需要使用转译器。

+0

总结:除尾部调用之外的所有内容。 –

+0

是的,但我可以看到没有太多不受支持的功能,并且我相信在服务器端微服务中使用ES5来实现这些功能将更具可行性,而不是具有转译器。你有什么建议? – TGW

+0

@TGW - “but”?这就是我所说的!我不会告诉你,使用这些功能会给您带来多大的收益,而不会使用转换器可以节省多少功夫。这只是你可以做出的判断。 – Quentin

我建议直接在最新的nodejs中使用es es/es7。 现在最新的nodejs几乎支持除导入/导出以外的大多数功能。

如果是这样,你可以使用箭头功能,异步等待等,这可以使你的代码更清晰。