我有一个用ES2015编写的应用程序,我使用babeljs将代码转换为ES5。我有一个包含代码的函数,但该函数被转换为分配给var
的函数表达式。这可能通常会很好,但我的JavaScript代码中有很多包装器,它们将输出babel包装到各种输出中(一个用于将对象加载到窗口上,另一个用于将其包装在角度服务中),以便它可以在许多方面消耗。我可以阻止babeljs将函数转换为本地var吗?
我想它采用了棱角分明,在这里消费是源(ES2015)的示例代码:
function code() {
return {
function1: function1,
function2: function2
}
function function1() {
const foo = "bar"
//..
}
function function2() {
//..
}
}
这transpiles到:
var code = function code() {
return {
function1: function1
function2: function2
};
function function1() {
var foo = "bar";
//..
}
function function2() {
//..
}
}
注意,整个事情是分配给名为code
的var
。
在我的包装,我将它包装在这样的角度服务:
(function() {
angular
.module(angular._MODULE_)
.service('someService', code);
<%- include('../lib/code.js') %>
}());
其中../lib/code.js
是transpiled ES5输出。
这对角度没有好处,因为它无法访问本地变量。
我该如何阻止babel将其分配给var?
Afaik,Babel只有在您将函数声明放入块中时才会这样做。 – Bergi