我有一個用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