Javascript 我可以阻止babeljs将函数转换为本地变量吗?
我有一个用ES2015编写的应用程序,我正在使用babeljs将代码传输到ES5。我有一个包含代码的函数,但该函数被转换为分配给Javascript 我可以阻止babeljs将函数转换为本地变量吗?,javascript,angularjs,ecmascript-6,babeljs,Javascript,Angularjs,Ecmascript 6,Babeljs,我有一个用ES2015编写的应用程序,我正在使用babeljs将代码传输到ES5。我有一个包含代码的函数,但该函数被转换为分配给var的函数表达式。这通常很好,但我的JavaScript代码中有许多包装器,它们将输出babel包装成各种输出(一个用于将对象加载到窗口,另一个用于将其包装到角度服务中等),这样就可以以多种方式使用它 我试图使用Angular来使用它,下面是源代码(ES2015)的一个示例: 这可转化为: var code = function code() { return {
var
的函数表达式。这通常很好,但我的JavaScript代码中有许多包装器,它们将输出babel包装成各种输出(一个用于将对象加载到窗口,另一个用于将其包装到角度服务中等),这样就可以以多种方式使用它
我试图使用Angular来使用它,下面是源代码(ES2015)的一个示例:
这可转化为:
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
是传输的ES5输出
这对angular没有好处,因为它无法访问本地变量
我怎样才能阻止巴贝尔将其分配给var 你不应该指望吊到巴贝尔不知道的范围内。要么先包装ES6并传输整个脚本,要么只使用
(function () {
<%- include('../lib/code.js') %>
angular
.module(angular._MODULE_)
.service('someService', code);
}());
(函数(){
有棱角的
.模块(角度模块)
.服务(“某些服务”,代码);
}());
相反。Afaik,只有当您将函数声明放在块中时,Babel才会这样做。谢谢,虽然这几乎肯定是正确的,但实际上我有点傻。我在atom中打开了传输文件,我想babel无法输出新文件,因为我正在进行更改。我没有得到任何更新的输出,所以假设我尝试的东西不起作用。更新,这正是我选择的方法,而不是将常量更改为函数,再次感谢:)
(function () {
<%- include('../lib/code.js') %>
angular
.module(angular._MODULE_)
.service('someService', code);
}());